From 3e14b563a7b1abb827543de06be4c2025a64361c Mon Sep 17 00:00:00 2001 From: Charlotte Van Petegem Date: Thu, 10 Aug 2023 13:06:20 +0200 Subject: [PATCH] emacs: Configure vue-language-server in vue-mode --- modules/development/default.nix | 22 ++++++++++++++++++++-- 1 file changed, 20 insertions(+), 2 deletions(-) diff --git a/modules/development/default.nix b/modules/development/default.nix index 83930b86..c2ae2697 100644 --- a/modules/development/default.nix +++ b/modules/development/default.nix @@ -1,4 +1,4 @@ -{ config, lib, ... }: +{ config, lib, pkgs, ... }: { imports = [ @@ -33,9 +33,10 @@ ;; Language server support (use-package eglot + :demand t :general (lmap - :keymaps 'prog-mode-map + :keymaps '(prog-mode-map vue-mode-map) "SPC s" '(eglot :which-key "Add buffer to eglot") "SPC f" '(eglot-format :which-key "Format region") "SPC F" '(eglot-format :which-key "Format buffer") @@ -110,6 +111,23 @@ ;; Vue language support (use-package vue-mode :mode "\\.vue\\'" + :config + (defun vue-eglot-init-options () + (let ((tsdk-path "${pkgs.typescript}/lib/node_modules/typescript/lib")) + `(:typescript (:tsdk ,tsdk-path + :languageFeatures (:completion + (:defaultTagNameCase "kebab" + :defaultAttrNameCase "kebab" + :getDocumentNameCasesRequest nil + :getDocumentSelectionRequest nil) + :diagnostics + (:getDocumentVersionRequest nil)) + :documentFeatures (:documentFormatting + (:defaultPrintWidth 100 + :getDocumentPrintWidthRequest nil) + :documentSymbol t + :documentColor t))))) + (add-to-list 'eglot-server-programs `(vue-mode . ("${pkgs.nodePackages.volar}/bin/vue-language-server" "--stdio" :initializationOptions ,(vue-eglot-init-options)))) ) ;; HTML (and HTML template) support