;;; init-eglot.el --- Configuración de eglot (LSP) -*- lexical-binding: t -*- ;; Author: kj ;; 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 :straight (:type built-in) :hook ((css-mode . eglot-ensure) (html-mode . eglot-ensure) (php-mode . eglot-ensure) (rust-mode . eglot-ensure) (sh-mode . eglot-ensure)) :config ;; (add-to-list 'eglot-server-programs '(php-mode . ("intelephense" "--stdio"))) (add-to-list 'eglot-server-programs '(php-mode . ("phpactor" "language-server" "-vvv"))) (setq eglot-stay-out-of '(company)) ;; (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-hook 'eglot--managed-mode-hook (lambda () (flymake-mode -1))) ) ;; Emmet (mientras veo como hacer funcionar emmet-ls) (use-package emmet-mode :defer t :straight t :hook ((html-mode . emmet-mode) (web-mode . emmet-mode)) ) ;; Revisar por errores en el código (use-package flymake :defer t :straight (:type built-in) :hook (prog-mode . (lambda () (unless (derived-mode-p 'makefile-mode) (flymake-mode)))) ) ;; Mostar los errores de flymake en un popup-tip (use-package flymake-diagnostic-at-point :defer t :straight t :after flymake :hook (flymake-mode . flymake-diagnostic-at-point-mode)) ;; Mostrar eldoc en un popup ;; (use-package eldoc-box ;; :defer t ;; :straight t ;; :hook (eldoc-mode-hook . eldoc-box-hover-at-point-mode )) (provide 'init-eglot) ;;; init-eglot.el ends here