Lot of optimisation, replace eglot with lsp-mode

This commit is contained in:
Zelong Kuang
2026-03-30 11:49:18 +11:00
parent e1374b0e88
commit a3468b833e
24 changed files with 311 additions and 179 deletions

View File

@@ -214,7 +214,7 @@ the element after the #+HEADER: tag."
(yas-activate-extra-mode 'LaTeX-mode)))
(use-package org-latex-preview
:ensure nil
:straight nil
:hook (org-mode . org-latex-preview-mode)
:hook (org-latex-preview-mode . org-latex-preview-center-mode)
:config
@@ -327,4 +327,40 @@ the element after the #+HEADER: tag."
:config
(use-package djvu))
;; Enable lsp in org-babel
(cl-defmacro lsp-org-babel-enable (lang)
"Support LANG in org source code block."
(cl-check-type lang string)
(let* ((edit-pre (intern (format "org-babel-edit-prep:%s" lang)))
(intern-pre (intern (format "lsp--%s" (symbol-name edit-pre)))))
`(progn
(defun ,intern-pre (info)
(setq buffer-file-name (or (->> info caddr (alist-get :file))
"org-src-babel.tmp"))
(when (fboundp 'lsp-deferred)
;; Avoid headerline conflicts
(setq-local lsp-headerline-breadcrumb-enable nil)
(lsp-deferred)
(_
(user-error "LSP:: invalid type"))))
(put ',intern-pre 'function-documentation
(format "Enable lsp-mode in the buffer of org source block (%s)."
(upcase ,lang)))
(if (fboundp ',edit-pre)
(advice-add ',edit-pre :after ',intern-pre)
(progn
(defun ,edit-pre (info)
(,intern-pre info))
(put ',edit-pre 'function-documentation
(format "Prepare local buffer environment for org source block (%s)."
(upcase ,lang))))))))
(defconst org-babel-lang-list
'("go" "python" "ipython" "ruby" "js" "css" "sass" "c" "rust" "java" "cpp" "c++" "shell")
"The supported programming languages for interactive Babel.")
(dolist (lang org-babel-lang-list)
(eval `(lsp-org-babel-enable ,lang)))
(provide 'init-org)