Emacs From Scratch #8 - Build Your Own IDE with lsp-mode
- Add language server protocol mode - Remove leader key "toggles" since comment was replaced with evil-nerd-commenter
This commit is contained in:
68
README.org
68
README.org
@@ -114,8 +114,8 @@ Setup FiraCode and Cantarell fonts with specified size.
|
|||||||
:global-prefix "C-SPC")
|
:global-prefix "C-SPC")
|
||||||
|
|
||||||
(sb/leader-keys
|
(sb/leader-keys
|
||||||
"t" '(:ignore t :which-key "toggles")
|
;; "t" '(:ignore t :which-key "toggles")
|
||||||
"tc" '(comment-line :which-key "toggle comment")
|
;; "tc" '(comment-line :which-key "toggle comment")
|
||||||
"s" '(:ignore s :which-key "settings")))
|
"s" '(:ignore s :which-key "settings")))
|
||||||
|
|
||||||
(general-define-key
|
(general-define-key
|
||||||
@@ -498,6 +498,70 @@ Automatically tangle code blocks in file everytime it is saved.
|
|||||||
|
|
||||||
* Development
|
* Development
|
||||||
|
|
||||||
|
** Commenting
|
||||||
|
|
||||||
|
#+begin_src emacs-lisp
|
||||||
|
(use-package evil-nerd-commenter
|
||||||
|
:bind ("M-/" . evilnc-comment-or-uncomment-lines))
|
||||||
|
#+end_src
|
||||||
|
|
||||||
|
** Languages
|
||||||
|
|
||||||
|
*** Language Servers
|
||||||
|
|
||||||
|
#+begin_src emacs-lisp
|
||||||
|
(defun sb/lsp-mode-setup ()
|
||||||
|
(setq lsp-headerline-breadcrumb-segments '(path-up-to-project file symbols))
|
||||||
|
(lsp-headerline-breadcrumb-mode))
|
||||||
|
|
||||||
|
(use-package lsp-mode
|
||||||
|
:commands (lsp lsp-deferred)
|
||||||
|
:hook (lsp-mode . sb/lsp-mode-setup)
|
||||||
|
:init
|
||||||
|
(setq lsp-keymap-prefix "C-c l") ;; Or 'C-l', 's-l'
|
||||||
|
:config
|
||||||
|
(lsp-enable-which-key-integration t))
|
||||||
|
|
||||||
|
(use-package lsp-ui
|
||||||
|
:hook (lsp-mode . lsp-ui-mode)
|
||||||
|
:custom
|
||||||
|
(lsp-ui-doc-position 'bottom))
|
||||||
|
|
||||||
|
(use-package lsp-treemacs
|
||||||
|
:after lsp)
|
||||||
|
|
||||||
|
(use-package lsp-ivy)
|
||||||
|
#+end_src
|
||||||
|
|
||||||
|
# *** TypeScript
|
||||||
|
|
||||||
|
# #+begin_src emacs-lisp
|
||||||
|
# (use-package typescript-mode
|
||||||
|
# :mode "\\.tx\\'"
|
||||||
|
# :hook (typescript-mode .lsp-deferred)
|
||||||
|
# :config
|
||||||
|
# (setq typescript-indent-level 2))
|
||||||
|
# #+end_src
|
||||||
|
|
||||||
|
*** Company Mode
|
||||||
|
|
||||||
|
#+begin_src emacs-lisp
|
||||||
|
(use-package company
|
||||||
|
:after lsp-mode
|
||||||
|
:hook (lsp-mode . company-mode)
|
||||||
|
:bind
|
||||||
|
(:map company-active-map
|
||||||
|
("<tab>" . company-complete-selection))
|
||||||
|
(:map lsp-mode-map
|
||||||
|
("<tab>" . company-indent-or-complete-common))
|
||||||
|
:custom
|
||||||
|
(company-minimum-prefix-length 1)
|
||||||
|
(company-idle-delay 0.0))
|
||||||
|
|
||||||
|
(use-package company-box
|
||||||
|
:hook (company-mode . company-box-mode))
|
||||||
|
#+end_src
|
||||||
|
|
||||||
** Projectile
|
** Projectile
|
||||||
#+begin_src emacs-lisp
|
#+begin_src emacs-lisp
|
||||||
;; Projectile
|
;; Projectile
|
||||||
|
44
init.el
44
init.el
@@ -62,8 +62,8 @@
|
|||||||
:global-prefix "C-SPC")
|
:global-prefix "C-SPC")
|
||||||
|
|
||||||
(sb/leader-keys
|
(sb/leader-keys
|
||||||
"t" '(:ignore t :which-key "toggles")
|
;; "t" '(:ignore t :which-key "toggles")
|
||||||
"tc" '(comment-line :which-key "toggle comment")
|
;; "tc" '(comment-line :which-key "toggle comment")
|
||||||
"s" '(:ignore s :which-key "settings")))
|
"s" '(:ignore s :which-key "settings")))
|
||||||
|
|
||||||
(general-define-key
|
(general-define-key
|
||||||
@@ -374,6 +374,46 @@
|
|||||||
|
|
||||||
(add-hook 'org-mode-hook (lambda () (add-hook 'after-save-hook #'sb/org-babel-tangle-config)))
|
(add-hook 'org-mode-hook (lambda () (add-hook 'after-save-hook #'sb/org-babel-tangle-config)))
|
||||||
|
|
||||||
|
(use-package evil-nerd-commenter
|
||||||
|
:bind ("M-/" . evilnc-comment-or-uncomment-lines))
|
||||||
|
|
||||||
|
(defun sb/lsp-mode-setup ()
|
||||||
|
(setq lsp-headerline-breadcrumb-segments '(path-up-to-project file symbols))
|
||||||
|
(lsp-headerline-breadcrumb-mode))
|
||||||
|
|
||||||
|
(use-package lsp-mode
|
||||||
|
:commands (lsp lsp-deferred)
|
||||||
|
:hook (lsp-mode . sb/lsp-mode-setup)
|
||||||
|
:init
|
||||||
|
(setq lsp-keymap-prefix "C-c l") ;; Or 'C-l', 's-l'
|
||||||
|
:config
|
||||||
|
(lsp-enable-which-key-integration t))
|
||||||
|
|
||||||
|
(use-package lsp-ui
|
||||||
|
:hook (lsp-mode . lsp-ui-mode)
|
||||||
|
:custom
|
||||||
|
(lsp-ui-doc-position 'bottom))
|
||||||
|
|
||||||
|
(use-package lsp-treemacs
|
||||||
|
:after lsp)
|
||||||
|
|
||||||
|
(use-package lsp-ivy)
|
||||||
|
|
||||||
|
(use-package company
|
||||||
|
:after lsp-mode
|
||||||
|
:hook (lsp-mode . company-mode)
|
||||||
|
:bind
|
||||||
|
(:map company-active-map
|
||||||
|
("<tab>" . company-complete-selection))
|
||||||
|
(:map lsp-mode-map
|
||||||
|
("<tab>" . company-indent-or-complete-common))
|
||||||
|
:custom
|
||||||
|
(company-minimum-prefix-length 1)
|
||||||
|
(company-idle-delay 0.0))
|
||||||
|
|
||||||
|
(use-package company-box
|
||||||
|
:hook (company-mode . company-box-mode))
|
||||||
|
|
||||||
;; Projectile
|
;; Projectile
|
||||||
(use-package projectile
|
(use-package projectile
|
||||||
:diminish projectile-mode
|
:diminish projectile-mode
|
||||||
|
Reference in New Issue
Block a user