Back to package.el
This commit is contained in:
parent
456d426fe3
commit
359c92028f
@ -113,9 +113,8 @@ Finish up
|
|||||||
(provide 'early-init)
|
(provide 'early-init)
|
||||||
;;; early-init.el ends here
|
;;; early-init.el ends here
|
||||||
#+end_src
|
#+end_src
|
||||||
|
|
||||||
** Elpaca
|
** Elpaca
|
||||||
#+BEGIN_SRC emacs-lisp
|
#+BEGIN_SRC emacs-lisp :tangle no
|
||||||
;; -*- lexical-binding: t -*-
|
;; -*- lexical-binding: t -*-
|
||||||
(defvar elpaca-installer-version 0.3)
|
(defvar elpaca-installer-version 0.3)
|
||||||
(defvar elpaca-directory (expand-file-name "elpaca/" user-emacs-directory))
|
(defvar elpaca-directory (expand-file-name "elpaca/" user-emacs-directory))
|
||||||
@ -158,13 +157,97 @@ Finish up
|
|||||||
(setq elpaca-queue-limit 30)
|
(setq elpaca-queue-limit 30)
|
||||||
|
|
||||||
#+END_SRC
|
#+END_SRC
|
||||||
|
** Package Management
|
||||||
|
#+begin_src emacs-lisp
|
||||||
|
;; Also read: <https://protesilaos.com/codelog/2022-05-13-emacs-elpa-devel/>
|
||||||
|
(setq package-archives
|
||||||
|
'(("elpa" . "https://elpa.gnu.org/packages/")
|
||||||
|
("elpa-devel" . "https://elpa.gnu.org/devel/")
|
||||||
|
("nongnu" . "https://elpa.nongnu.org/nongnu/")
|
||||||
|
("melpa" . "https://melpa.org/packages/")))
|
||||||
|
;; Add MELPA to `package-archives'
|
||||||
|
(add-to-list 'package-archives
|
||||||
|
'("melpa" . "https://melpa.org/packages/"))
|
||||||
|
|
||||||
|
|
||||||
|
;; Proof-of-concept to install a list of packages
|
||||||
|
(mapc
|
||||||
|
(lambda (package)
|
||||||
|
(unless (package-installed-p package)
|
||||||
|
(package-install package)))
|
||||||
|
'(recentf
|
||||||
|
dashboard
|
||||||
|
olivetti
|
||||||
|
ligature
|
||||||
|
highlight-quoted
|
||||||
|
doom-modeline
|
||||||
|
hydra
|
||||||
|
multiple-cursors
|
||||||
|
evil
|
||||||
|
evil-collection
|
||||||
|
evil-surround
|
||||||
|
evil-snipe
|
||||||
|
evil-commentary
|
||||||
|
evil-goggles
|
||||||
|
all-the-icons-ibuffer
|
||||||
|
ace-window
|
||||||
|
popper
|
||||||
|
centaur-tabs
|
||||||
|
all-the-icons-completion
|
||||||
|
vertico
|
||||||
|
savehist
|
||||||
|
embark
|
||||||
|
embark-consult
|
||||||
|
marginalia
|
||||||
|
all-the-icons-completion
|
||||||
|
orderless
|
||||||
|
consult
|
||||||
|
consult-lsp
|
||||||
|
dirvish
|
||||||
|
smtpmail
|
||||||
|
sendmail
|
||||||
|
age
|
||||||
|
avy
|
||||||
|
helpful
|
||||||
|
vterm
|
||||||
|
undo-fu
|
||||||
|
undo-fu-session
|
||||||
|
vundo
|
||||||
|
which-key
|
||||||
|
company
|
||||||
|
company
|
||||||
|
lsp-mode
|
||||||
|
lsp-ui
|
||||||
|
flycheck
|
||||||
|
dap-mode
|
||||||
|
rustic
|
||||||
|
ob-rust
|
||||||
|
typescript-mode
|
||||||
|
disaster
|
||||||
|
haskell-mode
|
||||||
|
clojure-mode
|
||||||
|
cider
|
||||||
|
fsharp-mode
|
||||||
|
go-mode
|
||||||
|
json-mode
|
||||||
|
markdown-mode
|
||||||
|
org-bullets
|
||||||
|
org-kanban
|
||||||
|
restclient
|
||||||
|
magit))
|
||||||
|
|
||||||
|
(package-initialize)
|
||||||
|
(setopt package-vc-selected-packages
|
||||||
|
'((dashboard . "554dc6f")
|
||||||
|
(doom-themes :url "https://github.com/JosephFerano/doom-themes")))
|
||||||
|
|
||||||
|
#+end_src
|
||||||
** Benchmarking
|
** Benchmarking
|
||||||
|
|
||||||
This is commented out since it adds ever so slightly to init time, but keep it around in case we
|
This is commented out since it adds ever so slightly to init time, but keep it around in case we
|
||||||
need to benchmark slow init times later.
|
need to benchmark slow init times later.
|
||||||
|
|
||||||
#+begin_src emacs-lisp :tangle no
|
#+begin_src emacs-lisp :tangle no
|
||||||
(elpaca 'benchmark-init)
|
|
||||||
(require 'benchmark-init)
|
(require 'benchmark-init)
|
||||||
(add-hook 'after-init-hook 'benchmark-init/deactivate)
|
(add-hook 'after-init-hook 'benchmark-init/deactivate)
|
||||||
#+end_src
|
#+end_src
|
||||||
@ -228,20 +311,20 @@ This shows up when building Emacs;
|
|||||||
#+end_quote
|
#+end_quote
|
||||||
** Visuals
|
** Visuals
|
||||||
*** Initial Buffer
|
*** Initial Buffer
|
||||||
#+begin_src emacs-lisp
|
#+begin_src emacs-lisp :tangle no
|
||||||
(setq initial-buffer-choice "~/.config/emacs/init.org")
|
(setq initial-buffer-choice "~/.config/emacs/init.org")
|
||||||
#+end_src
|
#+end_src
|
||||||
*** Dashboard
|
*** Dashboard
|
||||||
|
|
||||||
Use Dashboard.el. First load `all-the-icons` for nicer rendering
|
Use Dashboard.el. First load `all-the-icons` for nicer rendering
|
||||||
|
#+begin_src emacs-lisp
|
||||||
|
|
||||||
#+begin_src emacs-lisp :tangle no
|
|
||||||
;; (elpaca 'all-the-icons)
|
;; (elpaca 'all-the-icons)
|
||||||
(elpaca (dashboard :ref "554dc6f")
|
;; (package-vc-install (dashboard :ref)
|
||||||
;; (elpaca 'dashboard
|
(require 'dashboard)
|
||||||
(dashboard-setup-startup-hook)
|
(dashboard-setup-startup-hook)
|
||||||
(setq dashboard-items '((recents . 6)
|
(setq dashboard-items '((recents . 6)
|
||||||
(projecss . 5)
|
(projects . 5)
|
||||||
(bookmarks . 5)))
|
(bookmarks . 5)))
|
||||||
(setq dashboard-startup-banner 'logo)
|
(setq dashboard-startup-banner 'logo)
|
||||||
(setq dashboard-center-content t)
|
(setq dashboard-center-content t)
|
||||||
@ -253,33 +336,29 @@ Use Dashboard.el. First load `all-the-icons` for nicer rendering
|
|||||||
(add-hook 'dashboard-mode-hook
|
(add-hook 'dashboard-mode-hook
|
||||||
(lambda ()
|
(lambda ()
|
||||||
(setq-local line-spacing 12)
|
(setq-local line-spacing 12)
|
||||||
|
;; TODO: It's not jumping
|
||||||
(dashboard-jump-to-recents)))
|
(dashboard-jump-to-recents)))
|
||||||
|
|
||||||
(defun joe/launch-dashboard ()
|
;; (defun joe/launch-dashboard ()
|
||||||
"Jump to the dashboard buffer, if doesn't exists create one."
|
;; "Jump to the dashboard buffer, if doesn't exists create one."
|
||||||
(interactive)
|
;; (interactive)
|
||||||
(switch-to-buffer dashboard-buffer-name)
|
;; (switch-to-buffer dashboard-buffer-name)
|
||||||
(dashboard-mode)
|
;; (dashboard-mode)
|
||||||
(dashboard-insert-startupify-lists)))
|
;; (dashboard-insert-startupify-lists))
|
||||||
#+end_src
|
#+end_src
|
||||||
*** Olivetti
|
*** Olivetti
|
||||||
|
|
||||||
#+begin_src emacs-lisp
|
#+begin_src emacs-lisp
|
||||||
(elpaca 'olivetti
|
|
||||||
(require 'olivetti)
|
(require 'olivetti)
|
||||||
(setq olivetti-minimum-body-width 100)
|
(setq olivetti-minimum-body-width 100)
|
||||||
(global-set-key (kbd "C-x x o") 'olivetti-mode))
|
(global-set-key (kbd "C-x x o") 'olivetti-mode)
|
||||||
#+end_src
|
#+end_src
|
||||||
*** Themes
|
*** Themes
|
||||||
|
|
||||||
#+begin_src emacs-lisp
|
#+begin_src emacs-lisp
|
||||||
;; Small changes to my favorite themes
|
;; Small changes to my favorite themes
|
||||||
|
|
||||||
(elpaca
|
;; (load-theme 'doom-nord-light))
|
||||||
'(doom-themes :host github :repo "doomemacs/themes"
|
|
||||||
:remotes ("fork" :repo "JosephFerano/doom-themes"))
|
|
||||||
|
|
||||||
(load-theme 'doom-nord-light))
|
|
||||||
|
|
||||||
(setq custom-safe-themes t)
|
(setq custom-safe-themes t)
|
||||||
|
|
||||||
@ -299,15 +378,13 @@ our case is worse since we have a literate file. Send all custom variables to ~c
|
|||||||
|
|
||||||
Save the chosen theme after picking a new one
|
Save the chosen theme after picking a new one
|
||||||
|
|
||||||
#+begin_src emacs-lisp tangle: no
|
#+begin_src emacs-lisp
|
||||||
(defun joe/save-current-theme (THEME)
|
(defun joe/save-current-theme (THEME)
|
||||||
(let ((inhibit-message t)
|
(let ((inhibit-message t)
|
||||||
(message-log-max nil))
|
(message-log-max nil))
|
||||||
(customize-save-variable 'custom-enabled-themes custom-enabled-themes)))
|
(customize-save-variable 'custom-enabled-themes custom-enabled-themes)))
|
||||||
(advice-add 'consult-theme :after #'joe/save-current-theme)
|
(advice-add 'consult-theme :after #'joe/save-current-theme)
|
||||||
|
|
||||||
;; (advice-remove 'load-theme 'joe/save-current-theme)
|
|
||||||
|
|
||||||
#+end_src
|
#+end_src
|
||||||
*** Other
|
*** Other
|
||||||
|
|
||||||
@ -348,13 +425,13 @@ Setup other stuff
|
|||||||
;; Don’t compact font caches during GC, in case doom modeline gets laggy issue
|
;; Don’t compact font caches during GC, in case doom modeline gets laggy issue
|
||||||
(setq inhibit-compacting-font-caches t)
|
(setq inhibit-compacting-font-caches t)
|
||||||
|
|
||||||
(elpaca 'ligature
|
(require 'ligature)
|
||||||
(global-ligature-mode))
|
(global-ligature-mode)
|
||||||
|
|
||||||
(elpaca 'highlight-quoted
|
(require 'highlight-quoted)
|
||||||
(add-hook 'emacs-lisp-mode-hook 'highlight-quoted-mode))
|
(add-hook 'emacs-lisp-mode-hook 'highlight-quoted-mode)
|
||||||
|
|
||||||
(elpaca 'doom-modeline
|
(require 'doom-modeline)
|
||||||
(doom-modeline-mode)
|
(doom-modeline-mode)
|
||||||
(doom-modeline-def-modeline 'main
|
(doom-modeline-def-modeline 'main
|
||||||
'(workspace-name bar modals bar window-number matches buffer-info remote-host buffer-position word-count selection-info)
|
'(workspace-name bar modals bar window-number matches buffer-info remote-host buffer-position word-count selection-info)
|
||||||
@ -363,7 +440,7 @@ Setup other stuff
|
|||||||
;; Set default mode-line
|
;; Set default mode-line
|
||||||
(add-hook 'doom-modeline-mode-hook
|
(add-hook 'doom-modeline-mode-hook
|
||||||
(lambda ()
|
(lambda ()
|
||||||
(doom-modeline-set-modeline 'main 'default))))
|
(doom-modeline-set-modeline 'main 'default)))
|
||||||
|
|
||||||
|
|
||||||
;; TODO Likely not needed anymore
|
;; TODO Likely not needed anymore
|
||||||
@ -444,7 +521,7 @@ weren't working, until I randomly saw this in someone's init.el
|
|||||||
#+end_src
|
#+end_src
|
||||||
*** Hydra
|
*** Hydra
|
||||||
#+begin_src emacs-lisp
|
#+begin_src emacs-lisp
|
||||||
(elpaca 'hydra
|
(require 'hydra)
|
||||||
|
|
||||||
(defhydra hydra-navigate (global-map "<f2>")
|
(defhydra hydra-navigate (global-map "<f2>")
|
||||||
"Window Navigation"
|
"Window Navigation"
|
||||||
@ -455,12 +532,12 @@ weren't working, until I randomly saw this in someone's init.el
|
|||||||
("y" joe/smooth-scroll-short-up "line up")
|
("y" joe/smooth-scroll-short-up "line up")
|
||||||
("n" next-line "line down")
|
("n" next-line "line down")
|
||||||
("p" previous-line "line up")
|
("p" previous-line "line up")
|
||||||
("M-r" move-to-window-line-top-bottom "Reposition cursor")))
|
("M-r" move-to-window-line-top-bottom "Reposition cursor"))
|
||||||
#+end_src
|
#+end_src
|
||||||
*** Multiple Cursors
|
*** Multiple Cursors
|
||||||
|
|
||||||
#+begin_src emacs-lisp
|
#+begin_src emacs-lisp
|
||||||
(elpaca 'multiple-cursors)
|
(require 'multiple-cursors)
|
||||||
#+end_src
|
#+end_src
|
||||||
*** Meow
|
*** Meow
|
||||||
#+begin_src emacs-lisp :tangle no
|
#+begin_src emacs-lisp :tangle no
|
||||||
@ -612,7 +689,7 @@ weren't working, until I randomly saw this in someone's init.el
|
|||||||
(setq evil-disable-insert-state-bindings t)
|
(setq evil-disable-insert-state-bindings t)
|
||||||
(setq evil-echo-state nil)
|
(setq evil-echo-state nil)
|
||||||
|
|
||||||
(elpaca 'evil
|
(require 'evil)
|
||||||
(evil-mode t)
|
(evil-mode t)
|
||||||
|
|
||||||
(evil-global-set-key 'insert (kbd "C-w") #'evil-delete-backward-word)
|
(evil-global-set-key 'insert (kbd "C-w") #'evil-delete-backward-word)
|
||||||
@ -686,27 +763,27 @@ weren't working, until I randomly saw this in someone's init.el
|
|||||||
(defun joe/scroll-up-line () (interactive) (scroll-up-line 2))
|
(defun joe/scroll-up-line () (interactive) (scroll-up-line 2))
|
||||||
(defun joe/scroll-down-line () (interactive) (scroll-down-line 2))
|
(defun joe/scroll-down-line () (interactive) (scroll-down-line 2))
|
||||||
(evil-global-set-key 'normal (kbd "C-e") #'joe/scroll-up-line)
|
(evil-global-set-key 'normal (kbd "C-e") #'joe/scroll-up-line)
|
||||||
(evil-global-set-key 'normal (kbd "C-y") #'joe/scroll-down-line))
|
(evil-global-set-key 'normal (kbd "C-y") #'joe/scroll-down-line)
|
||||||
|
|
||||||
|
|
||||||
(elpaca 'evil-collection
|
(require 'evil-collection)
|
||||||
(evil-collection-init))
|
(evil-collection-init)
|
||||||
|
|
||||||
(elpaca 'evil-surround
|
(require 'evil-surround)
|
||||||
(global-evil-surround-mode t))
|
(global-evil-surround-mode t)
|
||||||
|
|
||||||
;; (elpaca 'evil-snipe
|
|
||||||
;; (require 'evil-snipe)
|
;; (require 'evil-snipe)
|
||||||
;; (evil-snipe-mode +1))
|
;; (evil-snipe-mode +1)
|
||||||
|
;; (evil-snipe-override-mode +1)
|
||||||
|
|
||||||
(elpaca 'evil-commentary
|
(require 'evil-commentary)
|
||||||
(evil-commentary-mode t))
|
(evil-commentary-mode t)
|
||||||
|
|
||||||
(elpaca 'evil-goggles
|
(require 'evil-goggles)
|
||||||
(evil-goggles-mode t)
|
(evil-goggles-mode t)
|
||||||
(setq evil-goggles-duration 0.075)
|
(setq evil-goggles-duration 0.075)
|
||||||
(setq evil-goggles-pulse t)
|
(setq evil-goggles-pulse t)
|
||||||
(setq evil-goggles-async-duration 0.55))
|
(setq evil-goggles-async-duration 0.55)
|
||||||
|
|
||||||
#+end_src
|
#+end_src
|
||||||
** Buffers
|
** Buffers
|
||||||
@ -722,7 +799,7 @@ weren't working, until I randomly saw this in someone's init.el
|
|||||||
|
|
||||||
(global-set-key (kbd "C-x k") #'joe/kill-this-buffer-or-popup)
|
(global-set-key (kbd "C-x k") #'joe/kill-this-buffer-or-popup)
|
||||||
(global-set-key (kbd "C-x M-k") #'kill-buffer)
|
(global-set-key (kbd "C-x M-k") #'kill-buffer)
|
||||||
(elpaca 'all-the-icons-ibuffer)
|
(require 'all-the-icons-ibuffer)
|
||||||
(add-hook 'ibuffer-mode-hook #'all-the-icons-ibuffer-mode)
|
(add-hook 'ibuffer-mode-hook #'all-the-icons-ibuffer-mode)
|
||||||
(global-set-key [remap list-buffers] 'ibuffer)
|
(global-set-key [remap list-buffers] 'ibuffer)
|
||||||
(global-set-key (kbd "C-x B") 'ibuffer)
|
(global-set-key (kbd "C-x B") 'ibuffer)
|
||||||
@ -766,7 +843,7 @@ The theme of `C-x 4` bindings is that they operate on other windows, so this fun
|
|||||||
(define-key ctl-x-4-map (kbd "-") #'joe/window-split-horizontal)
|
(define-key ctl-x-4-map (kbd "-") #'joe/window-split-horizontal)
|
||||||
(define-key ctl-x-4-map (kbd "t") #'rotate-window)
|
(define-key ctl-x-4-map (kbd "t") #'rotate-window)
|
||||||
|
|
||||||
(elpaca 'ace-window)
|
(require 'ace-window)
|
||||||
(global-set-key (kbd "C-x o") #'ace-window)
|
(global-set-key (kbd "C-x o") #'ace-window)
|
||||||
(global-set-key (kbd "C-x C-o") #'ace-swap-window)
|
(global-set-key (kbd "C-x C-o") #'ace-swap-window)
|
||||||
|
|
||||||
@ -779,7 +856,6 @@ The theme of `C-x 4` bindings is that they operate on other windows, so this fun
|
|||||||
*** Popper
|
*** Popper
|
||||||
|
|
||||||
#+begin_src emacs-lisp
|
#+begin_src emacs-lisp
|
||||||
(elpaca 'popper
|
|
||||||
(require 'popper)
|
(require 'popper)
|
||||||
(setq popper-reference-buffers
|
(setq popper-reference-buffers
|
||||||
'("\\*compilation\\*" compilation-mode
|
'("\\*compilation\\*" compilation-mode
|
||||||
@ -849,7 +925,7 @@ The theme of `C-x 4` bindings is that they operate on other windows, so this fun
|
|||||||
|
|
||||||
(setq popper-display-function #'joe/popper-display-func)
|
(setq popper-display-function #'joe/popper-display-func)
|
||||||
|
|
||||||
(popper-mode t))
|
(popper-mode t)
|
||||||
#+end_src
|
#+end_src
|
||||||
*** Scrolling
|
*** Scrolling
|
||||||
#+begin_src emacs-lisp :tangle no
|
#+begin_src emacs-lisp :tangle no
|
||||||
@ -893,13 +969,13 @@ The theme of `C-x 4` bindings is that they operate on other windows, so this fun
|
|||||||
(global-set-key (kbd "C-S-v") #'joe/smooth-scroll-short-down)
|
(global-set-key (kbd "C-S-v") #'joe/smooth-scroll-short-down)
|
||||||
(global-set-key (kbd "M-S-v") #'joe/smooth-scroll-short-up)
|
(global-set-key (kbd "M-S-v") #'joe/smooth-scroll-short-up)
|
||||||
|
|
||||||
(elpaca 'topspace)
|
(require 'topspace)
|
||||||
|
|
||||||
#+end_src
|
#+end_src
|
||||||
** Tabs/Workspaces
|
** Tabs/Workspaces
|
||||||
*** Centaur Tabs
|
*** Centaur Tabs
|
||||||
#+begin_src emacs-lisp
|
#+begin_src emacs-lisp
|
||||||
(elpaca 'centaur-tabs
|
(require 'centaur-tabs)
|
||||||
(setq centaur-tabs-set-bar 'under)
|
(setq centaur-tabs-set-bar 'under)
|
||||||
(setq x-underline-at-descent-line t)
|
(setq x-underline-at-descent-line t)
|
||||||
(setq centaur-tabs-set-close-button nil)
|
(setq centaur-tabs-set-close-button nil)
|
||||||
@ -946,7 +1022,7 @@ The theme of `C-x 4` bindings is that they operate on other windows, so this fun
|
|||||||
(t
|
(t
|
||||||
"Emacs")))))
|
"Emacs")))))
|
||||||
|
|
||||||
(centaur-tabs-mode +1))
|
(centaur-tabs-mode +1)
|
||||||
#+end_src
|
#+end_src
|
||||||
*** Tabs
|
*** Tabs
|
||||||
#+begin_src emacs-lisp :tangle no
|
#+begin_src emacs-lisp :tangle no
|
||||||
@ -1002,20 +1078,21 @@ The theme of `C-x 4` bindings is that they operate on other windows, so this fun
|
|||||||
Vertico Embark Marginalia Consult Orderless
|
Vertico Embark Marginalia Consult Orderless
|
||||||
|
|
||||||
#+begin_src emacs-lisp
|
#+begin_src emacs-lisp
|
||||||
(elpaca 'all-the-icons-completion)
|
(require 'all-the-icons-completion)
|
||||||
(elpaca '(vertico :files (:defaults "extensions/*")
|
;; (require '(vertico :files (:defaults "extensions/*")
|
||||||
:includes (vertico-indexed
|
;; :includes (vertico-indexed
|
||||||
vertico-repeat
|
;; vertico-repeat
|
||||||
vertico-directory))
|
;; vertico-directory))
|
||||||
|
|
||||||
|
(require 'vertico)
|
||||||
(vertico-mode)
|
(vertico-mode)
|
||||||
;; (elpaca 'vertico-posframe)
|
;; (elpaca 'vertico-posframe)
|
||||||
|
|
||||||
(define-key vertico-map (kbd "C-w") #'vertico-directory-delete-word)
|
;; (define-key vertico-map (kbd "C-w") #'vertico-directory-delete-word)
|
||||||
;; (define-key vertico-map (kbd "C-r") #'vertico-repeat-)
|
;; (define-key vertico-map (kbd "C-r") #'vertico-repeat-)
|
||||||
|
|
||||||
;; (vertico-posframe-mode t)
|
;; (vertico-posframe-mode t)
|
||||||
(vertico-indexed-mode)
|
;; (vertico-indexed-mode)
|
||||||
;; (setq vertico-posframe-parameters
|
;; (setq vertico-posframe-parameters
|
||||||
;; '((left-fringe . 100)
|
;; '((left-fringe . 100)
|
||||||
;; (right-fringe . 100)))
|
;; (right-fringe . 100)))
|
||||||
@ -1038,7 +1115,7 @@ Vertico Embark Marginalia Consult Orderless
|
|||||||
(add-hook 'minibuffer-setup-hook #'vertico-repeat-save)
|
(add-hook 'minibuffer-setup-hook #'vertico-repeat-save)
|
||||||
(add-to-list 'savehist-additional-variables 'vertico-repeat-history)
|
(add-to-list 'savehist-additional-variables 'vertico-repeat-history)
|
||||||
|
|
||||||
(define-key vertico-map (kbd "C-M-n") #'vertico-next-group))
|
(define-key vertico-map (kbd "C-M-n") #'vertico-next-group)
|
||||||
;; #' "C-M-p" #'vertico-previous-group)
|
;; #' "C-M-p" #'vertico-previous-group)
|
||||||
|
|
||||||
|
|
||||||
@ -1049,7 +1126,7 @@ Vertico Embark Marginalia Consult Orderless
|
|||||||
;; ("M-DEL" . vertico-directory-delete-word))
|
;; ("M-DEL" . vertico-directory-delete-word))
|
||||||
;; :hook (rfn-eshadow-update-overlay . vertico-directory-tidy))
|
;; :hook (rfn-eshadow-update-overlay . vertico-directory-tidy))
|
||||||
|
|
||||||
(elpaca 'embark
|
(require 'embark)
|
||||||
|
|
||||||
(setq embark-quit-after-action '((kill-buffer . nil)))
|
(setq embark-quit-after-action '((kill-buffer . nil)))
|
||||||
|
|
||||||
@ -1106,11 +1183,11 @@ Vertico Embark Marginalia Consult Orderless
|
|||||||
(advice-add #'embark-completing-read-prompter
|
(advice-add #'embark-completing-read-prompter
|
||||||
:around #'embark-hide-which-key-indicator)
|
:around #'embark-hide-which-key-indicator)
|
||||||
|
|
||||||
(global-set-key (kbd "C-'") #'embark-act))
|
(global-set-key (kbd "C-'") #'embark-act)
|
||||||
|
|
||||||
(elpaca 'embark-consult)
|
(require 'embark-consult)
|
||||||
|
|
||||||
(elpaca 'marginalia
|
(require 'marginalia)
|
||||||
(setq marginalia-annotators '(marginalia-annotators-heavy marginalia-annotators-light nil))
|
(setq marginalia-annotators '(marginalia-annotators-heavy marginalia-annotators-light nil))
|
||||||
(setq marginalia-align 'right)
|
(setq marginalia-align 'right)
|
||||||
(setq marginalia-max-relative-age most-positive-fixnum)
|
(setq marginalia-max-relative-age most-positive-fixnum)
|
||||||
@ -1120,17 +1197,17 @@ Vertico Embark Marginalia Consult Orderless
|
|||||||
(all-the-icons-completion-mode)
|
(all-the-icons-completion-mode)
|
||||||
(all-the-icons-completion-marginalia-setup)
|
(all-the-icons-completion-marginalia-setup)
|
||||||
|
|
||||||
(add-hook 'marginalia-mode-hook #'all-the-icons-completion-marginalia-setup))
|
(add-hook 'marginalia-mode-hook #'all-the-icons-completion-marginalia-setup)
|
||||||
|
|
||||||
(elpaca 'orderless
|
(require 'orderless)
|
||||||
(setq completion-styles '(orderless basic)
|
(setq completion-styles '(orderless basic)
|
||||||
completion-category-overrides '((file (styles basic partial-completion)))))
|
completion-category-overrides '((file (styles basic partial-completion))))
|
||||||
#+end_src
|
#+end_src
|
||||||
|
|
||||||
*** Consult
|
*** Consult
|
||||||
#+begin_src emacs-lisp
|
#+begin_src emacs-lisp
|
||||||
(elpaca 'consult)
|
(require 'consult)
|
||||||
(elpaca 'consult-lsp)
|
(require 'consult-lsp)
|
||||||
|
|
||||||
;; (defun joe/consult-line ()
|
;; (defun joe/consult-line ()
|
||||||
;; (interactive)
|
;; (interactive)
|
||||||
@ -1149,7 +1226,7 @@ Vertico Embark Marginalia Consult Orderless
|
|||||||
#+end_src
|
#+end_src
|
||||||
** Dirvish/Dired
|
** Dirvish/Dired
|
||||||
#+begin_src emacs-lisp
|
#+begin_src emacs-lisp
|
||||||
(elpaca 'dirvish)
|
(require 'dirvish)
|
||||||
(with-eval-after-load 'dirvish
|
(with-eval-after-load 'dirvish
|
||||||
(dirvish-override-dired-mode)
|
(dirvish-override-dired-mode)
|
||||||
(setq delete-by-moving-to-trash t)
|
(setq delete-by-moving-to-trash t)
|
||||||
@ -1228,7 +1305,7 @@ Vertico Embark Marginalia Consult Orderless
|
|||||||
** Avy
|
** Avy
|
||||||
|
|
||||||
#+begin_src emacs-lisp
|
#+begin_src emacs-lisp
|
||||||
(straight-use-package 'avy)
|
(require 'avy)
|
||||||
(setq avy-case-fold-search nil)
|
(setq avy-case-fold-search nil)
|
||||||
(setq avy-keys '(?a ?s ?d ?f ?g ?h ?j ?k ?l ?q ?w ?e ?r ?u ?i ?o ?p ?z ?x ?c ?v ?n ?m))
|
(setq avy-keys '(?a ?s ?d ?f ?g ?h ?j ?k ?l ?q ?w ?e ?r ?u ?i ?o ?p ?z ?x ?c ?v ?n ?m))
|
||||||
(define-key global-map (kbd "C-;") 'avy-goto-char) ;; I use this most frequently
|
(define-key global-map (kbd "C-;") 'avy-goto-char) ;; I use this most frequently
|
||||||
@ -1237,21 +1314,20 @@ Vertico Embark Marginalia Consult Orderless
|
|||||||
(define-key global-map (kbd "M-g e") 'avy-goto-word-0) ;; lots of candidates
|
(define-key global-map (kbd "M-g e") 'avy-goto-word-0) ;; lots of candidates
|
||||||
(define-key global-map (kbd "M-g g") 'avy-goto-line) ;; digits behave like goto-line
|
(define-key global-map (kbd "M-g g") 'avy-goto-line) ;; digits behave like goto-line
|
||||||
(define-key global-map (kbd "M-g w") 'avy-goto-word-1) ;; first character of the word
|
(define-key global-map (kbd "M-g w") 'avy-goto-word-1) ;; first character of the word
|
||||||
(define-key global-map (kbd "M-g P") 'avy-pop-mark))
|
(define-key global-map (kbd "M-g P") 'avy-pop-mark)
|
||||||
#+end_src
|
#+end_src
|
||||||
** Helpful
|
** Helpful
|
||||||
#+begin_src emacs-lisp
|
#+begin_src emacs-lisp
|
||||||
(elpaca 'helpful
|
(require 'helpful)
|
||||||
(global-set-key (kbd "C-h f") #'helpful-callable)
|
(global-set-key (kbd "C-h f") #'helpful-callable)
|
||||||
(global-set-key (kbd "C-h v") #'helpful-variable)
|
(global-set-key (kbd "C-h v") #'helpful-variable)
|
||||||
(global-set-key (kbd "C-h k") #'helpful-key)
|
(global-set-key (kbd "C-h k") #'helpful-key)
|
||||||
(global-set-key (kbd "C-h C-d") #'helpful-at-point)
|
(global-set-key (kbd "C-h C-d") #'helpful-at-point)
|
||||||
(global-set-key (kbd "C-h F") #'helpful-function)
|
(global-set-key (kbd "C-h F") #'helpful-function)
|
||||||
(global-set-key (kbd "C-h C") #'helpful-command))
|
(global-set-key (kbd "C-h C") #'helpful-command)
|
||||||
#+end_src
|
#+end_src
|
||||||
** Terminals/Shells
|
** Terminals/Shells
|
||||||
#+begin_src emacs-lisp
|
#+begin_src emacs-lisp
|
||||||
(elpaca 'vterm
|
|
||||||
(require 'vterm)
|
(require 'vterm)
|
||||||
(setq vterm-shell "/bin/fish")
|
(setq vterm-shell "/bin/fish")
|
||||||
(setq vterm-timer-delay 0.01)
|
(setq vterm-timer-delay 0.01)
|
||||||
@ -1284,7 +1360,7 @@ Vertico Embark Marginalia Consult Orderless
|
|||||||
(when (boundp 'evil-mode)
|
(when (boundp 'evil-mode)
|
||||||
(evil-define-key 'insert vterm-mode-map (kbd "C-w") #'vterm-send-C-w)
|
(evil-define-key 'insert vterm-mode-map (kbd "C-w") #'vterm-send-C-w)
|
||||||
(evil-define-key 'insert vterm-mode-map (kbd "<delete>") #'vterm-send-delete))
|
(evil-define-key 'insert vterm-mode-map (kbd "<delete>") #'vterm-send-delete))
|
||||||
(setq-local global-hl-line-mode nil))))
|
(setq-local global-hl-line-mode nil)))
|
||||||
#+end_src
|
#+end_src
|
||||||
|
|
||||||
VTerm is loading TRAMP along with it which slows down init time noticeably so call this after
|
VTerm is loading TRAMP along with it which slows down init time noticeably so call this after
|
||||||
@ -1295,22 +1371,20 @@ startup. Reason we have to call this is so the vterm fucntion can call `vterm--i
|
|||||||
#+end_src
|
#+end_src
|
||||||
** Undo Fu
|
** Undo Fu
|
||||||
#+begin_src emacs-lisp
|
#+begin_src emacs-lisp
|
||||||
(elpaca 'undo-fu
|
(require 'undo-fu)
|
||||||
(undo-fu-session-global-mode +1)
|
(undo-fu-session-global-mode +1)
|
||||||
(setq undo-limit 6710886400) ;; 64mb.
|
(setq undo-limit 6710886400) ;; 64mb.
|
||||||
(setq undo-strong-limit 100663296) ;; 96mb.
|
(setq undo-strong-limit 100663296) ;; 96mb.
|
||||||
(setq undo-outer-limit 1006632960)) ;; 960mb.
|
(setq undo-outer-limit 1006632960) ;; 960mb.
|
||||||
|
|
||||||
(elpaca 'undo-fu-session
|
(require 'undo-fu-session)
|
||||||
(setq undo-fu-session-incompatible-files '("/COMMIT_EDITMSG\\'" "/git-rebase-todo\\'"))
|
(setq undo-fu-session-incompatible-files '("/COMMIT_EDITMSG\\'" "/git-rebase-todo\\'"))
|
||||||
|
(require 'vundo)
|
||||||
)
|
|
||||||
(elpaca 'vundo)
|
|
||||||
#+end_src
|
#+end_src
|
||||||
** Which Key
|
** Which Key
|
||||||
|
|
||||||
#+begin_src emacs-lisp
|
#+begin_src emacs-lisp
|
||||||
(elpaca 'which-key
|
(require 'which-key)
|
||||||
(setq which-key-idle-delay 0.3)
|
(setq which-key-idle-delay 0.3)
|
||||||
(which-key-mode)
|
(which-key-mode)
|
||||||
(when (boundp 'evil-mode)
|
(when (boundp 'evil-mode)
|
||||||
@ -1325,7 +1399,7 @@ startup. Reason we have to call this is so the vterm fucntion can call `vterm--i
|
|||||||
"SPC t" '("Tabs")
|
"SPC t" '("Tabs")
|
||||||
"SPC p" '("Packages")
|
"SPC p" '("Packages")
|
||||||
"SPC s" '("Shell (vterm)")
|
"SPC s" '("Shell (vterm)")
|
||||||
"SPC h" '("Help"))))
|
"SPC h" '("Help")))
|
||||||
#+end_src
|
#+end_src
|
||||||
** IDE Features
|
** IDE Features
|
||||||
*** REPLs
|
*** REPLs
|
||||||
@ -1336,13 +1410,9 @@ startup. Reason we have to call this is so the vterm fucntion can call `vterm--i
|
|||||||
(evil-define-key 'insert comint-mode-map (kbd "C-p") 'comint-previous-input))
|
(evil-define-key 'insert comint-mode-map (kbd "C-p") 'comint-previous-input))
|
||||||
#+end_src
|
#+end_src
|
||||||
*** Company
|
*** Company
|
||||||
#+begin_src rust
|
|
||||||
println!("Hello world");
|
|
||||||
#+end_src
|
|
||||||
|
|
||||||
#+begin_src emacs-lisp
|
#+begin_src emacs-lisp
|
||||||
|
|
||||||
|
|
||||||
(setq completion-in-region-function
|
(setq completion-in-region-function
|
||||||
(lambda (&rest args)
|
(lambda (&rest args)
|
||||||
(apply (if vertico-mode
|
(apply (if vertico-mode
|
||||||
@ -1350,7 +1420,7 @@ println!("Hello world");
|
|||||||
#'completion--in-region)
|
#'completion--in-region)
|
||||||
args)))
|
args)))
|
||||||
|
|
||||||
(elpaca 'company)
|
(require 'company)
|
||||||
|
|
||||||
(with-eval-after-load 'company
|
(with-eval-after-load 'company
|
||||||
(add-to-list 'completion-at-point-functions #'elisp-completion-at-point)
|
(add-to-list 'completion-at-point-functions #'elisp-completion-at-point)
|
||||||
@ -1381,7 +1451,7 @@ println!("Hello world");
|
|||||||
#+end_src
|
#+end_src
|
||||||
*** LSP
|
*** LSP
|
||||||
#+begin_src emacs-lisp
|
#+begin_src emacs-lisp
|
||||||
(elpaca 'lsp-mode
|
(require 'lsp-mode)
|
||||||
(setq lsp-enable-which-key-integration t)
|
(setq lsp-enable-which-key-integration t)
|
||||||
(setq lsp-keymap-prefix "C-c c")
|
(setq lsp-keymap-prefix "C-c c")
|
||||||
|
|
||||||
@ -1421,22 +1491,22 @@ println!("Hello world");
|
|||||||
(--take-while (not (s-equals? "```" it)) it)
|
(--take-while (not (s-equals? "```" it)) it)
|
||||||
(--map (s-trim it) it)
|
(--map (s-trim it) it)
|
||||||
(s-join " " it))))
|
(s-join " " it))))
|
||||||
(lsp--render-element (concat "```rust\n" sig "\n```")))))
|
(lsp--render-element (concat "```rust\n" sig "\n```"))))
|
||||||
|
|
||||||
(elpaca 'lsp-ui)
|
(require 'lsp-ui)
|
||||||
|
|
||||||
#+end_src
|
#+end_src
|
||||||
*** Flycheck
|
*** Flycheck
|
||||||
|
|
||||||
#+begin_src emacs-lisp
|
#+begin_src emacs-lisp
|
||||||
(elpaca 'flycheck)
|
(require 'flycheck)
|
||||||
;; TODO Add wrapping to these functions
|
;; TODO Add wrapping to these functions
|
||||||
(when (boundp 'evil-mode)
|
(when (boundp 'evil-mode)
|
||||||
(evil-global-set-key 'normal (kbd "M-e") #'flycheck-next-error)
|
(evil-global-set-key 'normal (kbd "M-e") #'flycheck-next-error)
|
||||||
(evil-global-set-key 'normal (kbd "M-E") #'flycheck-previous-error)
|
(evil-global-set-key 'normal (kbd "M-E") #'flycheck-previous-error)
|
||||||
(evil-global-set-key 'normal (kbd "<leader>ee") 'flycheck-mode)
|
(evil-global-set-key 'normal (kbd "<leader>ee") 'flycheck-mode)
|
||||||
(evil-global-set-key 'normal (kbd "<leader>el") #'flycheck-list-errors)
|
(evil-global-set-key 'normal (kbd "<leader>el") #'flycheck-list-errors)
|
||||||
(evil-global-set-key 'normal (kbd "<leader>ce") #'consult-lsp-diagnostics)))
|
(evil-global-set-key 'normal (kbd "<leader>ce") #'consult-lsp-diagnostics))
|
||||||
#+end_src
|
#+end_src
|
||||||
*** Compilation
|
*** Compilation
|
||||||
#+begin_src emacs-lisp
|
#+begin_src emacs-lisp
|
||||||
@ -1488,7 +1558,6 @@ println!("Hello world");
|
|||||||
** Debugging
|
** Debugging
|
||||||
*** DAP
|
*** DAP
|
||||||
#+begin_src emacs-lisp
|
#+begin_src emacs-lisp
|
||||||
(elpaca 'dap-mode
|
|
||||||
(require 'dap-mode)
|
(require 'dap-mode)
|
||||||
;; (setq dap-auto-configure-features '(locals breakpoints expressions tooltip))
|
;; (setq dap-auto-configure-features '(locals breakpoints expressions tooltip))
|
||||||
|
|
||||||
@ -1513,20 +1582,20 @@ println!("Hello world");
|
|||||||
:cwd "${workspaceFolder}"
|
:cwd "${workspaceFolder}"
|
||||||
:console "external"
|
:console "external"
|
||||||
:dap-compilation "cargo build"
|
:dap-compilation "cargo build"
|
||||||
:dap-compilation-dir "${workspaceFolder}")))
|
:dap-compilation-dir "${workspaceFolder}"))
|
||||||
#+end_src
|
#+end_src
|
||||||
** Languages
|
** Languages
|
||||||
*** Python
|
*** Python
|
||||||
#+begin_src emacs-lisp
|
#+begin_src emacs-lisp
|
||||||
(elpaca 'elpy)
|
(require 'elpy)
|
||||||
|
|
||||||
(define-key inferior-python-mode-map (kbd "C-n") #'comint-next-input)
|
(define-key inferior-python-mode-map (kbd "C-n") #'comint-next-input)
|
||||||
(define-key inferior-python-mode-map (kbd "C-p") #'comint-previous-input)
|
(define-key inferior-python-mode-map (kbd "C-p") #'comint-previous-input)
|
||||||
#+end_src>
|
#+end_src>
|
||||||
*** Rust
|
*** Rust
|
||||||
#+begin_src emacs-lisp
|
#+begin_src emacs-lisp
|
||||||
(elpaca 'rustic)
|
(require 'rustic)
|
||||||
(elpaca 'ob-rust)
|
(require 'ob-rust)
|
||||||
;; Org-Babel
|
;; Org-Babel
|
||||||
;; Disabling until we figure out how to get it working
|
;; Disabling until we figure out how to get it working
|
||||||
;; (elpaca 'parsec) ;; Required by evcxr-mode
|
;; (elpaca 'parsec) ;; Required by evcxr-mode
|
||||||
@ -1564,7 +1633,7 @@ println!("Hello world");
|
|||||||
#+end_src
|
#+end_src
|
||||||
*** Web
|
*** Web
|
||||||
#+begin_src emacs-lisp
|
#+begin_src emacs-lisp
|
||||||
(elpaca 'typescript-mode)
|
(require 'typescript-mode)
|
||||||
(setq typescript-indent-level 2)
|
(setq typescript-indent-level 2)
|
||||||
#+end_src
|
#+end_src
|
||||||
*** C
|
*** C
|
||||||
@ -1575,7 +1644,7 @@ whether the point hasn't been moved. This way, if I switched to another popper b
|
|||||||
it doesn't close it.
|
it doesn't close it.
|
||||||
|
|
||||||
#+begin_src emacs-lisp
|
#+begin_src emacs-lisp
|
||||||
(elpaca 'disaster)
|
(require 'disaster)
|
||||||
(defun joe/c-mode-hook ()
|
(defun joe/c-mode-hook ()
|
||||||
(local-set-key (kbd "C-x c r") (defun joe/make-run () (interactive) (compile "make run")))
|
(local-set-key (kbd "C-x c r") (defun joe/make-run () (interactive) (compile "make run")))
|
||||||
(local-set-key (kbd "C-x c c") (defun joe/make () (interactive) (compile "make")))
|
(local-set-key (kbd "C-x c c") (defun joe/make () (interactive) (compile "make")))
|
||||||
@ -1585,7 +1654,7 @@ it doesn't close it.
|
|||||||
#+end_src
|
#+end_src
|
||||||
*** Haskell
|
*** Haskell
|
||||||
#+begin_src emacs-lisp
|
#+begin_src emacs-lisp
|
||||||
(elpaca 'haskell-mode)
|
(require 'haskell-mode)
|
||||||
(setq haskell-interactive-popup-errors nil)
|
(setq haskell-interactive-popup-errors nil)
|
||||||
(when (boundp 'evil-mode)
|
(when (boundp 'evil-mode)
|
||||||
|
|
||||||
@ -1595,17 +1664,17 @@ it doesn't close it.
|
|||||||
#+end_src
|
#+end_src
|
||||||
*** Clojure
|
*** Clojure
|
||||||
#+begin_src emacs-lisp
|
#+begin_src emacs-lisp
|
||||||
(elpaca 'clojure-mode)
|
(require 'clojure-mode)
|
||||||
(elpaca 'cider)
|
(require 'cider)
|
||||||
(setq cider-show-error-buffer 'only-in-repl)
|
(setq cider-show-error-buffer 'only-in-repl)
|
||||||
#+end_src
|
#+end_src
|
||||||
*** OCaml
|
*** OCaml
|
||||||
#+begin_src emacs-lisp :tangle no
|
#+begin_src emacs-lisp :tangle no
|
||||||
(elpaca 'tuareg)
|
(require 'tuareg)
|
||||||
(elpaca 'dune)
|
(require 'dune)
|
||||||
(elpaca 'utop)
|
(require 'utop)
|
||||||
(elpaca 'merlin)
|
(require 'merlin)
|
||||||
(elpaca 'merlin-eldoc)
|
(require 'merlin-eldoc)
|
||||||
;; Might be worth checking out, depeding on whether we stick with flycheck or not
|
;; Might be worth checking out, depeding on whether we stick with flycheck or not
|
||||||
;; (elpaca 'flycheck-ocaml)
|
;; (elpaca 'flycheck-ocaml)
|
||||||
;; Also check this out, see if it adds anything
|
;; Also check this out, see if it adds anything
|
||||||
@ -1646,25 +1715,25 @@ and there's no need for a middle-man when it's already been implemented.
|
|||||||
#+end_src
|
#+end_src
|
||||||
*** FSharp
|
*** FSharp
|
||||||
#+begin_src emacs-lisp
|
#+begin_src emacs-lisp
|
||||||
(elpaca 'fsharp-mode)
|
(require 'fsharp-mode)
|
||||||
;; (elpaca 'eglot-fsharp)
|
;; (elpaca 'eglot-fsharp)
|
||||||
|
|
||||||
#+end_src
|
#+end_src
|
||||||
*** Go
|
*** Go
|
||||||
|
|
||||||
#+begin_src emacs-lisp
|
#+begin_src emacs-lisp
|
||||||
(elpaca 'go-mode)
|
(require 'go-mode)
|
||||||
;; (elpaca 'go-imports)
|
;; (elpaca 'go-imports)
|
||||||
#+end_src
|
#+end_src
|
||||||
*** Other
|
*** Other
|
||||||
#+begin_src emacs-lisp
|
#+begin_src emacs-lisp
|
||||||
(elpaca 'json-mode)
|
(require 'json-mode)
|
||||||
(elpaca 'markdown-mode)
|
(require 'markdown-mode)
|
||||||
#+end_src
|
#+end_src
|
||||||
** Org Mode
|
** Org Mode
|
||||||
|
|
||||||
#+begin_src emacs-lisp
|
#+begin_src emacs-lisp
|
||||||
(elpaca 'org-bullets)
|
(require 'org-bullets)
|
||||||
|
|
||||||
(defun joe/org-init ()
|
(defun joe/org-init ()
|
||||||
(setq org-todo-keywords '((sequence "TODO" "IN-PROGRESS" "|" "DONE" "BACKLOG")))
|
(setq org-todo-keywords '((sequence "TODO" "IN-PROGRESS" "|" "DONE" "BACKLOG")))
|
||||||
@ -1704,14 +1773,14 @@ and there's no need for a middle-man when it's already been implemented.
|
|||||||
(org-indent-mode))
|
(org-indent-mode))
|
||||||
(add-hook 'org-mode-hook 'joe/org-hook)
|
(add-hook 'org-mode-hook 'joe/org-hook)
|
||||||
|
|
||||||
(elpaca 'org-kanban)
|
(require 'org-kanban)
|
||||||
#+end_src
|
#+end_src
|
||||||
** Magit
|
** Magit
|
||||||
|
|
||||||
The best git porcelain/client I've ever used. Also kill stray magit buffers left over as explained [[https://manueluberti.eu/emacs/2018/02/17/magit-bury-buffer/][here]]
|
The best git porcelain/client I've ever used. Also kill stray magit buffers left over as explained [[https://manueluberti.eu/emacs/2018/02/17/magit-bury-buffer/][here]]
|
||||||
|
|
||||||
#+begin_src emacs-lisp
|
#+begin_src emacs-lisp
|
||||||
(elpaca 'magit)
|
(require 'magit)
|
||||||
|
|
||||||
(defun joe/magit-kill-buffers (param)
|
(defun joe/magit-kill-buffers (param)
|
||||||
"Restore window configuration and kill all Magit buffers."
|
"Restore window configuration and kill all Magit buffers."
|
||||||
@ -1732,7 +1801,7 @@ The best git porcelain/client I've ever used. Also kill stray magit buffers left
|
|||||||
** Restclient
|
** Restclient
|
||||||
|
|
||||||
#+begin_src emacs-lisp
|
#+begin_src emacs-lisp
|
||||||
(elpaca 'restclient)
|
(require 'restclient)
|
||||||
|
|
||||||
(add-to-list 'auto-mode-alist '("\\.restclient\\'" . restclient-mode))
|
(add-to-list 'auto-mode-alist '("\\.restclient\\'" . restclient-mode))
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user