!REFACTOR: cleaning doom

This refactor removes a lot of the 'training wheels' that doom
provides (i.e. no modeline, bindings, etc). Instead, I defined my own
modules and systems to help with those tasks. I am now using the default
emacs modeline, customised to my liking, as well as the default scratch
buffer as my startup page.

This basically allows me to have a finer degree of control over what my
Emacs is doing, which is great as I can remove redundant pieces that I
don't use.
This commit is contained in:
dx
2020-07-15 15:26:11 +01:00
parent 8b067497da
commit 3e7642cae1
6 changed files with 214 additions and 171 deletions

View File

@@ -0,0 +1,157 @@
#+TITLE: private/bindings Literate configuration
#+PROPERTY: header-args(elisp) :tangle config.el
* Introduction
This is the main document for this module (=private/bindings=).
To compile, simply execute the source code block below
#+BEGIN_SRC elisp :tangle no
(org-babel-tangle-file "README.org" "config.el")
#+END_SRC
* Initial
#+BEGIN_SRC elisp
;;; private/bindings/config.el -*- lexical-binding: t; -*-
#+END_SRC
* Leader
Bindings for the leader map
** Single binds
These are immediate bindings to the leader map that instantly launch functions when pressed.
This binding space is reserved for stuff I use quite often.
#+BEGIN_SRC elisp
(map!
:leader
"SPC" #'execute-extended-command
"!" #'async-shell-command
"T" #'eshell
"-" #'dired-jump
"_" #'dired-jump-other-window
";" #'eval-expression
"h" #'help-command
"w" #'ace-window)
#+END_SRC
** Files
#+BEGIN_SRC elisp
(map!
:leader
:prefix "f"
"r" #'counsel-recentf
"f" #'find-file
"p" #'(lambda () (interactive) (doom-project-find-file "~/Dotfiles"))
"s" #'save-buffer
"d" #'dired)
#+END_SRC
** Buffers
#+BEGIN_SRC elisp
(map!
:leader
:prefix "b"
"n" #'next-buffer
"p" #'previous-buffer
"d" #'kill-current-buffer
"b" #'switch-to-buffer
"i" #'ibuffer)
#+END_SRC
** Search
#+BEGIN_SRC elisp
(map!
:leader
:prefix "s"
"i" #'imenu
(:after counsel
"s" #'swiper
"r" #'counsel-rg)
(:after counsel-etags
"t" #'counsel-etags-find-tag)
"o" #'+lookup/online)
#+END_SRC
** Projectile
#+BEGIN_SRC elisp
(map!
:leader
:after projectile
:desc "Switch to p-buffer" ">" #'projectile-switch-to-buffer
:desc "Projects" "p" #'projectile-switch-project
(:prefix ("p" . "project")
:desc "Regen tags" "g" #'projectile-regenerate-tags
:desc "Open project files" "f" #'projectile-find-file))
#+END_SRC
** Code
#+BEGIN_SRC elisp
(map!
:leader
:prefix ("c" . "code") ; Code
:desc "Compile" "c" #'compile
:desc "Compile via make" "m" #'+make/run
:desc "Undo tree" "u" #'undo-tree-visualize
(:after lsp
:desc "Format code lsp" "f" #'+default/lsp-format-region-or-buffer
:desc "Execute action" "a" #'lsp-execute-code-action))
#+END_SRC
** Magit and VC
#+BEGIN_SRC elisp
(map!
:leader
:prefix "g"
"g" #'magit-status
"c" #'magit-clone
"f" #'magit-fetch
"p" #'magit-pull)
#+END_SRC
** Notes
#+BEGIN_SRC elisp
(map!
:leader
:prefix ("n" . "notes")
:desc "Open notes in dired" "-" #'(lambda () (interactive) (dired org-directory))
:desc "Open quicknotes" "q" #'(lambda () (interactive) (find-file (format "%s/qnotes.org" org-directory))))
#+END_SRC
** Frames
#+BEGIN_SRC elisp
(map!
:leader
:prefix "F"
"d" #'delete-frame)
#+END_SRC
* Company
#+BEGIN_SRC elisp
(map!
:map (company-search-map company-mode-map)
"C-j" #'company-select-next
"C-k" #'company-select-previous
"C-SPC" #'company-complete)
#+END_SRC
* Multi cursors
Setup bindings for multi cursors.
As it's a motion based system, use the "gz" namespace.
#+BEGIN_SRC elisp
(map!
:prefix "g"
(:prefix "z"
"m" #'evil-mc-resume-cursors
"p" #'evil-mc-pause-cursors
"d" #'evil-mc-make-all-cursors
"j" #'evil-mc-make-cursor-move-next-line
"k" #'evil-mc-make-cursor-move-prev-line
"z" #'evil-mc-make-cursor-at-pos))
#+END_SRC
* Quit
Quit Emacs or restart it
#+BEGIN_SRC elisp
(map!
:prefix "q"
"q" #'save-buffers-kill-terminal
"r" #'doom/restart)
#+END_SRC
* Remaps
#+BEGIN_SRC elisp
(define-key!
[remap org-goto] #'counsel-org-goto)
#+END_SRC
* Misc
Misc bindings that don't fit to any other category.
#+BEGIN_SRC elisp
(map!
"C-x C-z" #'text-scale-adjust
"TAB" #'evil-jump-item
"M-c" #'count-words-region
"M-s" #'occur)
#+END_SRC

View File

@@ -0,0 +1,10 @@
#+TITLE: private/startup
#+DATE: July 15, 2020
* Description
Basically setup the default Emacs mode-line and the scratch buffer for ease of use.
This replaces the =modeline= and =doom-dashboard= modules as it leverages the default Emacs utilities.
* Prerequisites
Emacs of some kind, preferably 27 just for the sake of preserving versioning.
* Requirements
None

View File

@@ -0,0 +1,12 @@
;;; private/startup/config.el -*- lexical-binding: t; -*-
(defun +startup/create-scratch-message ()
"Generate a string for the scratch buffer"
(format "Welcome to Emacs! (。◕‿◕。)
Load time was %s
Time of startup: %s"
(emacs-init-time)
(current-time-string (current-time))))
(setq-default mode-line-format (list "%l:%c %P \t %+%b(" '(:eval (format "%s" major-mode)) ") \t %I \t" vc-mode mode-line-end-spaces))
(setq initial-scratch-message (+startup/create-scratch-message))