Some general changes

This commit is contained in:
2024-10-01 16:21:08 +01:00
parent 092bd235b6
commit e3e37f3fab
6 changed files with 208 additions and 177 deletions

View File

@@ -2,7 +2,8 @@ alias asc async-shell-command $1
alias ss sudo-switch alias ss sudo-switch
alias pr project-root alias pr project-root
alias gt goto alias gt goto
alias d dired-other-window $1 alias d dired .
alias dd dired-other-window .
alias clear clear-scrollback alias clear clear-scrollback
alias gs magit-status alias gs magit-status
alias ff find-file $1 alias ff find-file $1

View File

@@ -3,5 +3,5 @@
# key: <no-tangle # key: <no-tangle
# -- # --
:PROPERTIES: :PROPERTIES:
:header-args:emacs-lisp: :tangle no :header-args:emacs-lisp: :tangle no :results none
:END: :END:

View File

@@ -419,17 +419,15 @@ the first character of the evil state capitalised"
(better-mode-line/setup-mode-line)) (better-mode-line/setup-mode-line))
#+end_src #+end_src
** Fringes ** Fringes
Turning off borders in my window manager was a good idea, so turn off Turning off borders in my window manager was a good idea, so I should
the borders for Emacs, so called fringes. However, some things like adjust the borders for Emacs, so called fringes. However, some things
[[info:emacs#Compilation Mode][Compilation Mode]] do require fringes like [[info:emacs#Compilation Mode][Compilation Mode]] do require
to provide arrows. So I use a minimal fringe style (exactly 1 pixel fringes to provide arrows on the left side of the window. Hence I
on either side of the window) to ensure I get those. provide a minimal fringe style with only 10 pixels on the left
provided.
#+begin_src emacs-lisp #+begin_src emacs-lisp
(use-package fringe (fringe-mode (cons 10 0))
:demand t
:config
(set-fringe-style (cons 1 1)))
#+end_src #+end_src
** Mouse ** Mouse
Who uses a mouse? This disables the use of GUI dialogues for stuff. Who uses a mouse? This disables the use of GUI dialogues for stuff.
@@ -574,10 +572,15 @@ set of examples on how to use general.
#+begin_src emacs-lisp #+begin_src emacs-lisp
(use-package emacs (use-package emacs
:init
;; this is for `duplicate-dwim'
(setq duplicate-line-final-position -1)
:general :general
("C-x d" #'delete-frame) ("C-x d" #'delete-frame)
(nmmap (nmmap
:keymaps 'override
"M-o" #'duplicate-dwim
"M-;" #'eval-expression "M-;" #'eval-expression
"g=" #'align-regexp "g=" #'align-regexp
"C--" #'text-scale-decrease "C--" #'text-scale-decrease
@@ -595,6 +598,7 @@ set of examples on how to use general.
"h" '(help-command :which-key "Help")) "h" '(help-command :which-key "Help"))
(mode-leader (mode-leader
"t" (proc (interactive) (+oreo/load-theme))
"T" #'+oreo/switch-theme) "T" #'+oreo/switch-theme)
(code-leader (code-leader
@@ -691,7 +695,8 @@ Setup the evil package, with some opinionated keybindings:
evil-move-beyond-eol t evil-move-beyond-eol t
evil-want-abbrev-expand-on-insert-exit t evil-want-abbrev-expand-on-insert-exit t
evil-undo-system #'undo-tree evil-undo-system #'undo-tree
evil-want-minibuffer t) evil-want-minibuffer t
evil-move-cursor-back nil)
:config :config
(evil-mode)) (evil-mode))
#+end_src #+end_src
@@ -891,6 +896,7 @@ around.
:states '(normal insert) :states '(normal insert)
:keymaps 'minibuffer-local-map :keymaps 'minibuffer-local-map
"<backtab>" #'switch-to-completions "<backtab>" #'switch-to-completions
"C-M-j" #'exit-minibuffer
"C-j" #'next-line-or-history-element "C-j" #'next-line-or-history-element
"C-k" #'previous-line-or-history-element)) "C-k" #'previous-line-or-history-element))
#+end_src #+end_src
@@ -913,6 +919,7 @@ later instances.
:state '(normal insert) :state '(normal insert)
:keymaps '(icomplete-fido-mode-map icomplete-minibuffer-map) :keymaps '(icomplete-fido-mode-map icomplete-minibuffer-map)
"<backtab>" #'switch-to-completions "<backtab>" #'switch-to-completions
"C-M-j" #'exit-minibuffer
"M-j" #'icomplete-forward-completions "M-j" #'icomplete-forward-completions
"M-k" #'icomplete-backward-completions "M-k" #'icomplete-backward-completions
"RET" #'icomplete-force-complete-and-exit "RET" #'icomplete-force-complete-and-exit
@@ -980,6 +987,7 @@ just setup some evil binds for company.
(eshell-mode-hook . company-mode) (eshell-mode-hook . company-mode)
:general :general
(imap (imap
:keymaps 'company-mode-map
"C-SPC" #'company-complete "C-SPC" #'company-complete
"C-@" #'company-complete "C-@" #'company-complete
"M-j" #'company-select-next "M-j" #'company-select-next
@@ -1051,12 +1059,11 @@ effectively.
#+begin_src emacs-lisp #+begin_src emacs-lisp
(use-package tab-bar (use-package tab-bar
:defer t :defer t
:hook (after-init-hook . tab-bar-mode)
:init :init
(setq tab-bar-close-button-show nil (setq tab-bar-close-button-show nil
tab-bar-format '(tab-bar-format-history tab-bar-format-tabs tab-bar-separator)) tab-bar-format '(tab-bar-format-history tab-bar-format-tabs tab-bar-separator)
:config tab-bar-show 1)
(setq tab-bar-show 1)
(tab-bar-mode)
:general :general
(tab-leader (tab-leader
"R" #'tab-rename "R" #'tab-rename
@@ -1069,9 +1076,7 @@ effectively.
"l" #'tab-move "l" #'tab-move
"n" #'tab-new "n" #'tab-new
"r" #'tab-switch "r" #'tab-switch
"w" #'tab-window-detach) "w" #'tab-window-detach))
(mode-leader
"t" #'toggle-tab-bar-mode-from-frame))
#+end_src #+end_src
** Auto typing ** Auto typing
Snippets are a pretty nice way of automatically inserting code. Emacs Snippets are a pretty nice way of automatically inserting code. Emacs
@@ -1209,6 +1214,7 @@ everything myself.
#+begin_src emacs-lisp #+begin_src emacs-lisp
(use-package transient (use-package transient
:defer t
:straight (:host github :repo "magit/transient" :tag "v0.7.5")) :straight (:host github :repo "magit/transient" :tag "v0.7.5"))
(use-package magit (use-package magit
@@ -1316,7 +1322,10 @@ Recentf provides a method of keeping track of recently opened files.
#+begin_src emacs-lisp #+begin_src emacs-lisp
(use-package recentf (use-package recentf
:defer t :defer t
:hook (emacs-startup-hook . recentf-mode)) :hook (emacs-startup-hook . recentf-mode)
:general
(file-leader
"r" #'recentf))
#+end_src #+end_src
** Avy ** Avy
Setup avy with leader. As I use ~avy-goto-char-timer~ a lot, use the Setup avy with leader. As I use ~avy-goto-char-timer~ a lot, use the
@@ -1586,9 +1595,10 @@ directories particularly efficiently.
:defer t :defer t
:load-path "elisp/" :load-path "elisp/"
:general :general
(search-leader
"a" #'+search/search-all)
(file-leader (file-leader
"p" #'+search/find-file "p" #'+search/find-file))
"S" #'+search/search-all))
#+end_src #+end_src
** Separedit ** Separedit
Edit anything anywhere all at once! Edit anything anywhere all at once!
@@ -1990,6 +2000,9 @@ them.
eshell-cd-on-directory t eshell-cd-on-directory t
eshell-cd-shows-directory nil eshell-cd-shows-directory nil
eshell-highlight-prompt nil) eshell-highlight-prompt nil)
(defun +eshell/good-clear ()
(interactive)
(eshell/clear))
(add-hook (add-hook
'eshell-mode-hook 'eshell-mode-hook
(proc (proc
@@ -2000,12 +2013,14 @@ them.
(general-def (general-def
:states '(normal insert) :states '(normal insert)
:keymaps 'eshell-mode-map :keymaps 'eshell-mode-map
"M-j" #'eshell-next-prompt
"M-k" #'eshell-previous-prompt
"C-j" #'eshell-next-matching-input-from-input "C-j" #'eshell-next-matching-input-from-input
"C-k" #'eshell-previous-matching-input-from-input) "C-k" #'eshell-previous-matching-input-from-input
"M-c" #'+eshell/good-clear)
(local-leader (local-leader
:keymaps 'eshell-mode-map :keymaps 'eshell-mode-map
"c" (proc (interactive) (eshell/clear) "c" #'+eshell/good-clear
(recenter))
"k" #'eshell-kill-process)))) "k" #'eshell-kill-process))))
#+end_src #+end_src
*** Eshell prompt *** Eshell prompt
@@ -2025,7 +2040,7 @@ internals, just standard old Emacs packages.
:load-path "elisp/" :load-path "elisp/"
:config :config
(defun +eshell/banner-message () (defun +eshell/banner-message ()
(concat (shell-command-to-string "cowfortune") "\n")) (concat (shell-command-to-string "fortune") "\n"))
(setq eshell-prompt-regexp (format "^%s" +eshell-prompt/user-prompt) (setq eshell-prompt-regexp (format "^%s" +eshell-prompt/user-prompt)
eshell-prompt-function #'+eshell-prompt/make-prompt eshell-prompt-function #'+eshell-prompt/make-prompt
eshell-banner-message '(+eshell/banner-message))) eshell-banner-message '(+eshell/banner-message)))
@@ -2043,7 +2058,7 @@ if I loaded this ~:after~ eshell then the first instance has no
knowledge of the new additions. knowledge of the new additions.
#+begin_src emacs-lisp #+begin_src emacs-lisp
(use-package eshell-additions (use-package eshell-additions
:defer t :demand t
:load-path "elisp/" :load-path "elisp/"
:general :general
(shell-leader (shell-leader
@@ -2177,7 +2192,7 @@ Core proced config, just a few bindings and evil collection setup.
(display-buffer-at-bottom) (display-buffer-at-bottom)
(window-height . 0.25)) (window-height . 0.25))
:init :init
(setq proced-auto-update-interval 0.5) (setq proced-auto-update-interval 5)
:config :config
(with-eval-after-load "evil-collection" (with-eval-after-load "evil-collection"
(evil-collection-proced-setup))) (evil-collection-proced-setup)))
@@ -2212,7 +2227,7 @@ back in, I can just do it within Emacs. Pretty nifty, right?
:display :display
("*Calculator*" ("*Calculator*"
(display-buffer-at-bottom) (display-buffer-at-bottom)
(window-height . 0.18)) (window-height . 0.2))
:general :general
(app-leader (app-leader
"c" #'calc-dispatch) "c" #'calc-dispatch)
@@ -2328,8 +2343,8 @@ into text-mode.
:general :general
(nmmap (nmmap
:keymaps 'text-mode-map :keymaps 'text-mode-map
(kbd "M-C") #'flyspell-correct-word-before-point "M-C" #'flyspell-correct-word-before-point
(kbd "M-c") #'flyspell-auto-correct-word) "M-c" #'flyspell-auto-correct-word)
(mode-leader (mode-leader
"s" #'flyspell-mode)) "s" #'flyspell-mode))
#+end_src #+end_src
@@ -2525,13 +2540,12 @@ to be set.
"r" #'eglot-rename "r" #'eglot-rename
"R" #'eglot-reconnect) "R" #'eglot-reconnect)
:init :init
(setq eglot-stay-out-of '(flymake) (setq eglot-auto-shutdown t
eglot-stay-out-of '(flymake)
eglot-ignored-server-capabilities '(:documentHighlightProvider eglot-ignored-server-capabilities '(:documentHighlightProvider
:documentOnTypeFormattingProvider :documentOnTypeFormattingProvider
:inlayHintProvider)) :inlayHintProvider))
(add-to-list 'safe-local-variable-values '(eval eglot-ensure)) (add-to-list 'safe-local-variable-values '(eval eglot-ensure)))
:config
(add-to-list 'eglot-server-programs '((c++-mode c-mode) "clangd")))
#+end_src #+end_src
*** Flycheck-Eglot *** Flycheck-Eglot
By default Eglot uses the integrated flymake package for error By default Eglot uses the integrated flymake package for error
@@ -2665,7 +2679,7 @@ like [[*Eglot][Eglot]].
("\\*xref\\*" ("\\*xref\\*"
(display-buffer-at-bottom) (display-buffer-at-bottom)
(inhibit-duplicate-buffer . t) (inhibit-duplicate-buffer . t)
(window-height . 0.25)) (window-height . 0.3))
:general :general
(code-leader (code-leader
"t" '(nil :which-key "Tags")) "t" '(nil :which-key "Tags"))
@@ -2679,7 +2693,8 @@ like [[*Eglot][Eglot]].
"RET" #'xref-goto-xref "RET" #'xref-goto-xref
"J" #'xref-next-line "J" #'xref-next-line
"K" #'xref-prev-line "K" #'xref-prev-line
"g" #'xref-revert-buffer "r" #'xref-query-replace-in-results
"gr" #'xref-revert-buffer
"q" #'quit-window)) "q" #'quit-window))
#+end_src #+end_src
** Project.el ** Project.el
@@ -2696,7 +2711,7 @@ quickly generate them in C/C++ projects.
:defer t :defer t
:general :general
(:keymaps 'project-prefix-map (:keymaps 'project-prefix-map
"R" #'+project/generate-tags) "r" #'+project/generate-tags)
:config :config
(defun +project/generate-tags () (defun +project/generate-tags ()
(interactive) (interactive)
@@ -2808,7 +2823,7 @@ I'm not very bothered.
org-adapt-indentation nil org-adapt-indentation nil
org-indent-mode nil org-indent-mode nil
org-startup-indented nil org-startup-indented nil
org-startup-folded 'content org-startup-folded 'showeverything
org-startup-with-latex-preview nil org-startup-with-latex-preview nil
org-imenu-depth 10 org-imenu-depth 10
org-src-window-setup 'current-window org-src-window-setup 'current-window
@@ -2873,7 +2888,6 @@ Emacs was very helpful here.
org-fontify-quote-and-verse-blocks t org-fontify-quote-and-verse-blocks t
org-fontify-whole-heading-line t org-fontify-whole-heading-line t
org-footnote-auto-label t org-footnote-auto-label t
org-goto-interface 'outline
org-hide-emphasis-markers nil org-hide-emphasis-markers nil
org-hide-leading-stars t org-hide-leading-stars t
org-image-actual-width nil org-image-actual-width nil
@@ -2918,8 +2932,12 @@ write the code.
(with-eval-after-load "consult" (with-eval-after-load "consult"
(general-def (general-def
:keymaps 'org-mode-map :keymaps 'org-mode-map
[remap imenu] #'consult-outline)) [remap consult-imenu] #'consult-outline))
:general :general
(local-leader
:state '(normal motion)
:keymaps 'org-src-mode-map
"o" #'org-edit-src-exit)
(file-leader (file-leader
"l" #'org-store-link "l" #'org-store-link
"i" #'org-insert-last-stored-link) "i" #'org-insert-last-stored-link)
@@ -3305,7 +3323,8 @@ Tons of stuff, namely:
(c-mode-hook . auto-fill-mode) (c-mode-hook . auto-fill-mode)
(c++-mode-hook . auto-fill-mode) (c++-mode-hook . auto-fill-mode)
:general :general
(:keymaps '(c-mode-map c++-mode-map) (:keymaps '(c-mode-map
c++-mode-map)
:states '(normal motion visual) :states '(normal motion visual)
"(" #'c-beginning-of-statement "(" #'c-beginning-of-statement
")" #'c-end-of-statement ")" #'c-end-of-statement
@@ -3614,12 +3633,10 @@ will run in the REPL. Even easier than making your own buffer.
:hook :hook
(haskell-mode-hook . haskell-indentation-mode) (haskell-mode-hook . haskell-indentation-mode)
(haskell-mode-hook . interactive-haskell-mode) (haskell-mode-hook . interactive-haskell-mode)
:init :display
(setq haskell-interactive-prompt "[λ] " ("\\*haskell.**\\*"
haskell-interactive-prompt-cont "{λ} " (display-buffer-at-bottom)
haskell-interactive-popup-errors nil (window-height . 0.3))
haskell-stylish-on-save t
haskell-process-type 'auto)
:general :general
(shell-leader (shell-leader
"h" #'haskell-interactive-bring) "h" #'haskell-interactive-bring)
@@ -3637,10 +3654,12 @@ will run in the REPL. Even easier than making your own buffer.
:keymaps 'haskell-interactive-mode-map :keymaps 'haskell-interactive-mode-map
"M-k" #'haskell-interactive-mode-history-previous "M-k" #'haskell-interactive-mode-history-previous
"M-j" #'haskell-interactive-mode-history-next) "M-j" #'haskell-interactive-mode-history-next)
:display :init
("\\*haskell.**\\*" (setq haskell-interactive-prompt "[λ] "
(display-buffer-at-bottom) haskell-interactive-prompt-cont "{λ} "
(window-height . 0.3)) haskell-interactive-popup-errors nil
haskell-stylish-on-save t
haskell-process-type 'auto)
:config :config
(load (concat user-emacs-directory "elisp/haskell-multiedit.el"))) (load (concat user-emacs-directory "elisp/haskell-multiedit.el")))
#+end_src #+end_src
@@ -3653,22 +3672,33 @@ source code blocks.
#+begin_src emacs-lisp #+begin_src emacs-lisp
(use-package python (use-package python
:defer t :defer t
:general
(nmmap
:keymaps 'python-mode-map
"C-M-x" #'python-shell-send-defun)
(local-leader
:keymaps 'python-mode-map
"c" #'python-check)
(local-leader
:keymaps 'python-mode-map
:infix "e"
"e" #'python-shell-send-statement
"r" #'python-shell-send-region
"f" #'python-shell-send-buffer)
:pretty :pretty
(python-mode-hook (python-mode-hook
("None" . "Ø") ("None" . "Ø")
("list" . "") ("list" . "")
("List" . "") ("List" . "")
("str" . "𝕊") ("str" . "𝕊")
("True" . "")
("False" . "")
("!" . "¬") ("!" . "¬")
("&&" . "")
("||" . "")
("for" . "") ("for" . "")
("print" . "φ") ("print" . "φ")
("lambda" . "λ") ("lambda" . "λ")
("return" . "") ("reduce" . "")
("yield" . "")) ("map" . "")
("return" . "")
("yield" . ""))
:init :init
(setq python-indent-offset 4) (setq python-indent-offset 4)
:config :config
@@ -3690,13 +3720,14 @@ Setup for python shell, including a toggle option
:display :display
("\\*Python\\*" ("\\*Python\\*"
(display-buffer-at-bottom) (display-buffer-at-bottom)
(window-height . 0.25))) (window-height . 0.3)))
#+end_src #+end_src
** YAML ** YAML
YAML is a data language which is useful for config files. YAML is a data language which is useful for config files.
#+begin_src emacs-lisp #+begin_src emacs-lisp
(use-package yaml-mode (use-package yaml-mode
:defer t
:straight t) :straight t)
#+end_src #+end_src
** HTML/CSS/JS ** HTML/CSS/JS
@@ -3719,6 +3750,7 @@ Emmet for super speed code writing.
#+begin_src emacs-lisp #+begin_src emacs-lisp
(use-package emmet-mode (use-package emmet-mode
:straight t :straight t
:defer t
:hook (web-mode-hook . emmet-mode) :hook (web-mode-hook . emmet-mode)
:general :general
(imap (imap
@@ -3740,7 +3772,6 @@ An auto-insert for HTML buffers, which just adds some nice stuff.
<html lang=''> <html lang=''>
<head> <head>
<meta charset='utf-8'> <meta charset='utf-8'>
<meta http-equiv='x-ua-compatible' content='ie=edge'>
<title>"(read-string "Enter title: ") | """</title> <title>"(read-string "Enter title: ") | """</title>
<meta name='description' content='" (read-string "Enter description: ") | "" "'> <meta name='description' content='" (read-string "Enter description: ") | "" "'>
<meta name='author' content='"user-full-name"'/> <meta name='author' content='"user-full-name"'/>
@@ -3748,17 +3779,8 @@ An auto-insert for HTML buffers, which just adds some nice stuff.
<link rel='apple-touch-icon' href='/apple-touch-icon.png'> <link rel='apple-touch-icon' href='/apple-touch-icon.png'>
<link rel='shortcut icon' href='/favicon.ico'/> <link rel='shortcut icon' href='/favicon.ico'/>
<!-- Place favicon.ico in the root directory -->
</head> </head>
<body> <body>
<!--[if lt IE 8]>
<p class='browserupgrade'>
You are using an <strong>outdated</strong> browser. Please
<a href='http://browsehappy.com/'>upgrade your browser</a> to improve
your experience.
</p>
<![endif]-->
" "
_ _
" </body> " </body>
@@ -3770,15 +3792,15 @@ eglot.
#+begin_src emacs-lisp #+begin_src emacs-lisp
(use-package js (use-package js
:defer t
:mode ("\\.js" . js-mode) :mode ("\\.js" . js-mode)
:hook :hook (js-mode-hook . auto-fill-mode)
(js-mode-hook . auto-fill-mode)
:init :init
(setq js-indent-level 2)) (setq js-indent-level 2))
#+end_src #+end_src
*** Typescript *** Typescript
A language that adds a build step to JavaScript projects for "static" A language that adds a build step to JavaScript projects for "static"
typing. It's nice because it adds nice auto completion. typing. It's nice because it adds good auto completion.
#+begin_src emacs-lisp #+begin_src emacs-lisp
(use-package typescript-mode (use-package typescript-mode

View File

@@ -80,14 +80,22 @@
'(org-hide ((t (:foreground "black")))) '(org-hide ((t (:foreground "black"))))
'(org-quote ((t (:slant italic)))) '(org-quote ((t (:slant italic))))
'(org-verbatim ((t (:foreground "red3")))) '(org-verbatim ((t (:foreground "red3"))))
'(outline-1 ((t (:inherit default :foreground "#db5823")))) '(outline-1 ((t (:inherit default :height 1.3
'(outline-2 ((t (:inherit default :foreground "#93a61a")))) :foreground "#db5823"))))
'(outline-3 ((t (:inherit default :foreground "#3c98e0")))) '(outline-2 ((t (:inherit default :height 1.2
'(outline-4 ((t (:inherit default :foreground "#c49619")))) :foreground "#93a61a"))))
'(outline-5 ((t (:inherit default :foreground "#3cafa5")))) '(outline-3 ((t (:inherit default :height 1.1
'(outline-6 ((t (:inherit default :foreground "#93a61a")))) :foreground "#3c98e0"))))
'(outline-7 ((t (:inherit default :foreground "#ec423a")))) '(outline-4 ((t (:inherit default :height 1.05
'(outline-8 ((t (:inherit default :foreground "#3c98e0")))) :foreground "#c49619"))))
'(outline-5 ((t (:inherit default :height 1.02
:foreground "#3cafa5"))))
'(outline-6 ((t (:inherit default :height 1.02
:foreground "#93a61a"))))
'(outline-7 ((t (:inherit default :height 1.02
:foreground "#ec423a"))))
'(outline-8 ((t (:inherit default :height 1.02
:foreground "#3c98e0"))))
'(outline-minor-0 ((t (:extend t :weight bold :background "#01323d")))) '(outline-minor-0 ((t (:extend t :weight bold :background "#01323d"))))
'(outline-minor-1 ((t (:extend t :inherit (outline-minor-0 outline-1) :background "#1e9d310d32a3")))) '(outline-minor-1 ((t (:extend t :inherit (outline-minor-0 outline-1) :background "#1e9d310d32a3"))))
'(pdf-isearch-batch ((t (:foreground "black" :background "white")))) '(pdf-isearch-batch ((t (:foreground "black" :background "white"))))

View File

@@ -14,9 +14,12 @@ super + Return
super + a super + a
dmenu_run dmenu_run
super + e super + w
$HOME/.local/scripts/emoticons $HOME/.local/scripts/emoticons
super + e
$HOME/.local/scripts/eselect;
super + s super + s
notify-send -u low "Launching browser"; \ notify-send -u low "Launching browser"; \
xdg-open "https://duckduckgo.com" xdg-open "https://duckduckgo.com"
@@ -34,9 +37,6 @@ super + z
notify-send -u low "Launching zathura"; \ notify-send -u low "Launching zathura"; \
zathura zathura
super + w
$HOME/.local/scripts/eselect;
super + ctrl + l super + ctrl + l
$HOME/.local/scripts/lock; $HOME/.local/scripts/lock;