85 lines
2.9 KiB
EmacsLisp
85 lines
2.9 KiB
EmacsLisp
;;; init-eglot.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
|
|
:defer t
|
|
;; :ensure nil
|
|
:hook ((css-mode . eglot-ensure)
|
|
(html-mode . eglot-ensure)
|
|
(php-mode . eglot-ensure)
|
|
(rust-mode . eglot-ensure)
|
|
(sh-mode . eglot-ensure))
|
|
:config
|
|
(setq eglot-sync-connect 0)
|
|
;; (add-to-list 'eglot-server-programs '(php-mode . ("intelephense" "--stdio")))
|
|
(add-to-list 'eglot-server-programs '(php-mode . ("phpactor" "language-server" "-vvv")))
|
|
|
|
;; (add-to-list 'eglot-ignored-server-capabilites :hoverProvider)
|
|
;; (add-to-list 'eglot-server-programs '(css-mode . ("vscode-css-language-server" "--stdio")))
|
|
;; (add-to-list 'eglot-server-programs '(html-mode . ("vscode-html-language-server" "--stdio")))
|
|
;; (add-to-list 'eglot-server-programs '(html-mode . ("emmet-ls" "--stdio")))
|
|
;; (add-to-list 'eglot-server-programs '(html-mode . ("emmet-language-server" "--stdio")))
|
|
;; (add-to-list 'eglot-server-programs '(html-mode . (eglot-alternatives
|
|
;; '(("vscode-html-language-server" "--stdio")
|
|
;; ("emmet-language-server" "--stdio")))))
|
|
|
|
;; (add-hook 'eglot--managed-mode-hook (lambda () (flymake-mode -1)))
|
|
)
|
|
|
|
;; Emmet (mientras veo como hacer funcionar emmet-ls)
|
|
(use-package emmet-mode
|
|
:defer t
|
|
:hook
|
|
((html-mode . emmet-mode)
|
|
(web-mode . emmet-mode))
|
|
)
|
|
|
|
;; Revisar por errores en el código
|
|
(use-package flymake
|
|
:defer t
|
|
: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
|
|
:defer t
|
|
:ensure t
|
|
:after flymake
|
|
:hook (flymake-mode . flymake-diagnostic-at-point-mode))
|
|
|
|
(provide 'init-eglot)
|
|
;;; init-eglot.el ends here
|