new and impruved
This commit is contained in:
47
dots/doom/.back.modules/tools/lsp2/config.el
Executable file
47
dots/doom/.back.modules/tools/lsp2/config.el
Executable file
@@ -0,0 +1,47 @@
|
||||
;;; tools/lsp/config.el -*- lexical-binding: t; -*-
|
||||
|
||||
(defvar +lsp-defer-shutdown 3
|
||||
"If non-nil, defer shutdown of LSP servers for this many seconds after last
|
||||
workspace buffer is closed.
|
||||
|
||||
This delay prevents premature server shutdown when a user still intends on
|
||||
working on that project after closing the last buffer, or when programmatically
|
||||
killing and opening many LSP/eglot-powered buffers.")
|
||||
|
||||
|
||||
;;
|
||||
;;; Common
|
||||
|
||||
(defvar +lsp--default-read-process-output-max nil)
|
||||
(defvar +lsp--default-gcmh-high-cons-threshold nil)
|
||||
(defvar +lsp--optimization-init-p nil)
|
||||
|
||||
(define-minor-mode +lsp-optimization-mode
|
||||
"Deploys universal GC and IPC optimizations for `lsp-mode' and `eglot'."
|
||||
:global t
|
||||
:init-value nil
|
||||
(if (not +lsp-optimization-mode)
|
||||
(setq-default read-process-output-max +lsp--default-read-process-output-max
|
||||
gcmh-high-cons-threshold +lsp--default-gcmh-high-cons-threshold
|
||||
+lsp--optimization-init-p nil)
|
||||
;; Only apply these settings once!
|
||||
(unless +lsp--optimization-init-p
|
||||
(setq +lsp--default-read-process-output-max (default-value 'read-process-output-max)
|
||||
+lsp--default-gcmh-high-cons-threshold (default-value 'gcmh-high-cons-threshold))
|
||||
(setq-default read-process-output-max (* 1024 1024))
|
||||
;; REVIEW LSP causes a lot of allocations, with or without the native JSON
|
||||
;; library, so we up the GC threshold to stave off GC-induced
|
||||
;; slowdowns/freezes. Doom uses `gcmh' to enforce its GC strategy,
|
||||
;; so we modify its variables rather than `gc-cons-threshold'
|
||||
;; directly.
|
||||
(setq-default gcmh-high-cons-threshold (* 2 +lsp--default-gcmh-high-cons-threshold))
|
||||
(gcmh-set-high-threshold)
|
||||
(setq +lsp--optimization-init-p t))))
|
||||
|
||||
|
||||
;;
|
||||
;;; Implementations
|
||||
|
||||
(if (modulep! +eglot)
|
||||
(load! "+eglot")
|
||||
(load! "+lsp"))
|
||||
Reference in New Issue
Block a user