From e063675ec77d9f2269f5f49a9bf72dfa30d8c0f4 Mon Sep 17 00:00:00 2001 From: Joseph Ferano Date: Thu, 25 Aug 2022 00:02:59 +0700 Subject: [PATCH] EBR: save-place, winner, popper, rotate, consult keys, make keys --- .emacs.bankruptcy/init.org | 127 ++++++++++++++++++++++++++----------- .emacs.vanilla/init.el | 1 + 2 files changed, 91 insertions(+), 37 deletions(-) diff --git a/.emacs.bankruptcy/init.org b/.emacs.bankruptcy/init.org index a04abbc..ed25de6 100644 --- a/.emacs.bankruptcy/init.org +++ b/.emacs.bankruptcy/init.org @@ -73,10 +73,18 @@ Prioritize old byte-compiled source files over newer sources. It saves us a litt nil t))) #+end_src + *** UTF-8 Support #+begin_src emacs-lisp :tangle ./early-init.el -(set-language-environment "UTF-8") (setq default-input-method nil) +(setq utf-translate-cjk-mode nil) ; disable CJK coding/encoding (Chinese/Japanese/Korean characters) +(set-language-environment 'utf-8) +(set-keyboard-coding-system 'utf-8-mac) ; For old Carbon emacs on OS X only +(setq locale-coding-system 'utf-8) +(set-default-coding-systems 'utf-8) +(set-terminal-coding-system 'utf-8) +(set-selection-coding-system 'utf-8) +(prefer-coding-system 'utf-8) ;;; early-init.el ends here #+end_src @@ -114,6 +122,7 @@ need to benchmark slow init times later. #+end_src ** Misc Stuff + #+begin_SRC emacs-lisp (setq default-directory "/home/joe/") (setq vc-follow-symlinks t) ; Visit real file when editing a symlink without prompting. @@ -148,6 +157,7 @@ This avoids those annoying *#backup#* files that get added and eventually slow d kept-old-versions 2 version-control t) #+END_SRC + ** Visuals *** Dashboard @@ -175,6 +185,7 @@ Use Dashboard.el. First load `all-the-icons` for nicer rendering #+begin_src emacs-lisp (straight-use-package 'olivetti) (setq olivetti-minimum-body-width 100) +(global-set-key (kbd "C-x x o") 'olivetti-mode) #+end_src *** Themes @@ -202,6 +213,7 @@ Simple functions to remember the last chosen theme. (buffer-string)))) (mapc 'load-theme (cdr (car (read theme-data))))))) #+end_src + *** Other Setup other stuff @@ -225,14 +237,9 @@ Setup other stuff (global-hl-line-mode +1) (column-number-mode +1) -;; (scroll-bar-mode -1) -;; (tool-bar-mode -1) -;; (menu-bar-mode -1) -;; (tooltip-mode -1) - (modify-all-frames-parameters '((right-divider-width . 5) - (internal-border-width . 10))) + (internal-border-width . 12))) (setq inhibit-startup-screen t) @@ -269,15 +276,18 @@ Setup other stuff (add-hook 'ibuffer-mode-hook #'all-the-icons-ibuffer-mode) (global-set-key [remap list-buffers] 'ibuffer) (global-set-key (kbd "C-x B") 'ibuffer) -(global-set-key (kbd "C-x C-b") 'consult-project-buffer) -(global-set-key (kbd "C-x C-M-b") 'consult-buffer) +(global-set-key (kbd "C-x b") 'consult-project-buffer) +(global-set-key (kbd "C-x C-b") 'consult-buffer) (defun joe/switch-other-buffer () "Switch to other buffer" (interactive) (switch-to-buffer (other-buffer))) -(global-set-key (kbd "C-x b") 'joe/switch-other-buffer) +(global-set-key (kbd "C-x l") 'joe/switch-other-buffer) + +(save-place-mode t) +(setq save-place-file (expand-file-name "places" user-emacs-directory)) #+end_src The theme of `C-x 4` bindings is that they operate on other windows, so this function matches that behavior. @@ -293,22 +303,49 @@ The theme of `C-x 4` bindings is that they operate on other windows, so this fun #+end_src +** Windows +#+begin_src emacs-lisp +(require 'winner) +(winner-mode t) +(straight-use-package 'rotate) +(straight-use-package 'popper) +(require 'popper) +(setq popper-reference-buffers + '("\\*compilation\\*" compilation-mode + "^\\*vterm\\*" vterm-mode)) +(setq popper-window-height 0.35) +(popper-mode t) +(global-set-key (kbd "C-`") 'popper-toggle-latest) +(global-set-key (kbd "M-`") 'popper-cycle) +(global-set-key (kbd "C-M-`") 'popper-toggle-type) +(require 'popper-echo) +(popper-echo-mode t) + +;; (setq popper-display-control nil) +;; (setq popper-display-function #'display-buffer-in-child-frame) +#+end_src + ** Org Mode #+begin_src emacs-lisp (straight-use-package 'org-bullets) -(eval-after-load 'org (lambda () +(defun joe/org-init () (setq org-todo-keywords '((sequence "TODO" "IN-PROGRESS" "|" "DONE" "BACKLOG"))) (setq org-agenda-files '("~/todo.org")) (require 'org-tempo) (add-to-list 'org-structure-template-alist '("el" . "src emacs-lisp")) - (setq org-edit-src-content-indentation 0))) -(add-hook 'org-mode-hook (defun joe/org-hook () + (setq org-edit-src-content-indentation 0)) +(with-eval-after-load 'org (joe/org-init)) + +(defun joe/org-hook () + (local-set-key (kbd "C-. C-i") 'consult-outline) (org-bullets-mode) - (org-indent-mode))) + (org-indent-mode)) +(add-hook 'org-mode-hook 'joe/org-hook) #+end_src ** VEMCO + Vertico Embark Marginalia Consult Orderless #+begin_src emacs-lisp @@ -361,12 +398,36 @@ Vertico Embark Marginalia Consult Orderless (all-the-icons-completion-marginalia-setup) (add-hook 'marginalia-mode-hook #'all-the-icons-completion-marginalia-setup) -(straight-use-package 'consult) + (straight-use-package 'orderless) (setq completion-styles '(orderless basic) completion-category-overrides '((file (styles basic partial-completion)))) #+end_src +*** Consult +#+begin_src emacs-lisp +(straight-use-package 'consult) +(global-set-key (kbd "C-. C-l") 'consult-line) +(global-set-key (kbd "C-. C-i") 'consult-imenu) +(global-set-key (kbd "C-. C-t") 'consult-theme) +(global-set-key (kbd "C-. C-r") 'consult-recent-file) +(global-set-key (kbd "C-. C-y") 'consult-yank-from-kill-ring) +#+end_src + +** Avy + +#+begin_src emacs-lisp +(straight-use-package 'avy) +(setq avy-case-fold-search nil) ;; case sensitive makes selection easier +(define-key global-map (kbd "C-;") 'avy-goto-char-2) ;; I use this most frequently +(define-key global-map (kbd "C-'") 'avy-goto-line) ;; Consistent with ivy-avy +(define-key global-map (kbd "M-g c") 'avy-goto-char) +(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 w") 'avy-goto-word-1) ;; first character of the word +(define-key global-map (kbd "M-g P") 'avy-pop-mark) +#+end_src + ** Helpful #+begin_src emacs-lisp (straight-use-package 'helpful) @@ -400,8 +461,8 @@ Vertico Embark Marginalia Consult Orderless (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) +(global-set-key (kbd "C-x d") #'dirvish) +(global-set-key (kbd "C-x C-d") #'joe/dirvish-find-directory) #+end_src ** Terminals/Shells @@ -411,11 +472,8 @@ Vertico Embark Marginalia Consult Orderless (setq vterm-timer-delay 0.01) (setq vterm-buffer-name-string "VTerm - %s") (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) + +(global-set-key (kbd "C-c t") #'vterm) (add-hook 'vterm-mode-hook (lambda () (setq-local global-hl-line-mode nil))) #+end_src @@ -457,21 +515,6 @@ Emacs is an great operating system, if only it had a good text editor... ) #+end_src -*** Avy -#+begin_src emacs-lisp -(straight-use-package 'avy) -(setq avy-case-fold-search nil) ;; case sensitive makes selection easier -(define-key global-map (kbd "C-;") 'avy-goto-char-2) ;; I use this most frequently -(define-key global-map (kbd "C-'") 'avy-goto-line) ;; Consistent with ivy-avy -(define-key global-map (kbd "M-g c") 'avy-goto-char) -(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 w") 'avy-goto-word-1) ;; first character of the word -(define-key global-map (kbd "M-g (") 'avy-goto-open-paren) -(define-key global-map (kbd "M-g )") 'avy-goto-close-paren) -(define-key global-map (kbd "M-g P") 'avy-pop-mark) -#+end_src - *** Multiple Cursors #+begin_src emacs-lisp (straight-use-package 'multiple-cursors) @@ -615,8 +658,11 @@ Emacs is an great operating system, if only it had a good text editor... (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) @@ -694,6 +740,12 @@ Emacs is an great operating system, if only it had a good text editor... ;; (yas-global-mode 1) #+end_src +*** Compilation +#+begin_src emacs-lisp +(global-set-key (kbd "C-x c r") (lambda () (interactive) (compile "make run"))) +(global-set-key (kbd "C-x c c") (lambda () (interactive) (compile "make"))) +#+end_src + ** Magit The best git porcelain/client I've ever used @@ -703,6 +755,7 @@ The best git porcelain/client I've ever used #+end_src ** Restclient + #+begin_src emacs-lisp (straight-use-package 'restclient) #+end_src diff --git a/.emacs.vanilla/init.el b/.emacs.vanilla/init.el index 1143736..9dfd265 100644 --- a/.emacs.vanilla/init.el +++ b/.emacs.vanilla/init.el @@ -502,6 +502,7 @@ all of the evil keybindings in buffers like magit, without compromises." ;; (define-key evil-normal-state-map (kbd "[f") (lambda () ;; (interactive) ;; (evil-textobj-tree-sitter-goto-textobj "function.outer" t))) + (setq display-buffer-alist `((,(rx bos (| (literal "*compilation")