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:
Sravan Balaji
2021-04-28 22:16:04 -04:00
parent d83759bb5d
commit 2884cf5c13
2 changed files with 108 additions and 4 deletions

View File

@@ -114,8 +114,8 @@ Setup FiraCode and Cantarell fonts with specified size.
:global-prefix "C-SPC")
(sb/leader-keys
"t" '(:ignore t :which-key "toggles")
"tc" '(comment-line :which-key "toggle comment")
;; "t" '(:ignore t :which-key "toggles")
;; "tc" '(comment-line :which-key "toggle comment")
"s" '(:ignore s :which-key "settings")))
(general-define-key
@@ -498,6 +498,70 @@ Automatically tangle code blocks in file everytime it is saved.
* 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
#+begin_src emacs-lisp
;; Projectile

44
init.el
View File

@@ -62,8 +62,8 @@
:global-prefix "C-SPC")
(sb/leader-keys
"t" '(:ignore t :which-key "toggles")
"tc" '(comment-line :which-key "toggle comment")
;; "t" '(:ignore t :which-key "toggles")
;; "tc" '(comment-line :which-key "toggle comment")
"s" '(:ignore s :which-key "settings")))
(general-define-key
@@ -374,6 +374,46 @@
(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
(use-package projectile
:diminish projectile-mode