tvl-depot/users/tazjin/emacs/config/bindings.el
Vincent Ambo e78b79c6cd refactor(tazjin/emacs): ivy,swiper,counsel -> vertico,consult
vertico and consult are more modern versions of interactive narrowing
helpers, as those implemented by ivy and its related packages.

The primary differences (and what I care about here) is that they are
more focused on integration with the core Emacs primitives, rather
than building an ecosystem around them.

For example:

* vertico enhances `completing-read' and friends, but does not attempt
  to provide its own ecosystem of functions to *trigger* completions.

* vertico integrates with the default `completion-style' system,
  meaning that I can continue to use things like prescient without
  extra packages that integrate it with vertico

* consult does not rely on vertico or any other specific completion
  framework (such as counsel/swiper do with ivy), and simply
  implements its functions using completing-read

This reduces the overall amount of code in the dependency closure and
leads to a less special setup.

Functionality is basically equivalent, except for two things which
counsel came with that I will need to substitute:

* counsel-notmuch (actually this was a separate package, but I didn't
  use it much anyways, so just ignoring it for now)
* counsel-linux-app (opening desktop shortcuts, this I will need to make)

As a side note, consult notes "This package is a part of GNU Emacs",
but it doesn't seem to be the case.

Change-Id: Ia046b763bf3d401b505e0f6393cfe1ccd6f41293
Reviewed-on: https://cl.tvl.fyi/c/depot/+/9155
Tested-by: BuildkiteCI
Reviewed-by: tazjin <tazjin@tvl.su>
2023-08-26 23:30:21 +00:00

107 lines
2.8 KiB
EmacsLisp

;; Switch buffers reliably in the face of spurious renames.
(global-set-key (kbd "C-x b") #'reliably-switch-buffer)
;; Font size
(define-key global-map (kbd "C-=") 'increase-default-text-scale) ;; '=' because there lies '+'
(define-key global-map (kbd "C--") 'decrease-default-text-scale)
(define-key global-map (kbd "C-x C-0") 'set-default-text-scale)
;; What does <tab> do? Well, it depends ...
(define-key prog-mode-map (kbd "<tab>") #'company-indent-or-complete-common)
;; imenu instead of insert-file
(global-set-key (kbd "C-x i") 'imenu)
;; Window switching. (C-x o goes to the next window)
(windmove-default-keybindings) ;; Shift+direction
;; Start eshell or switch to it if it's active.
(global-set-key (kbd "C-x m") 'eshell)
(global-set-key (kbd "M-g M-g") 'goto-line-with-feedback)
;; Miscellaneous editing commands
(global-set-key (kbd "C-c w") 'whitespace-cleanup)
(global-set-key (kbd "C-c a") 'align-regexp)
(global-set-key (kbd "C-c m") 'mc/mark-dwim)
;; Browse URLs (very useful for Gerrit's push output, etc!)
(global-set-key (kbd "C-c b p") 'browse-url-at-point)
(global-set-key (kbd "C-c b b") 'browse-url)
;; C-x REALLY QUIT (idea by @magnars)
(global-set-key (kbd "C-x r q") 'save-buffers-kill-terminal)
(global-set-key (kbd "C-x C-c") 'ignore)
;; Open a file in project:
(global-set-key (kbd "C-c f") 'project-find-file)
;; Open a file via magit:
(global-set-key (kbd "C-c C-f") #'magit-find-file-worktree)
;; Insert TODO comments
(global-set-key (kbd "C-c t") 'insert-todo-comment)
;; Open the depot
(global-set-key (kbd "s-s d") #'tvl-depot-status)
;; Open any project through zoxide
(global-set-key (kbd "s-s r") #'zoxide-open-project)
;; Add subthread collapsing to notmuch-show.
;;
;; C-, closes a thread, C-. opens a thread. This mirrors stepping
;; in/out of definitions.
(define-key notmuch-show-mode-map (kbd "C-,") 'notmuch-show-open-or-close-subthread)
(define-key notmuch-show-mode-map (kbd "C-.")
(lambda ()
(interactive)
(notmuch-show-open-or-close-subthread t))) ;; open
;; Get rid of the annoying `save-some-buffers' shortcut which I
;; *NEVER* use intentionally.
(unbind-key (kbd "C-x s") 'global-map)
;; German keyboard layout with Y and Z in the correct place.
(quail-define-package
"german-qwerty" "German" "DE@" t
"German (Deutsch) input method with QWERTY keys"
nil t t t t nil nil nil nil nil t)
;; 1! 2" 3§ 4$ 5% 6& 7/ 8( 9) 0= ß? [{ ]}
;; qQ wW eE rR tT yY uU iI oO pP üÜ +*
;; aA sS dD fF gG hH jJ kK lL öÖ äÄ #^
;; zZ xX cC vV bB nN mM ,; .: -_
(quail-define-rules
("-" )
("=" ?\[)
("`" ?\])
("[" )
("]" ?+)
(";" )
("'" )
("\\" ?#)
("/" ?-)
("@" ?\")
("#" )
("^" ?&)
("&" ?/)
("*" ?\()
("(" ?\))
(")" ?=)
("_" ??)
("+" ?{)
("~" ?})
("{" )
("}" ?*)
(":" )
("\"" )
("|" ?^)
("<" ?\;)
(">" ?:)
("?" ?_))
(provide 'bindings)