reddit / emacs

LSP is reinstalled unexpectedly

EmilySeville7cfg · 2022-08-24 07:09
Here is my `~/.emacs` for Emacs 28.1: ;;; .emacs --- My custom .emacs config. ;;; Commentary: ;;; Installs different packages for code linting and formatting to enable user feel Emacs like an IDE. ;;; Code: (require 'package) (require 'lsp-mode) (add-to-list 'package-archives '("melpa" . "https://melpa.org/packages/") t) (defvar emacs-themes '(soft-stone-theme) "Themes installed as packages.") (defvar emacs-linters '(flycheck json-mode yaml-mode markdown-mode) "Code linters installed as packages.") (defvar emacs-language-servers '(lsp-mode lsp-pyright lsp-java) "Language servers installed as packages.") (defvar emacs-formatters '(format-all) "Code formatters installed as packages.") (defvar emacs-other '(company) "Other packages installed as packages.") (defvar emacs-packages (append emacs-themes emacs-linters emacs-language-servers emacs-formatters emacs-other)) (dolist (package emacs-packages) (package-install package)) (setq emacs-language-servers '(bash-ls csharp-ls)) (dolist (server emacs-language-servers) (lsp-install-server nil server)) ; Reinstallation occures even when UPDATE? is nil (defvar bookmark-save-flag 1) (load-theme 'soft-stone t) (add-hook 'prog-mode-hook #'flycheck-mode) (add-hook 'prog-mode-hook #'company-mode) (add-hook 'prog-mode-hook #'format-all-mode) (defvar emacs-hooks '(shell-mode-hook python-mode-hook java-mode-hook csharp-mode-hook c++-mode-hook)) (dolist (hook emacs-hooks) (add-hook hook #'lsp)) (defvar format-all-formatters '(("JSON" prettier) ("YAML" prettier) ("Shell" shfmt) ("Python" black) ("Java" clang-format) ("C#" clang-format))) (custom-set-variables ;; custom-set-variables was added by Custom. ;; If you edit it by hand, you could mess it up, so be careful. ;; Your init file should contain only one such instance. ;; If there is more than one, they won't work right. '(display-line-numbers 'relative) '(package-selected-packages '(lsp-java csharp-mode company lsp-pyright lsp-mode format-all yaml-mode json-mode markdown-mode flycheck soft-stone-theme))) (custom-set-faces ;; custom-set-faces was added by Custom. ;; If you edit it by hand, you could mess it up, so be careful. ;; Your init file should contain only one such instance. ;; If there is more than one, they won't work right. ) (provide '.emacs) ;;; .emacs ends here When I open any file Emacs shows message for csharp-ls LSP even I told it not to reinstall (`(lsp-install-server nil server)`) LSP: https://preview.redd.it/3ot9sefc2mj91.png?width=1920&format=png&auto=webp&s=871274be8851e95b344f85d3e88454864ef1002f How to fix it? P.S. Please write any thoughts how to enhance config if you have anything to suggest. ;)
flexibeast · 2022-08-24 10:04
Hmm, could it be due to `csharp-ls` being included in this line? (setq emacs-language-servers '(bash-ls csharp-ls))
EmilySeville7cfg · 2022-08-24 10:19
I want to install these two LSP severs just once. My *lsp-log* is: ``` Command "/usr/local/bin/bash-language-server start" is present on the path. ``` I don't know why this message is printed just for bash LSP. (Is it normal?) Anyway take a look to [this](https://github.com/emacs-lsp/lsp-mode/issues/3692) issue.
EmilySeville7cfg · 2022-08-25 12:19
Working code: ``` (dolist (server emacs-language-servers) (lsp-ensure-server server)) ``` Not working code (but documentation doesn't describe how to use this function clearly): ``` (dolist (server emacs-language-servers) (if (not (lsp-ensure-server server)) (lsp-install-server nil server))) ```