Lot of optimisation, replace eglot with lsp-mode
This commit is contained in:
@@ -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)
|
||||
|
||||
Reference in New Issue
Block a user