|
|
@ -64,121 +64,121 @@ Some notes about [[https://github.com/jwiegley/use-package][use-package]]
|
|
|
|
|
|
|
|
|
|
|
|
* Interface tweaks
|
|
|
|
* Interface tweaks
|
|
|
|
** Some GUI optimizations
|
|
|
|
** Some GUI optimizations
|
|
|
|
#+begin_src emacs-lisp
|
|
|
|
#+begin_src emacs-lisp
|
|
|
|
;; sets default font
|
|
|
|
;; sets default font
|
|
|
|
(set-face-attribute 'default nil :family "Mensch" :foundry "PfEd" :height 158)
|
|
|
|
(set-face-attribute 'default nil :family "Mensch" :foundry "PfEd" :height 158)
|
|
|
|
|
|
|
|
|
|
|
|
(setq inhibit-x-resources t) ; avoid problems with emacs daemon and cursor colors
|
|
|
|
(setq inhibit-x-resources t) ; avoid problems with emacs daemon and cursor colors
|
|
|
|
(setq inhibit-startup-message t) ; Eliminate FSF startup msg
|
|
|
|
(setq inhibit-startup-message t) ; Eliminate FSF startup msg
|
|
|
|
(setq frame-title-format "%b") ; Put filename in titlebar
|
|
|
|
(setq frame-title-format "%b") ; Put filename in titlebar
|
|
|
|
(setq visible-bell t) ; Flash instead of beep
|
|
|
|
(setq visible-bell t) ; Flash instead of beep
|
|
|
|
(set-scroll-bar-mode 'right) ; Scrollbar placement
|
|
|
|
(set-scroll-bar-mode 'right) ; Scrollbar placement
|
|
|
|
(show-paren-mode t) ; Blinking cursor shows matching parentheses
|
|
|
|
(show-paren-mode t) ; Blinking cursor shows matching parentheses
|
|
|
|
(electric-pair-mode t) ; electric-pair-mode on
|
|
|
|
(electric-pair-mode t) ; electric-pair-mode on
|
|
|
|
(setq column-number-mode t) ; Show column number of current cursor location
|
|
|
|
(setq column-number-mode t) ; Show column number of current cursor location
|
|
|
|
(mouse-wheel-mode t) ; wheel-mouse support
|
|
|
|
(mouse-wheel-mode t) ; wheel-mouse support
|
|
|
|
(setq fill-column 78)
|
|
|
|
(setq fill-column 78)
|
|
|
|
(setq auto-fill-mode t) ; Set line width to 78 columns...
|
|
|
|
(setq auto-fill-mode t) ; Set line width to 78 columns...
|
|
|
|
(setq-default indent-tabs-mode nil) ; Insert spaces instead of tabs
|
|
|
|
(setq-default indent-tabs-mode nil) ; Insert spaces instead of tabs
|
|
|
|
(setq-default tab-width 4) ; set default tab 4 spaces
|
|
|
|
(setq-default tab-width 4) ; set default tab 4 spaces
|
|
|
|
(global-set-key "\r" 'newline-and-indent) ; turn autoindenting on
|
|
|
|
(global-set-key "\r" 'newline-and-indent) ; turn autoindenting on
|
|
|
|
;(set-default 'truncate-lines t) ; Truncate lines for all buffers
|
|
|
|
;(set-default 'truncate-lines t) ; Truncate lines for all buffers
|
|
|
|
(fset 'yes-or-no-p 'y-or-n-p) ; shorter messages
|
|
|
|
(fset 'yes-or-no-p 'y-or-n-p) ; shorter messages
|
|
|
|
(setq sentence-end-double-space nil) ; only one space
|
|
|
|
(setq sentence-end-double-space nil) ; only one space
|
|
|
|
; delete trailing whitespace before saving
|
|
|
|
; delete trailing whitespace before saving
|
|
|
|
(add-hook 'before-save-hook 'delete-trailing-whitespace)
|
|
|
|
(add-hook 'before-save-hook 'delete-trailing-whitespace)
|
|
|
|
;; Enable line numbers for some modes
|
|
|
|
;; Enable line numbers for some modes
|
|
|
|
(dolist (mode '(;;text-mode-hook
|
|
|
|
(dolist (mode '(;;text-mode-hook
|
|
|
|
prog-mode-hook
|
|
|
|
prog-mode-hook
|
|
|
|
conf-mode-hook))
|
|
|
|
conf-mode-hook))
|
|
|
|
(add-hook mode (lambda () (display-line-numbers-mode 1))))
|
|
|
|
(add-hook mode (lambda () (display-line-numbers-mode 1))))
|
|
|
|
|
|
|
|
|
|
|
|
;; Override some modes which derive from the above
|
|
|
|
;; Override some modes which derive from the above
|
|
|
|
(dolist (mode '(org-mode-hook))
|
|
|
|
(dolist (mode '(org-mode-hook))
|
|
|
|
(add-hook mode (lambda () (display-line-numbers-mode 0))))
|
|
|
|
(add-hook mode (lambda () (display-line-numbers-mode 0))))
|
|
|
|
#+end_src
|
|
|
|
#+end_src
|
|
|
|
|
|
|
|
|
|
|
|
** Set encoding
|
|
|
|
** Set encoding
|
|
|
|
Use utf-8 please
|
|
|
|
Use utf-8 please
|
|
|
|
#+begin_src emacs-lisp
|
|
|
|
#+begin_src emacs-lisp
|
|
|
|
;; Set encoding
|
|
|
|
;; Set encoding
|
|
|
|
(prefer-coding-system 'utf-8)
|
|
|
|
(prefer-coding-system 'utf-8)
|
|
|
|
#+end_src
|
|
|
|
#+end_src
|
|
|
|
|
|
|
|
|
|
|
|
** Some shortcuts
|
|
|
|
** Some shortcuts
|
|
|
|
Useful shortcuts:
|
|
|
|
Useful shortcuts:
|
|
|
|
- Revert buffer (recargar)
|
|
|
|
- Revert buffer (recargar)
|
|
|
|
- fichero org de configuración de emacs
|
|
|
|
- fichero org de configuración de emacs
|
|
|
|
- fichero org ppal, aquí está todo
|
|
|
|
- fichero org ppal, aquí está todo
|
|
|
|
- journal org file
|
|
|
|
- journal org file
|
|
|
|
- org para el blog público, ideas para el blog
|
|
|
|
- org para el blog público, ideas para el blog
|
|
|
|
- org para el blog privado
|
|
|
|
- org para el blog privado
|
|
|
|
- org notes file: para tomar una nota rápida, no lo uso mucho
|
|
|
|
- org notes file: para tomar una nota rápida, no lo uso mucho
|
|
|
|
- phone org file: por si tomo notas en el teléfono, no lo uso mucho
|
|
|
|
- phone org file: por si tomo notas en el teléfono, no lo uso mucho
|
|
|
|
#+begin_src emacs-lisp
|
|
|
|
#+begin_src emacs-lisp
|
|
|
|
(global-set-key (kbd "<f5>") 'revert-buffer)
|
|
|
|
(global-set-key (kbd "<f5>") 'revert-buffer)
|
|
|
|
;; emacs configuration org file
|
|
|
|
;; emacs configuration org file
|
|
|
|
(global-set-key
|
|
|
|
(global-set-key
|
|
|
|
(kbd "\e\ec")
|
|
|
|
(kbd "\e\ec")
|
|
|
|
(lambda () (interactive) (find-file "~/.emacs.d/myconfig.org")))
|
|
|
|
(lambda () (interactive) (find-file "~/.emacs.d/myconfig.org")))
|
|
|
|
;; Main org file
|
|
|
|
;; Main org file
|
|
|
|
(global-set-key
|
|
|
|
(global-set-key
|
|
|
|
(kbd "\e\ei")
|
|
|
|
(kbd "\e\ei")
|
|
|
|
(lambda () (interactive) (find-file "~/Dropbox/orgfiles/i.org")))
|
|
|
|
(lambda () (interactive) (find-file "~/Dropbox/orgfiles/i.org")))
|
|
|
|
;; journal org file
|
|
|
|
;; journal org file
|
|
|
|
(global-set-key
|
|
|
|
(global-set-key
|
|
|
|
(kbd "\e\ej")
|
|
|
|
(kbd "\e\ej")
|
|
|
|
(lambda () (interactive) (find-file "~/Dropbox/orgfiles/journal.org")))
|
|
|
|
(lambda () (interactive) (find-file "~/Dropbox/orgfiles/journal.org")))
|
|
|
|
;; Notes file
|
|
|
|
;; Notes file
|
|
|
|
(global-set-key
|
|
|
|
(global-set-key
|
|
|
|
(kbd "\e\en")
|
|
|
|
(kbd "\e\en")
|
|
|
|
(lambda () (interactive) (find-file "~/Dropbox/orgfiles/notes.org")))
|
|
|
|
(lambda () (interactive) (find-file "~/Dropbox/orgfiles/notes.org")))
|
|
|
|
;; public blog org file
|
|
|
|
;; public blog org file
|
|
|
|
(global-set-key
|
|
|
|
(global-set-key
|
|
|
|
(kbd "\e\eb")
|
|
|
|
(kbd "\e\eb")
|
|
|
|
(lambda () (interactive) (find-file "~/Dropbox/orgfiles/b.org")))
|
|
|
|
(lambda () (interactive) (find-file "~/Dropbox/orgfiles/b.org")))
|
|
|
|
;; private blog file
|
|
|
|
;; private blog file
|
|
|
|
(global-set-key
|
|
|
|
(global-set-key
|
|
|
|
(kbd "\e\ep")
|
|
|
|
(kbd "\e\ep")
|
|
|
|
(lambda () (interactive) (find-file "~/work/repos/Personal/blog/comacero_priv/content-org/blog_privado.org")))
|
|
|
|
(lambda () (interactive) (find-file "~/work/repos/Personal/blog/comacero_priv/content-org/blog_privado.org")))
|
|
|
|
;; phone org file
|
|
|
|
;; phone org file
|
|
|
|
(global-set-key
|
|
|
|
(global-set-key
|
|
|
|
(kbd "\e\eh")
|
|
|
|
(kbd "\e\eh")
|
|
|
|
(lambda () (interactive) (find-file "~/share/Mob_orgzly/phone.org")))
|
|
|
|
(lambda () (interactive) (find-file "~/share/Mob_orgzly/phone.org")))
|
|
|
|
|
|
|
|
|
|
|
|
(global-set-key [C-tab] 'hippie-expand) ; expand
|
|
|
|
(global-set-key [C-tab] 'hippie-expand) ; expand
|
|
|
|
(global-set-key [C-kp-subtract] 'undo) ; [Undo]
|
|
|
|
(global-set-key [C-kp-subtract] 'undo) ; [Undo]
|
|
|
|
;; (global-set-key [C-kp-multiply] 'goto-line) ; old goto line
|
|
|
|
;; (global-set-key [C-kp-multiply] 'goto-line) ; old goto line
|
|
|
|
(global-set-key [C-kp-multiply] 'consult-goto-line) ; goto line
|
|
|
|
(global-set-key [C-kp-multiply] 'consult-goto-line) ; goto line
|
|
|
|
(global-set-key [C-kp-add] 'toggle-truncate-lines) ; truncate lines
|
|
|
|
(global-set-key [C-kp-add] 'toggle-truncate-lines) ; truncate lines
|
|
|
|
(global-set-key [C-kp-divide] 'delete-trailing-whitespace) ; delete trailing whitespace
|
|
|
|
(global-set-key [C-kp-divide] 'delete-trailing-whitespace) ; delete trailing whitespace
|
|
|
|
(global-set-key [C-kp-decimal] 'completion-at-point) ; complete at point
|
|
|
|
(global-set-key [C-kp-decimal] 'completion-at-point) ; complete at point
|
|
|
|
(global-set-key [C-M-prior] 'previous-buffer) ; previous-buffer
|
|
|
|
(global-set-key [C-M-prior] 'previous-buffer) ; previous-buffer
|
|
|
|
(global-set-key [C-M-next] 'next-buffer) ; next-buffer
|
|
|
|
(global-set-key [C-M-next] 'next-buffer) ; next-buffer
|
|
|
|
#+end_src
|
|
|
|
#+end_src
|
|
|
|
|
|
|
|
|
|
|
|
** Own map
|
|
|
|
** Own map
|
|
|
|
Defines own key map
|
|
|
|
Defines own key map
|
|
|
|
#+begin_src emacs-lisp
|
|
|
|
#+begin_src emacs-lisp
|
|
|
|
(define-prefix-command 'own-map)
|
|
|
|
(define-prefix-command 'own-map)
|
|
|
|
(global-set-key (kbd "C-ñ") 'own-map)
|
|
|
|
(global-set-key (kbd "C-ñ") 'own-map)
|
|
|
|
(define-key own-map (kbd "y") 'aya-create)
|
|
|
|
(define-key own-map (kbd "y") 'aya-create)
|
|
|
|
(define-key own-map (kbd "e") 'aya-expand)
|
|
|
|
(define-key own-map (kbd "e") 'aya-expand)
|
|
|
|
#+end_src
|
|
|
|
#+end_src
|
|
|
|
|
|
|
|
|
|
|
|
** General (a new binding system)
|
|
|
|
** General (a new binding system)
|
|
|
|
Have a look at [[https://github.com/noctuid/general.el#key-features][doc]]
|
|
|
|
Have a look at [[https://github.com/noctuid/general.el#key-features][doc]]
|
|
|
|
#+begin_src emacs-lisp
|
|
|
|
#+begin_src emacs-lisp
|
|
|
|
;; (use-package general)
|
|
|
|
;; (use-package general)
|
|
|
|
#+end_src
|
|
|
|
#+end_src
|
|
|
|
|
|
|
|
|
|
|
|
** Syntax highlight
|
|
|
|
** Syntax highlight
|
|
|
|
Set maximum colors
|
|
|
|
Set maximum colors
|
|
|
|
#+begin_src emacs-lisp
|
|
|
|
#+begin_src emacs-lisp
|
|
|
|
(cond ((fboundp 'global-font-lock-mode) ; Turn on font-lock (syntax highlighting)
|
|
|
|
(cond ((fboundp 'global-font-lock-mode) ; Turn on font-lock (syntax highlighting)
|
|
|
|
(global-font-lock-mode t) ; in all modes that support it
|
|
|
|
(global-font-lock-mode t) ; in all modes that support it
|
|
|
|
(setq font-lock-maximum-decoration t))) ; Maximum colors
|
|
|
|
(setq font-lock-maximum-decoration t))) ; Maximum colors
|
|
|
|
#+end_src
|
|
|
|
#+end_src
|
|
|
|
|
|
|
|
|
|
|
|
** Kill buffer quick
|
|
|
|
** Kill buffer quick
|
|
|
|
Kill current buffer without questions
|
|
|
|
Kill current buffer without questions
|
|
|
@ -208,43 +208,43 @@ See colors in emacs
|
|
|
|
#+end_src
|
|
|
|
#+end_src
|
|
|
|
|
|
|
|
|
|
|
|
** which-key
|
|
|
|
** which-key
|
|
|
|
Some help with composed hotkeys
|
|
|
|
Some help with composed hotkeys
|
|
|
|
#+begin_src emacs-lisp
|
|
|
|
#+begin_src emacs-lisp
|
|
|
|
(use-package which-key
|
|
|
|
(use-package which-key
|
|
|
|
:diminish
|
|
|
|
:diminish
|
|
|
|
:config
|
|
|
|
:config
|
|
|
|
(which-key-mode)
|
|
|
|
(which-key-mode)
|
|
|
|
(setq which-key-idle-delay 0.3)
|
|
|
|
(setq which-key-idle-delay 0.3)
|
|
|
|
)
|
|
|
|
)
|
|
|
|
#+end_src
|
|
|
|
#+end_src
|
|
|
|
|
|
|
|
|
|
|
|
** ace-windows
|
|
|
|
** ace-windows
|
|
|
|
To jump to different windows easily
|
|
|
|
To jump to different windows easily
|
|
|
|
#+begin_src emacs-lisp
|
|
|
|
#+begin_src emacs-lisp
|
|
|
|
(use-package ace-window
|
|
|
|
(use-package ace-window
|
|
|
|
:init
|
|
|
|
:init
|
|
|
|
(global-set-key [remap other-window] 'ace-window)
|
|
|
|
(global-set-key [remap other-window] 'ace-window)
|
|
|
|
(custom-set-faces
|
|
|
|
(custom-set-faces
|
|
|
|
'(aw-leading-char-face
|
|
|
|
'(aw-leading-char-face
|
|
|
|
((t (:inherit ace-jump-face-foreground :height 3.0)))))
|
|
|
|
((t (:inherit ace-jump-face-foreground :height 3.0)))))
|
|
|
|
)
|
|
|
|
)
|
|
|
|
#+end_src
|
|
|
|
#+end_src
|
|
|
|
|
|
|
|
|
|
|
|
** PCRE2el
|
|
|
|
** PCRE2el
|
|
|
|
Perl Compatible Regexes
|
|
|
|
Perl Compatible Regexes
|
|
|
|
#+begin_src emacs-lisp
|
|
|
|
#+begin_src emacs-lisp
|
|
|
|
(use-package pcre2el
|
|
|
|
(use-package pcre2el
|
|
|
|
:config
|
|
|
|
:config
|
|
|
|
(pcre-mode +1))
|
|
|
|
(pcre-mode +1))
|
|
|
|
#+end_src
|
|
|
|
#+end_src
|
|
|
|
|
|
|
|
|
|
|
|
** Enable narrowing (DANGER)
|
|
|
|
** Enable narrowing (DANGER)
|
|
|
|
C-x n ...
|
|
|
|
C-x n ...
|
|
|
|
#+begin_src emacs-lisp
|
|
|
|
#+begin_src emacs-lisp
|
|
|
|
(put 'narrow-to-defun 'disabled nil)
|
|
|
|
(put 'narrow-to-defun 'disabled nil)
|
|
|
|
(put 'narrow-to-page 'disabled nil)
|
|
|
|
(put 'narrow-to-page 'disabled nil)
|
|
|
|
(put 'narrow-to-region 'disabled nil)
|
|
|
|
(put 'narrow-to-region 'disabled nil)
|
|
|
|
#+end_src
|
|
|
|
#+end_src
|
|
|
|
|
|
|
|
|
|
|
|
** Insert-date
|
|
|
|
** Insert-date
|
|
|
|
#+begin_src emacs-lisp
|
|
|
|
#+begin_src emacs-lisp
|
|
|
@ -267,21 +267,21 @@ See colors in emacs
|
|
|
|
#+end_src
|
|
|
|
#+end_src
|
|
|
|
|
|
|
|
|
|
|
|
* doom-modeline
|
|
|
|
* doom-modeline
|
|
|
|
A fancy modeline. Remember to execute =M-x all-the-icons-install-fonts=
|
|
|
|
A fancy modeline. Remember to execute =M-x all-the-icons-install-fonts=
|
|
|
|
See [[http://sodaware.sdf.org/notes/emacs-daemon-doom-modeline-icons/][this]] for fixing icons in terminal
|
|
|
|
See [[http://sodaware.sdf.org/notes/emacs-daemon-doom-modeline-icons/][this]] for fixing icons in terminal
|
|
|
|
|
|
|
|
|
|
|
|
#+begin_src emacs-lisp
|
|
|
|
#+begin_src emacs-lisp
|
|
|
|
(use-package all-the-icons
|
|
|
|
(use-package all-the-icons
|
|
|
|
)
|
|
|
|
)
|
|
|
|
(use-package doom-modeline
|
|
|
|
(use-package doom-modeline
|
|
|
|
:init
|
|
|
|
:init
|
|
|
|
(doom-modeline-mode 1)
|
|
|
|
(doom-modeline-mode 1)
|
|
|
|
(setq doom-modeline-icon 1) ;; this fixes icons in emacs-client
|
|
|
|
(setq doom-modeline-icon 1) ;; this fixes icons in emacs-client
|
|
|
|
:custom
|
|
|
|
:custom
|
|
|
|
(doom-modeline-height 15)
|
|
|
|
(doom-modeline-height 15)
|
|
|
|
;;(doom-modeline-icon (display-graphic-p))
|
|
|
|
;;(doom-modeline-icon (display-graphic-p))
|
|
|
|
)
|
|
|
|
)
|
|
|
|
#+end_src
|
|
|
|
#+end_src
|
|
|
|
|
|
|
|
|
|
|
|
* color-theme
|
|
|
|
* color-theme
|
|
|
|
Get some colour in your life
|
|
|
|
Get some colour in your life
|
|
|
@ -328,219 +328,219 @@ Try =M-x consult-theme=
|
|
|
|
|
|
|
|
|
|
|
|
* Completion systems
|
|
|
|
* Completion systems
|
|
|
|
** Vertico (the choosed one)
|
|
|
|
** Vertico (the choosed one)
|
|
|
|
Have a look [[https://github.com/minad/vertico][here]]
|
|
|
|
Have a look [[https://github.com/minad/vertico][here]]
|
|
|
|
#+begin_src emacs-lisp
|
|
|
|
#+begin_src emacs-lisp
|
|
|
|
(use-package vertico
|
|
|
|
(use-package vertico
|
|
|
|
:init
|
|
|
|
:init
|
|
|
|
(vertico-mode +1)
|
|
|
|
(vertico-mode +1)
|
|
|
|
:config
|
|
|
|
:config
|
|
|
|
;; Different scroll margin
|
|
|
|
;; Different scroll margin
|
|
|
|
;; (setq vertico-scroll-margin 0)
|
|
|
|
;; (setq vertico-scroll-margin 0)
|
|
|
|
|
|
|
|
|
|
|
|
;; Show more candidates
|
|
|
|
;; Show more candidates
|
|
|
|
;; (setq vertico-count 20)
|
|
|
|
;; (setq vertico-count 20)
|
|
|
|
|
|
|
|
|
|
|
|
;; Grow and shrink the Vertico minibuffer
|
|
|
|
;; Grow and shrink the Vertico minibuffer
|
|
|
|
;; (setq vertico-resize t)
|
|
|
|
;; (setq vertico-resize t)
|
|
|
|
|
|
|
|
|
|
|
|
;; Optionally enable cycling for `vertico-next' and `vertico-previous'.
|
|
|
|
;; Optionally enable cycling for `vertico-next' and `vertico-previous'.
|
|
|
|
(setq vertico-cycle t)
|
|
|
|
(setq vertico-cycle t)
|
|
|
|
)
|
|
|
|
)
|
|
|
|
#+end_src
|
|
|
|
#+end_src
|
|
|
|
|
|
|
|
|
|
|
|
*** Orderless
|
|
|
|
*** Orderless
|
|
|
|
Have a look at [[https://github.com/oantolin/orderless][repo]]
|
|
|
|
Have a look at [[https://github.com/oantolin/orderless][repo]]
|
|
|
|
#+begin_src emacs-lisp
|
|
|
|
#+begin_src emacs-lisp
|
|
|
|
(use-package orderless
|
|
|
|
(use-package orderless
|
|
|
|
:init
|
|
|
|
:init
|
|
|
|
(icomplete-mode)
|
|
|
|
(icomplete-mode)
|
|
|
|
:custom
|
|
|
|
:custom
|
|
|
|
(completion-styles '(orderless))
|
|
|
|
(completion-styles '(orderless))
|
|
|
|
(completion-category-defaults nil)
|
|
|
|
(completion-category-defaults nil)
|
|
|
|
(completion-category-overrides '((file (styles partial-completion))))
|
|
|
|
(completion-category-overrides '((file (styles partial-completion))))
|
|
|
|
)
|
|
|
|
)
|
|
|
|
#+end_src
|
|
|
|
#+end_src
|
|
|
|
|
|
|
|
|
|
|
|
*** Marginalia
|
|
|
|
*** Marginalia
|
|
|
|
Check the [[https://github.com/minad/marginalia][doc]]
|
|
|
|
Check the [[https://github.com/minad/marginalia][doc]]
|
|
|
|
#+begin_src emacs-lisp
|
|
|
|
#+begin_src emacs-lisp
|
|
|
|
(use-package marginalia
|
|
|
|
(use-package marginalia
|
|
|
|
:init
|
|
|
|
:init
|
|
|
|
(marginalia-mode +1)
|
|
|
|
(marginalia-mode +1)
|
|
|
|
:bind
|
|
|
|
:bind
|
|
|
|
(; ("M-A" . marginalia-cycle) ;; Uncomment for global bind
|
|
|
|
(; ("M-A" . marginalia-cycle) ;; Uncomment for global bind
|
|
|
|
:map minibuffer-local-map
|
|
|
|
:map minibuffer-local-map
|
|
|
|
("M-A" . marginalia-cycle))
|
|
|
|
("M-A" . marginalia-cycle))
|
|
|
|
)
|
|
|
|
)
|
|
|
|
#+end_src
|
|
|
|
#+end_src
|
|
|
|
* Consult and Embark
|
|
|
|
* Consult and Embark
|
|
|
|
Consult is a collection of programs using emacs =completing-read=
|
|
|
|
Consult is a collection of programs using emacs =completing-read=
|
|
|
|
You must read [[https://github.com/minad/consult][the doc]]!
|
|
|
|
You must read [[https://github.com/minad/consult][the doc]]!
|
|
|
|
|
|
|
|
|
|
|
|
#+begin_src emacs-lisp
|
|
|
|
#+begin_src emacs-lisp
|
|
|
|
(use-package consult
|
|
|
|
(use-package consult
|
|
|
|
:bind (("C-c h" . consult-history)
|
|
|
|
:bind (("C-c h" . consult-history)
|
|
|
|
("C-c m" . consult-mode-command)
|
|
|
|
("C-c m" . consult-mode-command)
|
|
|
|
("C-c k" . consult-kmacro)
|
|
|
|
("C-c k" . consult-kmacro)
|
|
|
|
;; C-x bindings (ctl-x-map)
|
|
|
|
;; C-x bindings (ctl-x-map)
|
|
|
|
("C-s" . consult-line) ; orig. isearch-forward
|
|
|
|
("C-s" . consult-line) ; orig. isearch-forward
|
|
|
|
("C-c j" . consult-imenu)
|
|
|
|
("C-c j" . consult-imenu)
|
|
|
|
("C-x M-:" . consult-complex-command) ; orig. repeat-complex-command
|
|
|
|
("C-x M-:" . consult-complex-command) ; orig. repeat-complex-command
|
|
|
|
("C-x b" . consult-buffer) ; orig. switch-to-buffer
|
|
|
|
("C-x b" . consult-buffer) ; orig. switch-to-buffer
|
|
|
|
:map minibuffer-local-map
|
|
|
|
:map minibuffer-local-map
|
|
|
|
("C-r" . consult-history)
|
|
|
|
("C-r" . consult-history)
|
|
|
|
)
|
|
|
|
)
|
|
|
|
)
|
|
|
|
)
|
|
|
|
#+end_src
|
|
|
|
#+end_src
|
|
|
|
|
|
|
|
|
|
|
|
** Embark
|
|
|
|
** Embark
|
|
|
|
[[https://github.com/oantolin/embark][The doc]]
|
|
|
|
[[https://github.com/oantolin/embark][The doc]]
|
|
|
|
#+begin_src emacs-lisp
|
|
|
|
#+begin_src emacs-lisp
|
|
|
|
(use-package embark
|
|
|
|
(use-package embark
|
|
|
|
:bind
|
|
|
|
:bind
|
|
|
|
(("C-+" . embark-act) ;; pick some comfortable binding
|
|
|
|
(("C-+" . embark-act) ;; pick some comfortable binding
|
|
|
|
("C-;" . embark-dwim) ;; good alternative: M-.
|
|
|
|
("C-;" . embark-dwim) ;; good alternative: M-.
|
|
|
|
("C-h B" . embark-bindings)) ;; alternative for `describe-bindings'
|
|
|
|
("C-h B" . embark-bindings)) ;; alternative for `describe-bindings'
|
|
|
|
|
|
|
|
|
|
|
|
:init
|
|
|
|
:init
|
|
|
|
|
|
|
|
|
|
|
|
;; Optionally replace the key help with a completing-read interface
|
|
|
|
;; Optionally replace the key help with a completing-read interface
|
|
|
|
(setq prefix-help-command #'embark-prefix-help-command)
|
|
|
|
(setq prefix-help-command #'embark-prefix-help-command)
|
|
|
|
|
|
|
|
|
|
|
|
:config
|
|
|
|
:config
|
|
|
|
|
|
|
|
|
|
|
|
;; Hide the mode line of the Embark live/completions buffers
|
|
|
|
;; Hide the mode line of the Embark live/completions buffers
|
|
|
|
(add-to-list 'display-buffer-alist
|
|
|
|
(add-to-list 'display-buffer-alist
|
|
|
|
'("\\`\\*Embark Collect \\(Live\\|Completions\\)\\*"
|
|
|
|
'("\\`\\*Embark Collect \\(Live\\|Completions\\)\\*"
|
|
|
|
nil
|
|
|
|
nil
|
|
|
|
(window-parameters (mode-line-format . none))))
|
|
|
|
(window-parameters (mode-line-format . none))))
|
|
|
|
)
|
|
|
|
)
|
|
|
|
|
|
|
|
|
|
|
|
;; Consult users will also want the embark-consult package.
|
|
|
|
;; Consult users will also want the embark-consult package.
|
|
|
|
(use-package embark-consult
|
|
|
|
(use-package embark-consult
|
|
|
|
:after (embark consult)
|
|
|
|
:after (embark consult)
|
|
|
|
:demand t ; only necessary if you have the hook below
|
|
|
|
:demand t ; only necessary if you have the hook below
|
|
|
|
;; if you want to have consult previews as you move around an
|
|
|
|
;; if you want to have consult previews as you move around an
|
|
|
|
;; auto-updating embark collect buffer
|
|
|
|
;; auto-updating embark collect buffer
|
|
|
|
:hook
|
|
|
|
:hook
|
|
|
|
(embark-collect-mode . consult-preview-at-point-mode))
|
|
|
|
(embark-collect-mode . consult-preview-at-point-mode))
|
|
|
|
#+end_src
|
|
|
|
#+end_src
|
|
|
|
|
|
|
|
|
|
|
|
* Editor Enhancements
|
|
|
|
* Editor Enhancements
|
|
|
|
** ace-windows
|
|
|
|
** ace-windows
|
|
|
|
To jump to different windows easily
|
|
|
|
To jump to different windows easily
|
|
|
|
#+begin_src emacs-lisp
|
|
|
|
#+begin_src emacs-lisp
|
|
|
|
(use-package ace-window
|
|
|
|
(use-package ace-window
|
|
|
|
:ensure t
|
|
|
|
:ensure t
|
|
|
|
:init
|
|
|
|
:init
|
|
|
|
(global-set-key [remap other-window] 'ace-window)
|
|
|
|
(global-set-key [remap other-window] 'ace-window)
|
|
|
|
(custom-set-faces
|
|
|
|
(custom-set-faces
|
|
|
|
'(aw-leading-char-face
|
|
|
|
'(aw-leading-char-face
|
|
|
|
((t (:inherit ace-jump-face-foreground :height 3.0)))))
|
|
|
|
((t (:inherit ace-jump-face-foreground :height 3.0)))))
|
|
|
|
)
|
|
|
|
)
|
|
|
|
#+end_src
|
|
|
|
#+end_src
|
|
|
|
|
|
|
|
|
|
|
|
** ripgrep
|
|
|
|
** ripgrep
|
|
|
|
[[https://github.com/dajva/rg.el][rg repo]]
|
|
|
|
[[https://github.com/dajva/rg.el][rg repo]]
|
|
|
|
#+begin_src emacs-lisp
|
|
|
|
#+begin_src emacs-lisp
|
|
|
|
(use-package rg
|
|
|
|
(use-package rg
|
|
|
|
:bind
|
|
|
|
:bind
|
|
|
|
("C-c s" . rg-menu))
|
|
|
|
("C-c s" . rg-menu))
|
|
|
|
#+end_src
|
|
|
|
#+end_src
|
|
|
|
|
|
|
|
|
|
|
|
** Buffer management
|
|
|
|
** Buffer management
|
|
|
|
[[https://github.com/alphapapa/bufler.el][Bufler repo]]
|
|
|
|
[[https://github.com/alphapapa/bufler.el][Bufler repo]]
|
|
|
|
#+begin_src emacs-lisp
|
|
|
|
#+begin_src emacs-lisp
|
|
|
|
(use-package bufler
|
|
|
|
(use-package bufler
|
|
|
|
)
|
|
|
|
)
|
|
|
|
(defun slv/bufler-one-window (&optional force-refresh)
|
|
|
|
(defun slv/bufler-one-window (&optional force-refresh)
|
|
|
|
(interactive "P")
|
|
|
|
(interactive "P")
|
|
|
|
(bufler-list)
|
|
|
|
(bufler-list)
|
|
|
|
(delete-other-windows)
|
|
|
|
(delete-other-windows)
|
|
|
|
)
|
|
|
|
)
|
|
|
|
|
|
|
|
|
|
|
|
(global-set-key (kbd "C-x C-b") 'slv/bufler-one-window)
|
|
|
|
(global-set-key (kbd "C-x C-b") 'slv/bufler-one-window)
|
|
|
|
#+end_src
|
|
|
|
#+end_src
|
|
|
|
|
|
|
|
|
|
|
|
** Hydra
|
|
|
|
** Hydra
|
|
|
|
[[https://github.com/abo-abo/hydra][Hydra repo]]
|
|
|
|
[[https://github.com/abo-abo/hydra][Hydra repo]]
|
|
|
|
See [[https://readingworldmagazine.com/emacs/2020-02-27-emacs-hydra-set-up-code/][this]] someday
|
|
|
|
See [[https://readingworldmagazine.com/emacs/2020-02-27-emacs-hydra-set-up-code/][this]] someday
|
|
|
|
#+begin_src emacs-lisp
|
|
|
|
#+begin_src emacs-lisp
|
|
|
|
(use-package hydra)
|
|
|
|
(use-package hydra)
|
|
|
|
#+end_src
|
|
|
|
#+end_src
|
|
|
|
|
|
|
|
|
|
|
|
*** Hydra for toggle
|
|
|
|
*** Hydra for toggle
|
|
|
|
#+begin_src emacs-lisp
|
|
|
|
#+begin_src emacs-lisp
|
|
|
|
(global-set-key
|
|
|
|
(global-set-key
|
|
|
|
(kbd "<f6> t")
|
|
|
|
(kbd "<f6> t")
|
|
|
|
(defhydra hydra-toggle (:color pink)
|
|
|
|
(defhydra hydra-toggle (:color pink)
|
|
|
|
"
|
|
|
|
"
|
|
|
|
_a_ abbrev-mode: %`abbrev-mode
|
|
|
|
_a_ abbrev-mode: %`abbrev-mode
|
|
|
|
_d_ debug-on-error: %`debug-on-error
|
|
|
|
_d_ debug-on-error: %`debug-on-error
|
|
|
|
_f_ auto-fill-mode: %`auto-fill-function
|
|
|
|
_f_ auto-fill-mode: %`auto-fill-function
|
|
|
|
_l_ disp-line-num %`display-line-numbers-mode
|
|
|
|
_l_ disp-line-num %`display-line-numbers-mode
|
|
|
|
_s_ flyspell-mode: %`flyspell-mode
|
|
|
|
_s_ flyspell-mode: %`flyspell-mode
|
|
|
|
_t_ truncate-lines: %`truncate-lines
|
|
|
|
_t_ truncate-lines: %`truncate-lines
|
|
|
|
_w_ whitespace-mode: %`global-whitespace-mode
|
|
|
|
_w_ whitespace-mode: %`global-whitespace-mode
|
|
|
|
"
|
|
|
|
"
|
|
|
|
("a" abbrev-mode nil)
|
|
|
|
("a" abbrev-mode nil)
|
|
|
|
("d" toggle-debug-on-error nil)
|
|
|
|
("d" toggle-debug-on-error nil)
|
|
|
|
("f" auto-fill-mode nil)
|
|
|
|
("f" auto-fill-mode nil)
|
|
|
|
("l" display-line-numbers-mode nil)
|
|
|
|
("l" display-line-numbers-mode nil)
|
|
|
|
("s" flyspell-mode nil)
|
|
|
|
("s" flyspell-mode nil)
|
|
|
|
("t" toggle-truncate-lines nil)
|
|
|
|
("t" toggle-truncate-lines nil)
|
|
|
|
("w" whitespace-mode nil)
|
|
|
|
("w" whitespace-mode nil)
|
|
|
|
("q" nil "quit"))
|
|
|
|
("q" nil "quit"))
|
|
|
|
)
|
|
|
|
)
|
|
|
|
#+end_src
|
|
|
|
#+end_src
|
|
|
|
|
|
|
|
|
|
|
|
*** Hydra for navigation
|
|
|
|
*** Hydra for navigation
|
|
|
|
#+begin_src emacs-lisp
|
|
|
|
#+begin_src emacs-lisp
|
|
|
|
(global-set-key
|
|
|
|
(global-set-key
|
|
|
|
(kbd "<f6> j")
|
|
|
|
(kbd "<f6> j")
|
|
|
|
(defhydra gotoline
|
|
|
|
(defhydra gotoline
|
|
|
|
(:pre (linum-mode 1)
|
|
|
|
(:pre (linum-mode 1)
|
|
|
|
:post (linum-mode -1))
|
|
|
|
:post (linum-mode -1))
|
|
|
|
"goto"
|
|
|
|
"goto"
|
|
|
|
("t" (lambda () (interactive)(move-to-window-line-top-bottom 0)) "top" :column "Window")
|
|
|
|
("t" (lambda () (interactive)(move-to-window-line-top-bottom 0)) "top" :column "Window")
|
|
|
|
("b" (lambda () (interactive)(move-to-window-line-top-bottom -1)) "bottom")
|
|
|
|
("b" (lambda () (interactive)(move-to-window-line-top-bottom -1)) "bottom")
|
|
|
|
("m" (lambda () (interactive)(move-to-window-line-top-bottom)) "middle")
|
|
|
|
("m" (lambda () (interactive)(move-to-window-line-top-bottom)) "middle")
|
|
|
|
("c" recenter-top-bottom "recenter")
|
|
|
|
("c" recenter-top-bottom "recenter")
|
|
|
|
("s" (lambda () (interactive)(beginning-of-buffer)) "begin" :column "Buffer")
|
|
|
|
("s" (lambda () (interactive)(beginning-of-buffer)) "begin" :column "Buffer")
|
|
|
|
("e" (lambda () (interactive)(end-of-buffer)) "end")
|
|
|
|
("e" (lambda () (interactive)(end-of-buffer)) "end")
|
|
|
|
("n" next-line "down" :column "Line")
|
|
|
|
("n" next-line "down" :column "Line")
|
|
|
|
("p" (lambda () (interactive) (forward-line -1)) "up")
|
|
|
|
("p" (lambda () (interactive) (forward-line -1)) "up")
|
|
|
|
("g" goto-line "consult-goto-line")
|
|
|
|
("g" goto-line "consult-goto-line")
|
|
|
|
("i" consult-imenu "cons-imenu" :column "Header")
|
|
|
|
("i" consult-imenu "cons-imenu" :column "Header")
|
|
|
|
("o" consult-org-heading "cons-org-head")
|
|
|
|
("o" consult-org-heading "cons-org-head")
|
|
|
|
("q" nil "quit")
|
|
|
|
("q" nil "quit")
|
|
|
|
)
|
|
|
|
)
|
|
|
|
)
|
|
|
|
)
|
|
|
|
#+end_src
|
|
|
|
#+end_src
|
|
|
|
|
|
|
|
|
|
|
|
** avy
|
|
|
|
** avy
|
|
|
|
Quick navigation to words
|
|
|
|
Quick navigation to words
|
|
|
|
#+begin_src emacs-lisp
|
|
|
|
#+begin_src emacs-lisp
|
|
|
|
(use-package avy
|
|
|
|
(use-package avy
|
|
|
|
:config
|
|
|
|
:config
|
|
|
|
(avy-setup-default)
|
|
|
|
(avy-setup-default)
|
|
|
|
:bind(
|
|
|
|
:bind(
|
|
|
|
:map own-map
|
|
|
|
:map own-map
|
|
|
|
("jj" . avy-goto-char)
|
|
|
|
("jj" . avy-goto-char)
|
|
|
|
("j2" . avy-goto-char-2)
|
|
|
|
("j2" . avy-goto-char-2)
|
|
|
|
("jw" . avy-goto-word-1)
|
|
|
|
("jw" . avy-goto-word-1)
|
|
|
|
("jl" . avy-goto-line)
|
|
|
|
("jl" . avy-goto-line)
|
|
|
|
)
|
|
|
|
)
|
|
|
|
)
|
|
|
|
)
|
|
|
|
#+end_src
|
|
|
|
#+end_src
|
|
|
|
|
|
|
|
|
|
|
|
** iedit
|
|
|
|
** iedit
|
|
|
|
[[https://github.com/victorhge/iedit][iedit]]: Interactive edition of all ocurrences of X
|
|
|
|
[[https://github.com/victorhge/iedit][iedit]]: Interactive edition of all ocurrences of X
|
|
|
|
#+begin_src emacs-lisp
|
|
|
|
#+begin_src emacs-lisp
|
|
|
|
(use-package iedit
|
|
|
|
(use-package iedit
|
|
|
|
:bind
|
|
|
|
:bind
|
|
|
|
("C-ç" . iedit-mode))
|
|
|
|
("C-ç" . iedit-mode))
|
|
|
|
#+end_src
|
|
|
|
#+end_src
|
|
|
|
|
|
|
|
|
|
|
|
* Project management with projectile
|
|
|
|
* Project management with projectile
|
|
|
|
- [[https://github.com/bbatsov/projectile][Projectile in github]]
|
|
|
|
- [[https://github.com/bbatsov/projectile][Projectile in github]]
|
|
|
@ -560,70 +560,70 @@ Quick navigation to words
|
|
|
|
- [[https://github.com/magit/magit][magit]] interface to git from emacs (there are a lot of tutos)
|
|
|
|
- [[https://github.com/magit/magit][magit]] interface to git from emacs (there are a lot of tutos)
|
|
|
|
- [[https://github.com/emacsorphanage/git-gutter][git-gutter]] See lines changed in buffer edited
|
|
|
|
- [[https://github.com/emacsorphanage/git-gutter][git-gutter]] See lines changed in buffer edited
|
|
|
|
- [[https://github.com/emacsmirror/git-timemachine][git-time-machine]] Visit previous git versions of edited buffer
|
|
|
|
- [[https://github.com/emacsmirror/git-timemachine][git-time-machine]] Visit previous git versions of edited buffer
|
|
|
|
#+begin_src emacs-lisp
|
|
|
|
#+begin_src emacs-lisp
|
|
|
|
;; dirty hack to avoid problem when pushing
|
|
|
|
;; dirty hack to avoid problem when pushing
|
|
|
|
(setenv "SSH_AUTH_SOCK" "/run/user/1000/keyring/ssh")
|
|
|
|
(setenv "SSH_AUTH_SOCK" "/run/user/1000/keyring/ssh")
|
|
|
|
|
|
|
|
|
|
|
|
(use-package magit
|
|
|
|
|
|
|
|
:bind
|
|
|
|
|
|
|
|
("C-x g" . magit-status)
|
|
|
|
|
|
|
|
:config
|
|
|
|
|
|
|
|
(setq magit-status-margin
|
|
|
|
|
|
|
|
'(t "%Y-%m-%d %H:%M " magit-log-margin-width t 18))
|
|
|
|
|
|
|
|
)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
(use-package git-gutter
|
|
|
|
(use-package magit
|
|
|
|
:init
|
|
|
|
:bind
|
|
|
|
(global-git-gutter-mode +1)
|
|
|
|
("C-x g" . magit-status)
|
|
|
|
)
|
|
|
|
:config
|
|
|
|
(defhydra hydra-git-gutter (:body-pre (git-gutter-mode 1)
|
|
|
|
(setq magit-status-margin
|
|
|
|
:hint nil)
|
|
|
|
'(t "%Y-%m-%d %H:%M " magit-log-margin-width t 18))
|
|
|
|
"
|
|
|
|
)
|
|
|
|
Git gutter:
|
|
|
|
|
|
|
|
_j_: next hunk _s_tage hunk _q_uit
|
|
|
|
(use-package git-gutter
|
|
|
|
_k_: previous hunk _r_evert hunk _Q_uit and deactivate git-gutter
|
|
|
|
:init
|
|
|
|
^ ^ _p_opup hunk
|
|
|
|
(global-git-gutter-mode +1)
|
|
|
|
_h_: first hunk
|
|
|
|
)
|
|
|
|
_l_: last hunk set start _R_evision
|
|
|
|
(defhydra hydra-git-gutter (:body-pre (git-gutter-mode 1)
|
|
|
|
"
|
|
|
|
:hint nil)
|
|
|
|
("j" git-gutter:next-hunk)
|
|
|
|
"
|
|
|
|
("k" git-gutter:previous-hunk)
|
|
|
|
Git gutter:
|
|
|
|
("h" (progn (goto-char (point-min))
|
|
|
|
_j_: next hunk _s_tage hunk _q_uit
|
|
|
|
(git-gutter:next-hunk 1)))
|
|
|
|
_k_: previous hunk _r_evert hunk _Q_uit and deactivate git-gutter
|
|
|
|
("l" (progn (goto-char (point-min))
|
|
|
|
^ ^ _p_opup hunk
|
|
|
|
(git-gutter:previous-hunk 1)))
|
|
|
|
_h_: first hunk
|
|
|
|
("s" git-gutter:stage-hunk)
|
|
|
|
_l_: last hunk set start _R_evision
|
|
|
|
("r" git-gutter:revert-hunk)
|
|
|
|
"
|
|
|
|
("p" git-gutter:popup-hunk)
|
|
|
|
("j" git-gutter:next-hunk)
|
|
|
|
("R" git-gutter:set-start-revision)
|
|
|
|
("k" git-gutter:previous-hunk)
|
|
|
|
("q" nil :color blue)
|
|
|
|
("h" (progn (goto-char (point-min))
|
|
|
|
("Q" (progn (git-gutter-mode -1)
|
|
|
|
(git-gutter:next-hunk 1)))
|
|
|
|
;; git-gutter-fringe doesn't seem to
|
|
|
|
("l" (progn (goto-char (point-min))
|
|
|
|
;; clear the markup right away
|
|
|
|
(git-gutter:previous-hunk 1)))
|
|
|
|
(sit-for 0.1)
|
|
|
|
("s" git-gutter:stage-hunk)
|
|
|
|
(git-gutter:clear))
|
|
|
|
("r" git-gutter:revert-hunk)
|
|
|
|
:color blue))
|
|
|
|
("p" git-gutter:popup-hunk)
|
|
|
|
(global-set-key (kbd "M-g M-g") 'hydra-git-gutter/body)
|
|
|
|
("R" git-gutter:set-start-revision)
|
|
|
|
|
|
|
|
("q" nil :color blue)
|
|
|
|
(use-package git-timemachine
|
|
|
|
("Q" (progn (git-gutter-mode -1)
|
|
|
|
)
|
|
|
|
;; git-gutter-fringe doesn't seem to
|
|
|
|
#+end_src
|
|
|
|
;; clear the markup right away
|
|
|
|
|
|
|
|
(sit-for 0.1)
|
|
|
|
|
|
|
|
(git-gutter:clear))
|
|
|
|
|
|
|
|
:color blue))
|
|
|
|
|
|
|
|
(global-set-key (kbd "M-g M-g") 'hydra-git-gutter/body)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
(use-package git-timemachine
|
|
|
|
|
|
|
|
)
|
|
|
|
|
|
|
|
#+end_src
|
|
|
|
|
|
|
|
|
|
|
|
* yasnippet
|
|
|
|
* yasnippet
|
|
|
|
- [[https://github.com/joaotavora/yasnippet][yasnippet]] (there are many tutorials)
|
|
|
|
- [[https://github.com/joaotavora/yasnippet][yasnippet]] (there are many tutorials)
|
|
|
|
- [[https://github.com/abo-abo/auto-yasnippet][auto-yasnippet]] (disposable snippets)
|
|
|
|
- [[https://github.com/abo-abo/auto-yasnippet][auto-yasnippet]] (disposable snippets)
|
|
|
|
- [[https://github.com/AndreaCrotti/yasnippet-snippets][yasnippets-snippets]]
|
|
|
|
- [[https://github.com/AndreaCrotti/yasnippet-snippets][yasnippets-snippets]]
|
|
|
|
Place your own snippets on =~/.cache/emacs/etc/yasnippet/snippets=
|
|
|
|
Place your own snippets on =~/.cache/emacs/etc/yasnippet/snippets=
|
|
|
|
#+begin_src emacs-lisp
|
|
|
|
#+begin_src emacs-lisp
|
|
|
|
(use-package yasnippet
|
|
|
|
(use-package yasnippet
|
|
|
|
:init
|
|
|
|
:init
|
|
|
|
(yas-global-mode 1)
|
|
|
|
(yas-global-mode 1)
|
|
|
|
)
|
|
|
|
)
|
|
|
|
(use-package auto-yasnippet
|
|
|
|
(use-package auto-yasnippet
|
|
|
|
)
|
|
|
|
)
|
|
|
|
(use-package yasnippet-snippets
|
|
|
|
(use-package yasnippet-snippets
|
|
|
|
)
|
|
|
|
)
|
|
|
|
#+end_src
|
|
|
|
#+end_src
|
|
|
|
|
|
|
|
|
|
|
|
* company
|
|
|
|
* company
|
|
|
|
Autocompletion with [[https://company-mode.github.io/][company]]
|
|
|
|
Autocompletion with [[https://company-mode.github.io/][company]]
|
|
|
|