Bankrupt: Olivetti, kill buffer bindings, vterm, dirvish, company/lsp

This commit is contained in:
Joseph Ferano 2022-08-23 22:14:03 +07:00
parent d7d4eaed09
commit 329e6863f7

View File

@ -65,6 +65,13 @@ Prioritize old byte-compiled source files over newer sources. It saves us a litt
#+begin_src emacs-lisp :tangle ./early-init.el #+begin_src emacs-lisp :tangle ./early-init.el
(setq load-prefer-newer nil) (setq load-prefer-newer nil)
(setq safe-local-variable-values
'((eval add-hook 'after-save-hook
'(lambda nil
(org-babel-tangle))
nil t)))
#+end_src #+end_src
*** UTF-8 Support *** UTF-8 Support
#+begin_src emacs-lisp :tangle ./early-init.el #+begin_src emacs-lisp :tangle ./early-init.el
@ -121,7 +128,6 @@ literate file.
#+begin_src emacs-lisp #+begin_src emacs-lisp
(setq custom-file (expand-file-name "custom.el" user-emacs-directory)) (setq custom-file (expand-file-name "custom.el" user-emacs-directory))
(load custom-file t) (load custom-file t)
#+end_src #+end_src
This avoids those annoying *#backup#* files that get added and eventually slow down loading the file again. This avoids those annoying *#backup#* files that get added and eventually slow down loading the file again.
@ -141,8 +147,14 @@ This avoids those annoying *#backup#* files that get added and eventually slow d
kept-new-versions 6 kept-new-versions 6
kept-old-versions 2 kept-old-versions 2
version-control t) version-control t)
(global-set-key (kbd "C-x k") #'kill-this-buffer)
(global-set-key (kbd "C-x M-k") #'kill-buffer)
#+END_SRC #+END_SRC
** Visuals ** Visuals
*** 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
@ -162,6 +174,40 @@ Use Dashboard.el. First load `all-the-icons` for nicer rendering
(add-hook 'dashboard-mode-hook (lambda () (setq-local line-spacing 12))) (add-hook 'dashboard-mode-hook (lambda () (setq-local line-spacing 12)))
#+end_src #+end_src
*** Olivetti
#+begin_src emacs-lisp
(straight-use-package 'olivetti)
(setq olivetti-minimum-body-width 100)
#+end_src
*** Themes
Simple functions to remember the last chosen theme.
#+begin_src emacs-lisp
(straight-use-package 'doom-themes)
(setq custom-safe-themes t)
(defun joe/save-current-theme ()
(let ((filename (expand-file-name "data" user-emacs-directory)))
(with-temp-buffer
(print `((last-used-theme . ,custom-enabled-themes)) (current-buffer))
(if (file-writable-p filename)
(write-file filename)
(message (format "Cannot save themes because %s is not writable" filename))))))
(add-hook 'kill-emacs-hook #'joe/save-current-theme)
(let ((filename (expand-file-name "data" user-emacs-directory)))
(if (file-readable-p filename)
(let ((theme-data (with-temp-buffer
(insert-file-contents filename)
(buffer-string))))
(mapc 'load-theme (cdr (car (read theme-data)))))))
#+end_src
*** Other
Setup other stuff Setup other stuff
#+begin_src emacs-lisp #+begin_src emacs-lisp
@ -194,11 +240,6 @@ Setup other stuff
(setq inhibit-startup-screen t) (setq inhibit-startup-screen t)
(straight-use-package 'doom-themes)
(setq custom-safe-themes t)
;; (load-theme 'doom-vibrant t)
(load-theme 'doom-one-light t)
(straight-use-package 'ligature) (straight-use-package 'ligature)
(global-ligature-mode) (global-ligature-mode)
@ -239,10 +280,13 @@ Setup other stuff
(org-indent-mode))) (org-indent-mode)))
#+end_src #+end_src
** VEMCO (Vertico Embark Marginalia Consult Orderless) ** VEMCO
Vertico Embark Marginalia Consult Orderless Vertico Embark Marginalia Consult Orderless
#+begin_src emacs-lisp #+begin_src emacs-lisp
(require 'all-the-icons)
(straight-use-package 'all-the-icons-completion)
(straight-use-package '(vertico :files (:defaults "extensions/*") :includes (vertico-directory))) (straight-use-package '(vertico :files (:defaults "extensions/*") :includes (vertico-directory)))
;; :bind (:map vertico-map ;; :bind (:map vertico-map
;; ("\M-G" . vertico-multiform-mode) ;; ("\M-G" . vertico-multiform-mode)
@ -262,30 +306,55 @@ Vertico Embark Marginalia Consult Orderless
(straight-use-package 'embark-consult) (straight-use-package 'embark-consult)
(straight-use-package 'marginalia) (straight-use-package 'marginalia)
(marginalia-mode)
(setq marginalia-annotators '(marginalia-annotators-heavy marginalia-annotators-light nil)) (setq marginalia-annotators '(marginalia-annotators-heavy marginalia-annotators-light nil))
(marginalia-mode)
(require 'all-the-icons-completion)
(all-the-icons-completion-mode)
(all-the-icons-completion-marginalia-setup)
(add-hook 'marginalia-mode-hook #'all-the-icons-completion-marginalia-setup)
(straight-use-package 'consult) (straight-use-package 'consult)
(global-set-key (kbd "C-x b") #'consult-buffer)
(straight-use-package 'orderless) (straight-use-package '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
** Helpful
#+begin_src emacs-lisp
(straight-use-package 'helpful)
(global-set-key (kbd "C-h f") #'helpful-callable)
(global-set-key (kbd "C-h v") #'helpful-variable)
(global-set-key (kbd "C-h k") #'helpful-key)
(global-set-key (kbd "C-c C-d") #'helpful-at-point)
(global-set-key (kbd "C-h F") #'helpful-function)
(global-set-key (kbd "C-h C") #'helpful-command)
#+end_src
** Dirvish/Dired ** Dirvish/Dired
#+begin_src emacs-lisp #+begin_src emacs-lisp
(straight-use-package 'dirvish) (straight-use-package 'dirvish)
(dirvish-override-dired-mode) (dirvish-override-dired-mode)
(setq delete-by-moving-to-trash t) (setq delete-by-moving-to-trash t)
(setq dired-dwim-target t) (setq dired-dwim-target t)
(dirvish-define-preview exa (file) (dirvish-define-preview exa (file)
"Use `exa' to generate directory preview." "Use `exa' to generate directory preview."
:require ("exa") ; tell Dirvish to check if we have the executable :require ("exa") ; tell Dirvish to check if we have the executable
(when (file-directory-p file) ; we only interest in directories here (when (file-directory-p file) ; we only interest in directories here
`(shell . ("exa" "-H" "--icons" "--color=always" "--no-user" "-al" "--group-directories-first" ,file)))) `(shell . ("exa" "-H" "--icons" "--color=always" "--no-user" "-al" "--group-directories-first" ,file))))
(add-to-list 'dirvish-preview-dispatchers 'exa) (add-to-list 'dirvish-preview-dispatchers 'exa)
(setq dired-listing-switches "-l --almost-all --human-readable --time-style=long-iso --group-directories-first --no-group") (setq dired-listing-switches "-l --almost-all --human-readable --time-style=long-iso --group-directories-first --no-group")
(setq dirvish-preview-dispatchers (cl-substitute 'pdf-preface 'pdf dirvish-preview-dispatchers)) (setq dirvish-preview-dispatchers (cl-substitute 'pdf-preface 'pdf dirvish-preview-dispatchers))
(define-key global-map (kbd "M--") #'dirvish)
(defun joe/dirvish-find-directory (dir)
(interactive "FDirvish Directory:")
(dirvish-dwim dir))
(define-key global-map (kbd "C-x d") #'dirvish)
(define-key global-map (kbd "C-x C-d") #'joe/dirvish-find-directory)
#+end_src #+end_src
** Terminals/Shells ** Terminals/Shells
@ -295,6 +364,11 @@ Vertico Embark Marginalia Consult Orderless
(setq vterm-timer-delay 0.01) (setq vterm-timer-delay 0.01)
(setq vterm-buffer-name-string "VTerm - %s") (setq vterm-buffer-name-string "VTerm - %s")
(setq vterm-max-scrollback 100000) (setq vterm-max-scrollback 100000)
(straight-use-package 'multi-vterm)
(define-key global-map (kbd "C-c t v") #'vterm-other-window)
(define-key global-map (kbd "C-c t t") #'multi-vterm)
(define-key global-map (kbd "C-c t p") #'multi-vterm-prev)
(define-key global-map (kbd "C-c t n") #'multi-vterm-next)
#+end_src #+end_src
@ -330,8 +404,8 @@ Emacs is an great operating system, if only it had a good text editor...
("l" text-scale-decrease "out") ("l" text-scale-decrease "out")
("d" View-scroll-half-page-forward "half page down") ("d" View-scroll-half-page-forward "half page down")
("u" View-scroll-half-page-backward "half page up") ("u" View-scroll-half-page-backward "half page up")
("y" View-scroll-line-forward "line down") ("e" View-scroll-line-forward "line down")
("e" View-scroll-line-backward "line up") ("y" View-scroll-line-backward "line up")
) )
#+end_src #+end_src
@ -492,6 +566,82 @@ Emacs is an great operating system, if only it had a good text editor...
("C-d" scroll-up-command :first '(deactivate-mark)))) ("C-d" scroll-up-command :first '(deactivate-mark))))
(add-hook 'after-init-hook 'my/kakoune-setup) (add-hook 'after-init-hook 'my/kakoune-setup)
#+end_src
** IDE Features
*** C
#+begin_src emacs-lisp
;; (straight-use-package 'yasnippet)
(straight-use-package 'markdown-mode)
(straight-use-package 'lsp-mode)
;; (straight-use-package 'eglot)
;; (setq completion-in-region-function (kind-icon-enhance-completion completion-in-region-function))
(setq completion-in-region-function #'consult-completion-in-region)
(global-set-key [remap dabbrev-expand] 'hippie-expand)
;; (straight-use-package 'cape)
;; (add-to-list 'completion-at-point-functions #'cape-symbol)
;; (add-to-list 'completion-at-point-functions #'cape-file)
;; (add-to-list 'completion-at-point-functions #'cape-dabbrev)
;; (straight-use-package 'kind-icon)
;; (require 'kind-icon)
(straight-use-package 'company)
(require 'company)
(setq company-idle-delay 0
company-tooltip-idle-delay 10
company-require-match nil
company-frontends '(company-preview-frontend company-echo-metadata-frontend)
;; company-frontends '(company-text-icons-margin company-echo-metadata-frontend)
company-backends '((company-capf company-files)))
(setq company-transformers '(company-sort-by-occurrence))
;; (setq company-transformers '())
(add-to-list 'completion-at-point-functions #'elisp-completion-at-point)
(with-eval-after-load 'company
(define-key company-active-map (kbd "C-f") #'company-complete-selection)
(define-key company-active-map [tab] #'company-complete-common-or-cycle)
(define-key company-active-map (kbd "<backtab>") (lambda () (interactive) (company-complete-common-or-cycle -1))))
(global-company-mode)
;; (delete 'elisp-completion-at-point completion-at-point-functions)
;; (delete 'cape-symbol completion-at-point-functions)
;; (straight-use-package 'corfu)
;; (global-corfu-mode)
;; (setq
;; corfu-cycle t ;; Enable cycling for `corfu-next/previous'
;; corfu-auto t ;; Enable auto completion
;; corfu-separator ?\s ;; Orderless field separator
;; corfu-quit-at-boundary nil ;; Never quit at completion boundary
;; corfu-quit-no-match nil ;; Never quit, even if there is no match
;; corfu-preview-current t ;; Disable current candidate preview
;; corfu-preselect-first t ;; Disable candidate preselection
;; corfu-on-exact-match nil ;; Configure handling of exact matches
;; corfu-echo-documentation t ;; Disable documentation in the echo area
;; corfu-scroll-margin 5) ;; Use scroll margin
;; (setq corfu-preview-current t)
;; (straight-use-package
;; (setq-local corfu-auto t
;; corfu-auto-delay 0.1
;; corfu-auto-prefix 1
;; completion-styles '(orderless basic))
;; (global-set-key (kbd "<tab>")
;; (lambda ()
;; (interactive)
;; (let ((company-tooltip-idle-delay 0.0))
;; (company-complete)
;; (and company-candidates
;; (company-call-frontends 'post-command)))))
;; Enable fancy-dabbrev previews everywhere:
;; (global-fancy-dabbrev-mode)
;; (global-set-key [tab] #'fancy-dabbrev-expand-or-indent)
;; (global-set-key (kbd "<backtab>") 'fancy-dabbrev-backward)
;; (require 'yasnippet)
;; (yas-global-mode 1)
#+end_src #+end_src
** Magit ** Magit