Add keybindings and reorganise

Also, `(format +onsave)` is changed to just `format` since `+onsave`
	really messes with VC systems.
This commit is contained in:
Leni Ven 2023-02-08 00:00:11 -08:00
parent 8b6039d43a
commit 473bf1cfa8
2 changed files with 133 additions and 51 deletions

View File

@ -4,8 +4,7 @@ Execute ~doom sync~ after modifying this file to tangle it to ~config.el~.
The following block of comments is from the default configuration. The following block of comments is from the default configuration.
#+begin_src emacs-lisp :tangle no #+begin_src emacs-lisp
;;; $DOOMDIR/config.el -*- lexical-binding: t; -*- ;;; $DOOMDIR/config.el -*- lexical-binding: t; -*-
;; Place your private configuration here! Remember, you do not need to run 'doom ;; Place your private configuration here! Remember, you do not need to run 'doom
@ -67,34 +66,29 @@ change ~org-directory~. It must be set before org loads!
** Key Bindings ** Key Bindings
Modifications to the default key bindings Modifications to the default key bindings to mimic spacemacs
- ~SPC SPC~ is mapped to ~M-x~ (~#'execute-extended-command~)
- ~SPC !~ is mapped to ~M-!~ (~#'shell-command~)
- ~SPC :~ is mapped to ~M-:~ (~#'eval-expression~)
- ~,~ is mapped to the local (major mode) leader ~,~
- ~SPC b 0~ deletes the current buffer and window like Spacemacs ~SPC b x~
#+begin_src emacs-lisp #+begin_src emacs-lisp
(setq doom-localleader-key ",") ; Spacemacs like comma major mode (setq doom-localleader-key ",")
(map! :leader ; "SPC b 0" kills window and buffer (map! :leader
:desc "Kill buffer and window" :desc "Execute shell command"
"b 0" #'kill-buffer-and-window) "!" #'shell-command)
(map! :leader ; "SPC :" executes command (map! :leader
:desc "Execute shell command" :desc "Execute extended command (emacs M-x)"
"!" #'shell-command) "SPC" #'execute-extended-command)
(map! :leader ; "SPC SPC" becomes M-x (map! :leader
:desc "Execute extended command (emacs M-x)" :desc "Evaluate expression (emacs M-:)"
"SPC" #'execute-extended-command) ":" #'eval-expression)
(map! :leader ; "SPC :" becomes M-: (map! :leader
:desc "Evaluate expression (emacs M-:)" :desc "Kill buffer and window"
":" #'eval-expression) "b 0" #'kill-buffer-and-window)
(after! magit (map! :nvi "C" nil) ; remove this one weird binding
(map! :localleader
(:map git-commit-mode-map
"c" #'with-editor-finish)
(:map git-commit-mode-map
"q" #'with-editor-cancel)
))
(after! org
(map! :localleader
(:map org-mode-map
"X" #'org-latex-preview)
))
#+end_src #+end_src
** Font settings ** Font settings
@ -164,8 +158,6 @@ available. You can either set ~doom-theme~ or manually load a theme with the
(setq +doom-dashboard-ascii-banner-fn #'sun-position-banner) (setq +doom-dashboard-ascii-banner-fn #'sun-position-banner)
#+end_src #+end_src
* Display and Indentation Styles
** Line numbers ** Line numbers
This determines the style of line numbers in effect. If set to ~nil~, line This determines the style of line numbers in effect. If set to ~nil~, line
@ -176,6 +168,24 @@ numbers are disabled. For relative line numbers, set this to ~relative~.
(global-display-line-numbers-mode) (global-display-line-numbers-mode)
#+end_src #+end_src
* Package-specific Settings
** Smart Tabs
#+begin_src emacs-lisp
(use-package! smart-tabs-mode
:config
(print! "Configuring smart-tabs-mode")
(smart-tabs-insinuate
'c 'c++
'java
'javascript))
(setq-default
indent-tabs-mode t
indent-line-function 'tab-to-tab-stop
tab-width 2)
#+end_src
** Whitespace mode ** Whitespace mode
#+begin_src emacs-lisp #+begin_src emacs-lisp
@ -194,7 +204,7 @@ numbers are disabled. For relative line numbers, set this to ~relative~.
) )
#+end_src #+end_src
** Indentation Style Hooks Indentation Style Hooks
#+begin_src emacs-lisp #+begin_src emacs-lisp
(defun custom/common-program-hook () (defun custom/common-program-hook ()
@ -227,26 +237,65 @@ numbers are disabled. For relative line numbers, set this to ~relative~.
(add-hook 'lisp-data-mode-hook #'custom/lisp-family-hook) (add-hook 'lisp-data-mode-hook #'custom/lisp-family-hook)
#+end_src #+end_src
* Package-specific Settings
** Smart Tabs ** Org
Rather than using a common prefix ~, i~ like Spacemacs to consolidate all
insertion operations, we put them in different categories. Some keybindings are
removed.
#+begin_src emacs-lisp #+begin_src emacs-lisp
(use-package! smart-tabs-mode (map! :after org
:config :localleader
(print! "Configuring smart-tabs-mode") :map org-mode-map
(smart-tabs-insinuate :desc "LaTeX Preview" "X" #'org-latex-preview
'c 'c++ "h" nil
'java "i" nil
'javascript)) "@" nil
(setq-default "q" nil
indent-tabs-mode t "o" nil
indent-line-function 'tab-to-tab-stop (:prefix ("b". "Table")
tab-width 2) :desc "Edit formulae" "F" #'org-table-edit-formulas
:desc "Eval formula" "f" #'org-table-eval-formula
(:prefix ("m" . "Move")
:desc "Move row up" "K" #'org-table-move-row-up
:desc "Move row down" "J" #'org-table-move-row-down
:desc "Move column left" "H" #'org-table-move-column-left
:desc "Move column right" "L" #'org-table-move-column-right
:desc "Move cell up" "k" #'org-table-move-cell-up
:desc "Move cell down" "j" #'org-table-move-cell-down
:desc "Move cell left" "h" #'org-table-move-cell-left
:desc "Move cell right" "l" #'org-table-move-cell-right
)
)
(:prefix ("h" . "Headings")
:desc "Consult heading" "." #'consult-org-heading
:desc "Insert heading" "h" #'org-insert-heading
:desc "Insert todo heading" "t" #'org-insert-todo-heading
:desc "Insert subheading" "i" #'org-insert-subheading
:desc "Insert todo subheading" "t" #'org-insert-todo-subheading
:desc "Previous visible heading" "[" #'org-previous-visible-heading
:desc "Next visible heading" "]" #'org-next-visible-heading
)
(:prefix ("o" . "Tags/Properties")
:desc "Set tags command" "t" #'org-set-tags-command
:desc "Set property" "s" #'org-set-property
:desc "Delete property" "d" #'org-delete-property
:desc "Property action" "a" #'org-property-action
)
(:prefix ("i" . "Insert")
:desc "Link/Image" "l" #'org-insert-link
:desc "Item" "i" #'org-toggle-item
:desc "Citation" "c" #'org-cite-insert
:desc "Footnote" "f" #'org-footnote-new
)
)
#+end_src #+end_src
** Format ** Format
Note that ~onsave~ was intentionally turned off because it messes with version control systems.
#+begin_src emacs-lisp #+begin_src emacs-lisp
(after! format (after! format
(print! "Configuring (after! format ...)") (print! "Configuring (after! format ...)")
@ -258,7 +307,6 @@ numbers are disabled. For relative line numbers, set this to ~relative~.
latex-mode latex-mode
bibtex-mode bibtex-mode
)) ))
#+end_src #+end_src
** Spell ** Spell
@ -267,7 +315,6 @@ numbers are disabled. For relative line numbers, set this to ~relative~.
(after! flyspell (after! flyspell
(print! "Configuring (after! flyspell ...)") (print! "Configuring (after! flyspell ...)")
(setq flyspell-default-dictionary "english")) (setq flyspell-default-dictionary "english"))
#+end_src #+end_src
** LSP ** LSP
@ -283,7 +330,6 @@ since it clutters the header-line.
lsp-headerline-breadcrumb-enable-symbol-numbers nil lsp-headerline-breadcrumb-enable-symbol-numbers nil
lsp-headerline-breadcrumb-segments '(symbols) lsp-headerline-breadcrumb-segments '(symbols)
)) ))
#+end_src #+end_src
** LilyPond ** LilyPond
@ -298,7 +344,6 @@ Add the necessary hooks for LilyPond mode.
:config :config
(add-hook 'LilyPond-mode-hook #'custom/common-program-hook) (add-hook 'LilyPond-mode-hook #'custom/common-program-hook)
) )
#+end_src #+end_src
** LaTeX ** LaTeX
@ -322,19 +367,56 @@ The target indentation style of ~LaTeX~ is as follows:
\end{enumerate} \end{enumerate}
#+end_src #+end_src
For some reason the keymap binding has to use ~LaTeX-mode-map~ or ~TeX-mode-map~
instead of ~latex-mode-map~. Also some original keybindings are removed so they
can be displayed correctly in prompts. See e.g. ~tex-buf.el~ for an example.
#+begin_src emacs-lisp #+begin_src emacs-lisp
(after! latex (after! latex
(print! "Configuring (after! latex ...)") (print! "Configuring (after! latex ...)")
(add-hook 'tex-mode-hook #'custom/common-program-hook) (add-hook 'tex-mode-hook #'custom/common-program-hook)
(add-hook 'LaTeX-mode-hook #'custom/common-program-hook) (add-hook 'LaTeX-mode-hook #'custom/common-program-hook)
(setq-default TeX-electric-sub-and-superscript nil)) (setq-default TeX-electric-sub-and-superscript nil)
(local-unset-key "C-c C-l")
(local-unset-key "C-c `")
)
(map! :after latex
:localleader
:map TeX-mode-map
:desc "View Compilation Log" "l" #'TeX-recenter-output-buffer
:desc "Next Error" "e" #'TeX-next-error
:desc "Close Environment" "]" #'LaTeX-close-environment
(:prefix ("f" . "Fold")
:desc "Fold Mode" "f" #'TeX-fold-mode
:desc "Environment" "e" #'TeX-fold-env
:desc "Buffer" "b" #'TeX-fold-buffer
:desc "Region" "r" #'TeX-fold-region
:desc "Paragraph" "p" #'TeX-fold-paragraph
:desc "Dwim" "d" #'TeX-fold-dwim)
)
(map! :after latex
:map TeX-mode-map
"C-c C-l" nil
"C-c `" nil
)
#+end_src
** Magit
#+begin_src emacs-lisp
(map! :after magit
:localleader
:map git-commit-mode-map
:desc "Finish" "c" #'with-editor-finish
:desc "Cancel" "q" #'with-editor-cancel
)
#+end_src #+end_src
* Package Loading * Package Loading
These packages are loaded into ~packages.el~. The following comments are provided by default. These packages are loaded into ~packages.el~. The following comments are provided by default.
#+begin_src emacs-lisp :tangle no #+begin_src emacs-lisp :tangle packages.el
;; -*- no-byte-compile: t; -*- ;; -*- no-byte-compile: t; -*-
;;; $DOOMDIR/packages.el ;;; $DOOMDIR/packages.el

View File

@ -56,7 +56,7 @@
(evil +everywhere); come to the dark side, we have cookies (evil +everywhere); come to the dark side, we have cookies
file-templates ; auto-snippets for empty files file-templates ; auto-snippets for empty files
fold ; (nigh) universal code folding fold ; (nigh) universal code folding
(format +onsave) ; automated prettiness format ; automated prettiness
;;god ; run Emacs commands without modifier keys ;;god ; run Emacs commands without modifier keys
;;lispy ; vim for lisp, for people who don't like vim ;;lispy ; vim for lisp, for people who don't like vim
multiple-cursors ; editing in many places at once multiple-cursors ; editing in many places at once