52 lines
1.4 KiB
EmacsLisp
52 lines
1.4 KiB
EmacsLisp
(push (concat user-emacs-directory "cnf/lang") load-path)
|
|
(push '("\\.py\\'" . (lambda () (require 'l-python) (python-mode))) auto-mode-alist)
|
|
;; LSP: language server in emacs
|
|
;; Currently I switched over to eglot
|
|
;; Pro/Contra eglot vs. lsp-mode
|
|
;; Pros:
|
|
;; - Eglot is part of Emacs core since 29
|
|
;; - Eglot seems to be a bit faster/leaner (There's `emacs-lsp-booster` for lsp-mode)
|
|
;; Cons:
|
|
;; - Eglot does not support multiple LSP servers **per buffer** (e.g. jedi + ruffe, html + js + tailwind)
|
|
;; (There is a multiplexer for Eglot `lspx`)
|
|
;; - Eglot does no support smth. like DAP mode
|
|
|
|
;; Keybindings
|
|
;; (general-def :states '(normal visual) :keymaps 'eglot-mode-map
|
|
;; "SPC =" 'eglot-format
|
|
;; "=" 'eglot-format)
|
|
|
|
;; LSP-MODE
|
|
(straight-use-package 'lsp-mode)
|
|
|
|
;; COMPANY: autocompletion
|
|
(straight-use-package 'company)
|
|
(setq company-idle-delay 0.0
|
|
company-tooltip-limit 5
|
|
company-minimum-prefix-length 1
|
|
company-echo-delay 0
|
|
company-auto-complete nil)
|
|
(add-hook 'prog-mode-hook 'company-mode)
|
|
|
|
(straight-use-package 'lsp-mode)
|
|
|
|
;; Keybindings
|
|
(defun my/keymap-company ()
|
|
(interactive)
|
|
(general-def
|
|
:keymaps 'company-active-map
|
|
"<tab>" 'company-complete-selection
|
|
"<return>" nil
|
|
"RET" nil))
|
|
|
|
(general-def
|
|
:states '(normal insert)
|
|
:keymaps 'company-mode-map
|
|
"C-<return>" 'company-search-candidates
|
|
"C-." 'company-search-candidates)
|
|
|
|
(add-hook 'company-mode-hook 'my/keymap-company)
|
|
|
|
|
|
(provide 'programming)
|