Big re-write :)
I reordered the code in a more clean an organized way. Also this improves a lot the emacs startup time again, bucause after some updates it becomes a bit slow with the old configuration, so i did it again in a new way.
This commit is contained in:
102
configs/init-lsp.el
Normal file
102
configs/init-lsp.el
Normal file
@ -0,0 +1,102 @@
|
||||
;;; init-lsp.el --- Configuración de eglot (LSP) -*- lexical-binding: t -*-
|
||||
|
||||
;; Author: kj <webmaster@outcontrol.net>
|
||||
;; URL: https://git.kj2.me/kj/confi-emacs-actual
|
||||
|
||||
;;; Commentary:
|
||||
|
||||
;; Este archivo tiene todo lo relacionado con eglot.
|
||||
;; Eglot es un cliente LSP para Emacs que desde la
|
||||
;; versión 29 viene integrado dentro del mismo.
|
||||
;;
|
||||
;; El nombre Eglot es un apócope de "Emacs polyglot"
|
||||
;; ya que con este cliente podemos añadir soporte para
|
||||
;; muchísimos lenguajes, puesto que actualente el que
|
||||
;; un lenguaje tenga su propio LSP es muy normal.
|
||||
;;
|
||||
;; Como añadido:
|
||||
;;
|
||||
;; Un Languaje Server Provider (LSP), es un protocolo
|
||||
;; mediante el cual existen servidores para lenguajes
|
||||
;; en específico, los cuales proveen cosas como el
|
||||
;; autocompletado, linting, documentación, ir a la
|
||||
;; definición, etc.
|
||||
;;
|
||||
;; Este protocolo viene a solucionar el problema de
|
||||
;; que cada herramienta de programación tenga que
|
||||
;; volver a crear su propio soporte para cada uno
|
||||
;; de los lenguajes (DRY).
|
||||
|
||||
;;; Code:
|
||||
|
||||
(use-package eglot
|
||||
:ensure nil
|
||||
:hook ((prog-mode . (lambda ()
|
||||
(unless (derived-mode-p
|
||||
'emacs-lisp-mode 'lisp-mode
|
||||
'makefile-mode 'snippet-mode
|
||||
'ron-mode)
|
||||
(eglot-ensure))))
|
||||
((markdown-mode yaml-mode yaml-ts-mode) . eglot-ensure))
|
||||
:init
|
||||
(setq read-process-output-max (* 1024 1024)) ; 1MB
|
||||
(setq eglot-autoshutdown t
|
||||
eglot-events-buffer-size 0
|
||||
eglot-send-changes-idle-time 0.5)
|
||||
:config
|
||||
(setq eglot-sync-connect 0)
|
||||
;; (add-to-list 'eglot-server-programs '(php-mode . ("intelephense" "--stdio")))
|
||||
|
||||
(add-to-list 'eglot-server-programs
|
||||
'((tsx-ts-mode
|
||||
;; js-ts-mode
|
||||
;; js-mode
|
||||
typescript-ts-mode
|
||||
typescript-mode)
|
||||
.
|
||||
(eglot-deno "deno" "lsp")))
|
||||
|
||||
(defclass eglot-deno (eglot-lsp-server) ()
|
||||
:documentation "A custom class for deno lsp.")
|
||||
|
||||
(cl-defmethod eglot-initialization-options ((server eglot-deno))
|
||||
"Passes through required deno initialization options"
|
||||
(list :enable t
|
||||
:lint t))
|
||||
)
|
||||
|
||||
;; Mejorar la velocidad de eglot (un binario en rust )
|
||||
(use-package eglot-booster
|
||||
:ensure (:host github :repo "jdtsmith/eglot-booster")
|
||||
:after eglot
|
||||
:config
|
||||
;;
|
||||
(if (executable-find "emacs-lsp-booster")
|
||||
(eglot-booster-mode)
|
||||
(message "No está instalado emacs-lsp-booster. Eglot se usará de modo normal."))
|
||||
)
|
||||
|
||||
;; Emmet (mientras veo como hacer funcionar emmet-ls)
|
||||
(use-package emmet-mode
|
||||
:hook
|
||||
((html-mode . emmet-mode)
|
||||
(web-mode . emmet-mode))
|
||||
)
|
||||
|
||||
;; Revisar por errores en el código
|
||||
(use-package flymake
|
||||
:ensure nil
|
||||
:hook (prog-mode . (lambda ()
|
||||
(unless (derived-mode-p 'makefile-mode)
|
||||
(flymake-mode))))
|
||||
:config
|
||||
(remove-hook 'flymake-diagnostic-functions 'flymake-proc-legacy-flymake)
|
||||
)
|
||||
|
||||
;; Mostar los errores de flymake en un popup-tip
|
||||
(use-package flymake-diagnostic-at-point
|
||||
:after flymake
|
||||
:hook (flymake-mode . flymake-diagnostic-at-point-mode))
|
||||
|
||||
(provide 'init-lsp)
|
||||
;;; init-lsp.el ends here
|
Reference in New Issue
Block a user