aboutsummaryrefslogtreecommitdiff
path: root/home-manager/homeModules
diff options
context:
space:
mode:
authorspl3g <spleefer6@yandex.ru>2024-11-17 13:34:01 +0300
committerspl3g <spleefer6@yandex.ru>2025-05-01 14:58:56 +0300
commit16778968a9ab69591402b5240cd67dc16626d5b1 (patch)
treefaf3bc540c864392e08920cd9ff8202062a5a3b8 /home-manager/homeModules
parentd2bf7901cc2058e9315f9a1d0574634803e8c2d1 (diff)
feat: make the vue parameters a hook
so if eglot is initialized not in the vue project, everything will still work
Diffstat (limited to 'home-manager/homeModules')
-rw-r--r--home-manager/homeModules/emacs/config.org93
1 files changed, 47 insertions, 46 deletions
diff --git a/home-manager/homeModules/emacs/config.org b/home-manager/homeModules/emacs/config.org
index 14ba0b1..e65d193 100644
--- a/home-manager/homeModules/emacs/config.org
+++ b/home-manager/homeModules/emacs/config.org
@@ -1028,52 +1028,53 @@ Better query replace
#+end_src
*** Web
#+begin_src emacs-lisp
- (use-package web-mode
- :mode
- ("\\.html\\'"
- "\\.phtml\\'"
- "\\.tpl\\.php\\'"
- "\\.[agj]sp\\'"
- "\\.as[cp]x\\'"
- "\\.erb\\'"
- "\\.mustache\\'"
- "\\.djhtml\\'")
- :hook
- (eb-mode . (lambda () (electric-pair-local-mode -1)))
- :custom
- (web-mode-markup-indent-offset tab-width)
- (web-mode-css-indent-offset tab-width)
- (web-mode-code-indent-offset tab-width)
- (web-mode-script-padding tab-width)
- (web-mode-style-padding tab-width)
-
- :init
- ;; Vue mode
- (define-derived-mode vue-mode web-mode "Vue")
- (add-to-list 'auto-mode-alist '("\\.vue\\'" . vue-mode))
-
- (with-eval-after-load 'eglot
- (defun vue-eglot-init-options ()
- "Set SDK path and default options."
- (let ((tsdk-path (expand-file-name
- "lib/node_modules/typescript/lib/"
- (shell-command-to-string
- (string-join '("nix-store --query --references $(which vue-language-server)"
- "xargs -n1 nix-store -q --referrers"
- "grep typescript"
- "grep -v language"
- "sort -u"
- "tr -d '\n'")
- " | ")))))
- `( :typescript ( :tsdk ,tsdk-path)
- :vue ( :hybridMode :json-false))))
-
- (add-to-list 'eglot-server-programs
- `(vue-mode . ("vue-language-server" "--stdio" :initializationOptions ,(vue-eglot-init-options))))))
-
-
- ;; (use-package emmet-mode
- ;; :ghook 'web-mode)
+ (use-package web-mode
+ :mode
+ ("\\.html\\'"
+ "\\.phtml\\'"
+ "\\.tpl\\.php\\'"
+ "\\.[agj]sp\\'"
+ "\\.as[cp]x\\'"
+ "\\.erb\\'"
+ "\\.mustache\\'"
+ "\\.djhtml\\'")
+ :hook
+ (eb-mode . (lambda () (electric-pair-local-mode -1)))
+ :custom
+ (web-mode-markup-indent-offset tab-width)
+ (web-mode-css-indent-offset tab-width)
+ (web-mode-code-indent-offset tab-width)
+ (web-mode-script-padding tab-width)
+ (web-mode-style-padding tab-width)
+
+ :init
+ ;; Vue mode
+ (define-derived-mode vue-mode web-mode "Vue")
+ (add-to-list 'auto-mode-alist '("\\.vue\\'" . vue-mode))
+
+ (add-hook 'vue-mode-hook (lambda () (with-eval-after-load 'eglot
+ (defun vue-eglot-init-options ()
+ "Set SDK path and default options."
+ (let ((tsdk-path (expand-file-name
+ "lib/node_modules/typescript/lib/"
+ (shell-command-to-string
+ (string-join '("nix-store --query --references $(which vue-language-server)"
+ "xargs -n1 nix-store -q --referrers"
+ "grep typescript"
+ "grep -v language"
+ "sort -u"
+ "tr -d '\n'")
+ " | ")))))
+ `( :typescript (:tsdk ,tsdk-path)
+ :vue (:hybridMode :json-false))))
+
+ (when (not (alist-get 'vue-mode eglot-server-programs))
+ (add-to-list 'eglot-server-programs
+ `(vue-mode . ("vue-language-server" "--stdio" :initializationOptions ,(vue-eglot-init-options)))))))))
+
+
+ ;; (use-package emmet-mode
+ ;; :ghook 'web-mode)
#+end_src
*** TypeScript
#+begin_src emacs-lisp