3693081e32
removed treesit-auto for now. didn't work and wasn't necessary, biggest problem is knowing there's a ts version and fetching it. otherwise, built in major-mode-remap-alist seems to be fine
130 lines
3.8 KiB
EmacsLisp
130 lines
3.8 KiB
EmacsLisp
;; Tree-sitter & LSP tweaks (Core transformative changes)
|
|
|
|
(use-package treesit-fold
|
|
:defer t
|
|
:commands (treesit-fold-close
|
|
treesit-fold-close-all
|
|
treesit-fold-open
|
|
treesit-fold-toggle
|
|
treesit-fold-open-all
|
|
treesit-fold-mode
|
|
global-treesit-fold-mode
|
|
treesit-fold-open-recursively
|
|
treesit-fold-line-comment-mode)
|
|
:custom
|
|
(treesit-fold-line-count-show t)
|
|
(treesit-fold-line-count-format "--▼--")
|
|
:config
|
|
(set-face-attribute 'treesit-fold-replacement-face nil
|
|
:foreground "#808080"
|
|
:box nil
|
|
:weight 'bold)
|
|
)
|
|
|
|
;; Tree-sitter hooks
|
|
(dolist (hook '(c-ts-mode-hook c++-ts-mode-hook java-ts-mode-hook rust-ts-mode-hook go-ts-mode-hook ruby-ts-mode-hook js-ts-mode-hook typescript-ts-mode-hook tsx-ts-mode-hook css-ts-mode-hook html-ts-mode-hook bash-ts-mode-hook cmake-ts-mode-hook dockerfile-ts-mode-hook json-ts-mode-hook toml-ts-mode-hook yaml-ts-mode-hook))
|
|
(add-hook hook #'treesit-fold-mode))
|
|
|
|
(with-eval-after-load 'treesit
|
|
(setq treesit-font-lock-level 4))
|
|
|
|
(use-package mason
|
|
:defer t
|
|
:config
|
|
(mason-setup))
|
|
|
|
|
|
(defvar my/lsp-mode-hooks
|
|
;List of major mode hooks to enable LSP.
|
|
'(c-ts-mode-hook
|
|
c++-ts-mode-hook
|
|
typescript-ts-mode-hook
|
|
js-ts-mode-hook
|
|
tsx-ts-mode-hook
|
|
arduino-mode-hook
|
|
toml-ts-mode-hook
|
|
json-ts-mode-hook
|
|
python-ts-mode-hook)
|
|
)
|
|
|
|
(dolist (hook my/lsp-mode-hooks)
|
|
(add-hook hook #'lsp-deferred))
|
|
|
|
(use-package lsp-mode
|
|
:defer t
|
|
:commands lsp
|
|
:init
|
|
(setq lsp-keymap-prefix "C-l")
|
|
:config
|
|
(add-hook 'lsp-mode-hook #'lsp-enable-which-key-integration)
|
|
(setq lsp-clients-clangd-executable "clangd"
|
|
lsp-clangd-binary-path "/usr/bin/clangd"
|
|
lsp-clients--clangd-default-executable "/usr/bin/clangd"
|
|
lsp-completion-provider :none
|
|
lsp-completion-enable-filtering nil
|
|
lsp-completion-sort-initial-results t
|
|
lsp-clients-clangd-args '("--header-insertion=iwyu"
|
|
"--fallback-style=LLVM"
|
|
"-query-driver=/usr/bin/c++"
|
|
"--header-insertion-decorators")
|
|
|
|
lsp-enable-indentation t
|
|
lsp-enable-on-type-formatting nil
|
|
))
|
|
|
|
(with-eval-after-load 'lsp-mode
|
|
(define-key lsp-command-map (kbd "a") #'lsp-execute-code-action)
|
|
(define-key lsp-command-map (kbd "d") #'lsp-ui-doc-glance)
|
|
(define-key lsp-command-map (kbd "r") #'lsp-rename)
|
|
|
|
;; Safe Capability Filter: Handles both association list (alist) and hash-table formats
|
|
(advice-add 'lsp--client-capabilities :filter-return
|
|
(lambda (caps)
|
|
(cond
|
|
;; If it's a hash table
|
|
((hash-table-p caps)
|
|
(when-let ((text-doc (gethash "textDocument" caps)))
|
|
(if (hash-table-p text-doc)
|
|
(remhash "inlineCompletion" text-doc)
|
|
(setcdr (assoc "inlineCompletion" text-doc) nil))))
|
|
;; If it's an association list (alist)
|
|
((listp caps)
|
|
(when-let ((text-doc (cdr (assoc 'textDocument caps))))
|
|
(setcdr (assoc 'textDocument caps)
|
|
(assq-delete-all 'inlineCompletion text-doc)))))
|
|
caps))
|
|
|
|
;; Set up arduino-mode safely after lsp-mode is loaded
|
|
(add-to-list 'lsp-language-id-configuration '(arduino-mode . "cpp"))
|
|
(lsp-register-client
|
|
(make-lsp-client
|
|
:new-connection (lsp-stdio-connection '("clangd" "--header-insertion=never"))
|
|
:activation-fn (lsp-activate-on "arduino")
|
|
:server-id 'lsp-arduino-clangd
|
|
)))
|
|
|
|
(use-package lsp-ui
|
|
:defer t
|
|
:after lsp-mode
|
|
:commands lsp-ui-mode
|
|
:init
|
|
(setq lsp-ui-sideline-show-symbol t
|
|
lsp-ui-side-show-code-actions t
|
|
lsp-ui-sideline-show-hover t
|
|
|
|
lsp-ui-doc-enable t
|
|
lsp-ui-doc-delay 1
|
|
lsp-ui-doc-position 'at-point
|
|
lsp-ui-sideline-show-hover t
|
|
lsp-ui-sideline-show-diagnostics t
|
|
lsp-ui-side-show-code-actions t
|
|
lsp-ui-sideline-delay 0.25
|
|
|
|
)
|
|
)
|
|
|
|
(with-eval-after-load 'lsp-mode
|
|
(add-to-list 'lsp-disabled-clients 'tailwindcss))
|
|
|
|
(provide 'dev-packages)
|