adding some tweakaroos

This commit is contained in:
Chris Cochrun 2023-05-09 12:55:14 -05:00
parent 95c9621034
commit 567eecf76c
2 changed files with 135 additions and 132 deletions

View file

@ -13,48 +13,6 @@
- [[#keybindings][Keybindings]] - [[#keybindings][Keybindings]]
- [[#org-mode][Org Mode]] - [[#org-mode][Org Mode]]
- [[#emoji][Emoji]] - [[#emoji][Emoji]]
- [[#undo-tree][Undo-Tree]]
- [[#undo-fu][Undo-Fu]]
- [[#better-ui][Better UI]]
- [[#eww][EWW]]
- [[#completion][Completion]]
- [[#yasnippet][YASnippet]]
- [[#tempel][Tempel]]
- [[#projectile][Projectile]]
- [[#httpd][HTTPD]]
- [[#navigation][Navigation]]
- [[#window-management][Window Management]]
- [[#help][Help]]
- [[#format][Format]]
- [[#languages][Languages]]
- [[#direnv][direnv]]
- [[#file-management][File Management]]
- [[#ledger][Ledger]]
- [[#mu4e][MU4E]]
- [[#calendar][Calendar]]
- [[#org-caldav-sync][Org-Caldav-sync]]
- [[#org-notifications][Org Notifications]]
- [[#magit][Magit]]
- [[#eshell][Eshell]]
- [[#vterm][Vterm]]
- [[#sly][Sly]]
- [[#pdf-tools][PDF-Tools]]
- [[#epub][EPUB]]
- [[#eaf-emacs-application-framework][EAF (Emacs Application Framework)]]
- [[#elfeed][Elfeed]]
- [[#bongo][Bongo]]
- [[#emms][EMMS]]
- [[#transmission][Transmission]]
- [[#hass][HASS]]
- [[#pass][Pass]]
- [[#matrixement][Matrix/Ement]]
- [[#mastodon][Mastodon]]
- [[#activitywatch][ActivityWatch]]
- [[#languagetool][LanguageTool]]
- [[#qrencode][qrencode]]
- [[#mybible][MyBible]]
- [[#performance][Performance]]
- [[#logging][Logging]]
- [[#early-init][Early Init]] - [[#early-init][Early Init]]
* Init * Init
@ -372,7 +330,7 @@ Also due to using greetd, emacs isn't started with the environment from the syst
;; Please note the list `("-d" "en_US")` contains ACTUAL parameters passed to hunspell ;; Please note the list `("-d" "en_US")` contains ACTUAL parameters passed to hunspell
;; You could use `("-d" "en_US,en_US-med")` to check with multiple dictionaries ;; You could use `("-d" "en_US,en_US-med")` to check with multiple dictionaries
'(("en_US" "[[:alpha:]]" "[^[:alpha:]]" "[']" nil ("-d" "en_US") nil utf-8))) '(("en_US" "[[:alpha:]]" "[^[:alpha:]]" "[']" nil ("-d" "en_US") nil utf-8)))
(add-hook 'org-mode-hook 'chris/org-mode-setup) (add-hook 'org-mode-hook 'chris/org-mode-setup)
#+end_src #+end_src
** Keep Folders Clean ** Keep Folders Clean
@ -385,6 +343,14 @@ Let's use =no-littering= in order to stop emacs from filling all our folders wit
;; auto save files in the same path as it uses for sessions ;; auto save files in the same path as it uses for sessions
(setq auto-save-file-name-transforms (setq auto-save-file-name-transforms
`((".*" ,(no-littering-expand-var-file-name "auto-save/") t))) `((".*" ,(no-littering-expand-var-file-name "auto-save/") t)))
(setq backup-directory-alist '(("." . "~/.emacs.d/backup"))
backup-by-copying t ; Don't delink hardlinks
version-control t ; Use version numbers on backups
delete-old-versions t ; Automatically delete excess backups
kept-new-versions 20 ; how many of the newest versions to keep
kept-old-versions 5 ; and how many of the old
)
#+end_src #+end_src
** Ligatures ** Ligatures
@ -580,7 +546,8 @@ Let's start by creating a self contained function of what I'd like started on ev
(visual-fill-column-mode +1) (visual-fill-column-mode +1)
(display-line-numbers-mode -1) (display-line-numbers-mode -1)
(variable-pitch-mode +1) (variable-pitch-mode +1)
(flyspell-mode +1) (languagetool-server-start)
(languagetool-server-mode +1)
(setq visual-fill-column-width 100 (setq visual-fill-column-width 100
visual-fill-column-center-text t) visual-fill-column-center-text t)
@ -1672,6 +1639,17 @@ GPTEL is a package that uses chatGPT to get some text generation in org-mode
#+begin_ai #+begin_ai
is emacs the best? is emacs the best?
#+end_ai #+end_ai
*** Jinx
Jinx is an enchanted spell checker for emacs. I think I'll just turn it on globally for a while and see how I feel.
#+begin_src emacs-lisp
(use-package jinx
:hook (emacs-startup . global-jinx-mode)
:init (flyspell-mode -1)
:config (flyspell-mode -1)
:bind (("M-c" . jinx-correct)
("C-M-$" . Jinx-Languages)))
#+end_src
** Emoji ** Emoji
In order to render color emojis I'll use =unicode-fonts=. In order to render color emojis I'll use =unicode-fonts=.
#+begin_src emacs-lisp #+begin_src emacs-lisp
@ -1695,7 +1673,7 @@ Or maybe I'll use =emojify=.
"ie" '(emojify-insert-emoji :which-key "insert emoji"))) "ie" '(emojify-insert-emoji :which-key "insert emoji")))
#+end_src #+end_src
** Undo-Tree *** Undo-Tree
I no longer use this since I primarily use Emacs 28 across my machines and have used Emacs's built in undo-redo. I no longer use this since I primarily use Emacs 28 across my machines and have used Emacs's built in undo-redo.
#+begin_src emacs-lisp :tangle no #+begin_src emacs-lisp :tangle no
(use-package undo-tree (use-package undo-tree
@ -1709,7 +1687,7 @@ I no longer use this since I primarily use Emacs 28 across my machines and have
"k" 'undo-tree-visualize-undo)) "k" 'undo-tree-visualize-undo))
#+end_src #+end_src
** Undo-Fu *** Undo-Fu
The same applies here as did =undo-tree= I no longer use this since I primarily use Emacs 28 across my machines and have used Emacs's built in undo-redo. The same applies here as did =undo-tree= I no longer use this since I primarily use Emacs 28 across my machines and have used Emacs's built in undo-redo.
#+begin_src emacs-lisp :tangle no #+begin_src emacs-lisp :tangle no
(use-package undo-fu (use-package undo-fu
@ -1718,8 +1696,8 @@ The same applies here as did =undo-tree= I no longer use this since I primarily
(setq evil-undo-system 'undo-fu)) (setq evil-undo-system 'undo-fu))
#+end_src #+end_src
** Better UI *** Better UI
*** Olivetti **** Olivetti
#+begin_src emacs-lisp :tangle no #+begin_src emacs-lisp :tangle no
(use-package olivetti (use-package olivetti
:config :config
@ -1727,13 +1705,13 @@ The same applies here as did =undo-tree= I no longer use this since I primarily
olivetti-minimum-body-width 100)) olivetti-minimum-body-width 100))
#+end_src #+end_src
*** Revert all buffers **** Revert all buffers
#+BEGIN_SRC emacs-lisp #+BEGIN_SRC emacs-lisp
(global-auto-revert-mode 1) (global-auto-revert-mode 1)
(setq global-auto-revert-non-file-buffers t) (setq global-auto-revert-non-file-buffers t)
#+END_SRC #+END_SRC
*** Visual-Fill-Line-Mode **** Visual-Fill-Line-Mode
Visual fill column does a lot of the same as olivetti, but works with visual line mode better. Visual fill column does a lot of the same as olivetti, but works with visual line mode better.
#+begin_src emacs-lisp #+begin_src emacs-lisp
(use-package visual-fill-column (use-package visual-fill-column
@ -1742,13 +1720,13 @@ Visual fill column does a lot of the same as olivetti, but works with visual lin
(setq visual-fill-column-width 100 (setq visual-fill-column-width 100
visual-fill-column-center-text t)) visual-fill-column-center-text t))
#+end_src #+end_src
*** TOC-ORG **** TOC-ORG
#+begin_src emacs-lisp #+begin_src emacs-lisp
(use-package toc-org (use-package toc-org
:after org) :after org)
#+end_src #+end_src
*** Lin and Pulsar **** Lin and Pulsar
These two packages created by Prot are interesting to me and may help to make sure I do not loose my place in emacs so much. These two packages created by Prot are interesting to me and may help to make sure I do not loose my place in emacs so much.
#+begin_src emacs-lisp :tangle no #+begin_src emacs-lisp :tangle no
(use-package lin (use-package lin
@ -1827,7 +1805,7 @@ These two packages created by Prot are interesting to me and may help to make su
(add-hook 'imenu-after-jump-hook #'pulsar-reveal-entry)) (add-hook 'imenu-after-jump-hook #'pulsar-reveal-entry))
#+end_src #+end_src
** EWW *** EWW
Builtin webbrowser for emacs. Trying it out as a text only browser for things. Builtin webbrowser for emacs. Trying it out as a text only browser for things.
#+begin_src emacs-lisp #+begin_src emacs-lisp
@ -1879,10 +1857,10 @@ Builtin webbrowser for emacs. Trying it out as a text only browser for things.
"gV" 'chris/eww-video-dl) "gV" 'chris/eww-video-dl)
#+end_src #+end_src
** Completion *** Completion
My completion framework is a combination of packages so that everything remains seperate and lightweight. My completion framework is a combination of packages so that everything remains seperate and lightweight.
*** SELECTRUM **** SELECTRUM
I prefer selectrum over Ivy or Helm for completions. It is using the basic completing read system and therefore it is more inline with basic emacs. Also, let's add prescient to be able to filter selectrum well. We'll add some keybindings too for easier navigation on the home row. I prefer selectrum over Ivy or Helm for completions. It is using the basic completing read system and therefore it is more inline with basic emacs. Also, let's add prescient to be able to filter selectrum well. We'll add some keybindings too for easier navigation on the home row.
#+BEGIN_SRC emacs-lisp :tangle no #+BEGIN_SRC emacs-lisp :tangle no
@ -1992,7 +1970,7 @@ This is similar but using mini-frame. Mini-frame works well, but not if using ex
(apply f args))) (apply f args)))
#+END_SRC #+END_SRC
*** VERTICO **** VERTICO
Vertico is an alternative to Selectrum. Maybe using it will give me an even better experience over selectrum. Vertico is an alternative to Selectrum. Maybe using it will give me an even better experience over selectrum.
#+BEGIN_SRC emacs-lisp #+BEGIN_SRC emacs-lisp
@ -2045,7 +2023,7 @@ Vertico is an alternative to Selectrum. Maybe using it will give me an even bett
(setq enable-recursive-minibuffers t)) (setq enable-recursive-minibuffers t))
#+END_SRC #+END_SRC
*** CONSULT **** CONSULT
Consult has a lot of nice functions like Ivy's Counsel functions (enhanced searching functions), lets set some of them in the keymap so they are easily used. Consult has a lot of nice functions like Ivy's Counsel functions (enhanced searching functions), lets set some of them in the keymap so they are easily used.
#+begin_src emacs-lisp #+begin_src emacs-lisp
(use-package consult (use-package consult
@ -2091,7 +2069,7 @@ Consult has a lot of nice functions like Ivy's Counsel functions (enhanced searc
"sb" 'consult-eglot-symbols)) "sb" 'consult-eglot-symbols))
#+end_src #+end_src
*** MARGINALIA **** MARGINALIA
Marginalia makes for some great decoration to our minibuffer completion items. Works great with Selectrum which does not have this out of the box. Marginalia makes for some great decoration to our minibuffer completion items. Works great with Selectrum which does not have this out of the box.
#+begin_src emacs-lisp #+begin_src emacs-lisp
@ -2130,7 +2108,7 @@ Along with Marginalia, let's add in icons.
#+end_src #+end_src
*** Embark **** Embark
Embark or do something. Embark or do something.
#+BEGIN_SRC emacs-lisp #+BEGIN_SRC emacs-lisp
(use-package embark (use-package embark
@ -2184,12 +2162,12 @@ targets."
(use-package embark-consult) (use-package embark-consult)
#+END_SRC #+END_SRC
*** WGREP **** WGREP
#+begin_src emacs-lisp #+begin_src emacs-lisp
(use-package wgrep) (use-package wgrep)
#+end_src #+end_src
*** Company **** Company
#+begin_src emacs-lisp :tangle no #+begin_src emacs-lisp :tangle no
(use-package company (use-package company
:config :config
@ -2214,7 +2192,7 @@ targets."
:after company) :after company)
#+end_src #+end_src
*** Corfu **** Corfu
Trying out corfu instead of company Trying out corfu instead of company
#+BEGIN_SRC emacs-lisp #+BEGIN_SRC emacs-lisp
(use-package corfu (use-package corfu
@ -2325,7 +2303,7 @@ Trying out corfu instead of company
(setq cape-dabbrev-min-length 4) (setq cape-dabbrev-min-length 4)
) )
#+END_SRC #+END_SRC
*** kind-icon **** kind-icon
Kind icon adds icons to corfu Kind icon adds icons to corfu
#+begin_src emacs-lisp #+begin_src emacs-lisp
(use-package kind-icon (use-package kind-icon
@ -2337,7 +2315,7 @@ Kind icon adds icons to corfu
(add-to-list 'corfu-margin-formatters #'kind-icon-margin-formatter)) (add-to-list 'corfu-margin-formatters #'kind-icon-margin-formatter))
#+end_src #+end_src
*** Devdocs **** Devdocs
Devdocs.io is a pretty great place to see documentation on nearly any developer technology. Devdocs.el will bring all that documentation right inside Emacs. Devdocs.io is a pretty great place to see documentation on nearly any developer technology. Devdocs.el will bring all that documentation right inside Emacs.
#+begin_src emacs-lisp #+begin_src emacs-lisp
(use-package devdocs (use-package devdocs
@ -2348,7 +2326,7 @@ Devdocs.io is a pretty great place to see documentation on nearly any developer
"hd" 'devdocs-lookup)) "hd" 'devdocs-lookup))
#+end_src #+end_src
** YASnippet *** YASnippet
YASnippet is a templating system. It's powerful. YASnippet is a templating system. It's powerful.
#+begin_src emacs-lisp :tangle no #+begin_src emacs-lisp :tangle no
(use-package yasnippet (use-package yasnippet
@ -2357,7 +2335,7 @@ YASnippet is a templating system. It's powerful.
(yas-global-mode 1)) (yas-global-mode 1))
#+end_src #+end_src
** Tempel *** Tempel
Tempel is another templating system. Also perhaps even more powerful with it's elisp way of creating snippets, but elisp is tougher to work around. But, I'll give it a try. Tempel is another templating system. Also perhaps even more powerful with it's elisp way of creating snippets, but elisp is tougher to work around. But, I'll give it a try.
#+BEGIN_SRC emacs-lisp #+BEGIN_SRC emacs-lisp
(use-package tempel (use-package tempel
@ -2392,7 +2370,7 @@ Tempel is another templating system. Also perhaps even more powerful with it's e
) )
#+END_SRC #+END_SRC
** Projectile *** Projectile
I'm going to use projectile to keep my projects inline. I'm going to use projectile to keep my projects inline.
#+begin_src emacs-lisp #+begin_src emacs-lisp
(use-package projectile (use-package projectile
@ -2409,15 +2387,15 @@ I'm going to use projectile to keep my projects inline.
"fP" 'project-switch-project)) "fP" 'project-switch-project))
#+end_src #+end_src
** HTTPD *** HTTPD
In order to view created websites, I'll use =simple-httpd= to get a web server running in emacs for preview. In order to view created websites, I'll use =simple-httpd= to get a web server running in emacs for preview.
#+BEGIN_SRC emacs-lisp #+BEGIN_SRC emacs-lisp
(use-package simple-httpd (use-package simple-httpd
:ensure t) :ensure t)
#+END_SRC #+END_SRC
** Navigation *** Navigation
*** Avy **** Avy
Avy provides a lot of functions to search through the current buffer. Most of the time I use evil or consult functions to find what I'm looking for, but avy provides a lot of small movements that are more useful for visible movements. Avy provides a lot of functions to search through the current buffer. Most of the time I use evil or consult functions to find what I'm looking for, but avy provides a lot of small movements that are more useful for visible movements.
#+begin_src emacs-lisp #+begin_src emacs-lisp
(use-package avy (use-package avy
@ -2437,7 +2415,7 @@ These are some evil bindings to avy.
"gl" 'avy-goto-line)) "gl" 'avy-goto-line))
#+end_src #+end_src
*** Ace-Link **** Ace-Link
Ace link provides an avy like search for links. Upon using the keybindings presented it opens the url. Ace link provides an avy like search for links. Upon using the keybindings presented it opens the url.
#+begin_src emacs-lisp #+begin_src emacs-lisp
(use-package ace-link (use-package ace-link
@ -2447,7 +2425,7 @@ Ace link provides an avy like search for links. Upon using the keybindings prese
"gL" 'ace-link)) "gL" 'ace-link))
#+end_src #+end_src
** Window Management *** Window Management
#+begin_src emacs-lisp #+begin_src emacs-lisp
(setq display-buffer-alist (setq display-buffer-alist
(if (string= system-name "syl") (if (string= system-name "syl")
@ -2550,7 +2528,7 @@ Since I like to make my window manager handle a lot of the window management, I
(delete-frame)) (delete-frame))
#+end_src #+end_src
*** Ace Window **** Ace Window
#+begin_src emacs-lisp #+begin_src emacs-lisp
(use-package ace-window (use-package ace-window
:config (ace-window-display-mode) :config (ace-window-display-mode)
@ -2561,7 +2539,7 @@ Since I like to make my window manager handle a lot of the window management, I
"ww" '(ace-window :which-key "select window"))) "ww" '(ace-window :which-key "select window")))
#+end_src #+end_src
** Help *** Help
#+begin_src emacs-lisp #+begin_src emacs-lisp
(use-package helpful (use-package helpful
:ensure nil :ensure nil
@ -2591,7 +2569,7 @@ Since I like to make my window manager handle a lot of the window management, I
(s-trim (s-join "\n" relevant-lines))))) (s-trim (s-join "\n" relevant-lines)))))
#+end_src #+end_src
** Format *** Format
#+begin_src emacs-lisp #+begin_src emacs-lisp
(use-package format-all (use-package format-all
:config :config
@ -2600,7 +2578,7 @@ Since I like to make my window manager handle a lot of the window management, I
:defer 1) :defer 1)
#+end_src #+end_src
** Languages *** Languages
Before getting into languages, often times compilation of things use ansi-colors, so in order to make sure those characters get rendered properly, here we make sure that those colors work ok. Before getting into languages, often times compilation of things use ansi-colors, so in order to make sure those characters get rendered properly, here we make sure that those colors work ok.
#+BEGIN_SRC emacs-lisp #+BEGIN_SRC emacs-lisp
@ -2622,7 +2600,7 @@ Finally, here are some auto modes I'd like to setup
(add-to-list 'auto-mode-alist '("\\.yuck?\\'" . lisp-data-mode)) (add-to-list 'auto-mode-alist '("\\.yuck?\\'" . lisp-data-mode))
#+end_src #+end_src
*** Tree Sitter **** Tree Sitter
I'm gonna try this to speed up emacs and make it nicer I'm gonna try this to speed up emacs and make it nicer
#+begin_src emacs-lisp :tangle no #+begin_src emacs-lisp :tangle no
(use-package tree-sitter (use-package tree-sitter
@ -2635,7 +2613,7 @@ I'm gonna try this to speed up emacs and make it nicer
#+begin_src emacs-lisp #+begin_src emacs-lisp
#+end_src #+end_src
*** C++ **** C++
In c++ I just want to make sure lsp is called when enter c++-mode In c++ I just want to make sure lsp is called when enter c++-mode
#+BEGIN_SRC emacs-lisp #+BEGIN_SRC emacs-lisp
(defun astyle-this-buffer () (defun astyle-this-buffer ()
@ -2670,7 +2648,7 @@ In c++ I just want to make sure lsp is called when enter c++-mode
(add-hook 'c-mode-common-hook (lambda () (add-hook 'before-save-hook 'astyle-before-save))) (add-hook 'c-mode-common-hook (lambda () (add-hook 'before-save-hook 'astyle-before-save)))
#+END_SRC #+END_SRC
*** Rust **** Rust
I'd like to start learning and using rust if I can. I'd like to start learning and using rust if I can.
#+begin_src emacs-lisp #+begin_src emacs-lisp
(use-package rustic (use-package rustic
@ -2689,7 +2667,7 @@ I'd like to start learning and using rust if I can.
"gc" 'rustic-compile)) "gc" 'rustic-compile))
#+end_src #+end_src
*** Web **** Web
For developing websites, I like to use web-mode For developing websites, I like to use web-mode
#+begin_src emacs-lisp #+begin_src emacs-lisp
(use-package web-mode (use-package web-mode
@ -2717,21 +2695,21 @@ For developing websites, I like to use web-mode
) )
#+end_src #+end_src
*** Lua **** Lua
Since I use the Awesome WM I thought it'd be good to have lua around. It's also in a lot of things. Since I use the Awesome WM I thought it'd be good to have lua around. It's also in a lot of things.
#+begin_src emacs-lisp #+begin_src emacs-lisp
(use-package lua-mode (use-package lua-mode
:mode ("\\.lua\\'" . lua-mode)) :mode ("\\.lua\\'" . lua-mode))
#+end_src #+end_src
*** Nix **** Nix
I've been transitioning more of my OS to NixOS. Let's get =nix-mode= working. I've been transitioning more of my OS to NixOS. Let's get =nix-mode= working.
#+begin_src emacs-lisp #+begin_src emacs-lisp
(use-package nix-mode (use-package nix-mode
:mode "\\.nix\\'") :mode "\\.nix\\'")
#+end_src #+end_src
*** LSP **** LSP
LSP is useful... LSP is useful...
#+begin_src emacs-lisp :tangle no #+begin_src emacs-lisp :tangle no
(use-package lsp-mode (use-package lsp-mode
@ -2775,7 +2753,7 @@ LSP is useful...
:after lsp) :after lsp)
#+end_src #+end_src
*** Eglot **** Eglot
Let's give eglot a try. Let's give eglot a try.
#+begin_src emacs-lisp #+begin_src emacs-lisp
(use-package eglot (use-package eglot
@ -2798,20 +2776,20 @@ Let's give eglot a try.
"gs" 'consult-eglot-symbols)) "gs" 'consult-eglot-symbols))
#+end_src #+end_src
*** CMAKE **** CMAKE
#+begin_src emacs-lisp #+begin_src emacs-lisp
(use-package cmake-mode (use-package cmake-mode
:mode ("\\CMakeLists.txt\\'" . cmake-mode)) :mode ("\\CMakeLists.txt\\'" . cmake-mode))
#+end_src #+end_src
*** Fennel **** Fennel
I use fennel to build my awesomewm config. So, we'll need that downloaded. I use fennel to build my awesomewm config. So, we'll need that downloaded.
#+begin_src emacs-lisp #+begin_src emacs-lisp
(use-package fennel-mode (use-package fennel-mode
:mode ("\\.fnl\\'" . fennel-mode)) :mode ("\\.fnl\\'" . fennel-mode))
#+end_src #+end_src
*** Friar **** Friar
Friar is a fennel repl in the awesome repl. It allows you to interact with AwesomeWM from inside emacs. Friar is a fennel repl in the awesome repl. It allows you to interact with AwesomeWM from inside emacs.
#+begin_src emacs-lisp :tangle no #+begin_src emacs-lisp :tangle no
(use-package friar (use-package friar
@ -2820,7 +2798,7 @@ Friar is a fennel repl in the awesome repl. It allows you to interact with Aweso
:after fennel-mode) :after fennel-mode)
#+end_src #+end_src
*** Yaml **** Yaml
I do a lot of docker management so having yaml is necessary I do a lot of docker management so having yaml is necessary
#+begin_src emacs-lisp #+begin_src emacs-lisp
@ -2844,14 +2822,14 @@ Let's make sure docker is capable of using tramp.
Still need dockerfile-mode in order to be able to edit dockerfiles. Still need dockerfile-mode in order to be able to edit dockerfiles.
*** Fish **** Fish
Fish is my preferred shell and made some scripts in it so I keep this to be able to edit those scripts. Fish is my preferred shell and made some scripts in it so I keep this to be able to edit those scripts.
#+begin_src emacs-lisp #+begin_src emacs-lisp
(use-package fish-mode (use-package fish-mode
:mode ("\\.fish\\'" . fish-mode)) :mode ("\\.fish\\'" . fish-mode))
#+end_src #+end_src
*** Markdown **** Markdown
It's probably smart to have markdown. It's probably smart to have markdown.
#+begin_src emacs-lisp #+begin_src emacs-lisp
(use-package markdown-mode (use-package markdown-mode
@ -2868,7 +2846,7 @@ It's probably smart to have markdown.
"M-k" 'markdown-move-up)) "M-k" 'markdown-move-up))
#+end_src #+end_src
*** QML **** QML
I make some apps in Qt 5 so QML is a needed language although the support in Emacs is lacking. I make some apps in Qt 5 so QML is a needed language although the support in Emacs is lacking.
#+begin_src emacs-lisp #+begin_src emacs-lisp
(use-package qml-mode (use-package qml-mode
@ -2889,14 +2867,14 @@ I make some apps in Qt 5 so QML is a needed language although the support in Ema
;; :after qml-mode) ;; :after qml-mode)
#+end_src #+end_src
*** CSV **** CSV
Sometimes I need to edit CSV files quickly Sometimes I need to edit CSV files quickly
#+begin_src emacs-lisp #+begin_src emacs-lisp
(use-package csv-mode (use-package csv-mode
:mode ("\\.csv\\'" . csv-mode)) :mode ("\\.csv\\'" . csv-mode))
#+end_src #+end_src
*** Restclient **** Restclient
Sometimes dealing with REST APIs it's easiest to do this incrementally with restclient.el Sometimes dealing with REST APIs it's easiest to do this incrementally with restclient.el
#+begin_src emacs-lisp #+begin_src emacs-lisp
(use-package restclient (use-package restclient
@ -2909,7 +2887,7 @@ Let's also add org-babel support for this to create documentation easier.
:after org) :after org)
#+end_src #+end_src
*** Dart/Flutter **** Dart/Flutter
I may get into flutter development over using felgo..... but i'm not happy about it.... I may get into flutter development over using felgo..... but i'm not happy about it....
#+begin_src emacs-lisp #+begin_src emacs-lisp
(use-package dart-mode (use-package dart-mode
@ -2933,16 +2911,22 @@ Let's also add the android-sdk tools to emacs' path.
#+begin_src emacs-lisp #+begin_src emacs-lisp
(add-to-list 'exec-path "/opt/android-sdk/cmdline-tools/latest/bin") (add-to-list 'exec-path "/opt/android-sdk/cmdline-tools/latest/bin")
#+end_src #+end_src
**** php-mode
Sometimes I have to deal with cruddy php-mode
#+begin_src emacs-lisp
(use-package php-mode
:mode ("\\.php\\'" . php-mode))
#+end_src
** direnv *** direnv
#+begin_src emacs-lisp #+begin_src emacs-lisp
(use-package direnv (use-package direnv
:config :config
(direnv-mode)) (direnv-mode))
#+end_src #+end_src
** File Management *** File Management
*** Dired **** Dired
I'm making a small function in here to open files in the appropriate program using XDG defaults. This is like opening odt files in Libreoffice or mp4 files in MPV. I'm making a small function in here to open files in the appropriate program using XDG defaults. This is like opening odt files in Libreoffice or mp4 files in MPV.
#+begin_src emacs-lisp #+begin_src emacs-lisp
(use-package dired (use-package dired
@ -3071,7 +3055,7 @@ We need a function to copy the full filename to kill-ring
"C" 'dired-rsync)) "C" 'dired-rsync))
#+end_src #+end_src
**** Dirvish ***** Dirvish
Let's try using dirvish as a kind of ranger Let's try using dirvish as a kind of ranger
#+begin_src emacs-lisp :tangle no #+begin_src emacs-lisp :tangle no
(use-package dirvish (use-package dirvish
@ -3121,7 +3105,7 @@ Let's try using dirvish as a kind of ranger
"q" 'chris/dirvish-quit)) "q" 'chris/dirvish-quit))
#+end_src #+end_src
*** Tramp **** Tramp
#+begin_src emacs-lisp #+begin_src emacs-lisp
(require 'tramp) (require 'tramp)
(add-to-list 'tramp-default-proxies-alist (add-to-list 'tramp-default-proxies-alist
@ -3130,13 +3114,13 @@ Let's try using dirvish as a kind of ranger
'((regexp-quote (system-name)) nil nil)) '((regexp-quote (system-name)) nil nil))
#+end_src #+end_src
** Ledger *** Ledger
Ledger mode Ledger mode
#+begin_src emacs-lisp #+begin_src emacs-lisp
(use-package ledger-mode) (use-package ledger-mode)
#+end_src #+end_src
** MU4E *** MU4E
#+begin_src emacs-lisp #+begin_src emacs-lisp
(use-package mu4e (use-package mu4e
:load-path "/usr/share/emacs/site-lisp/mu4e/" :load-path "/usr/share/emacs/site-lisp/mu4e/"
@ -3337,7 +3321,7 @@ Let's add org-msg to write emails in org-mode
/Praising God in all things!/ /Praising God in all things!/
#+end_signature")) #+end_signature"))
#+end_src #+end_src
** Calendar *** Calendar
#+begin_src emacs-lisp #+begin_src emacs-lisp
(use-package calfw (use-package calfw
:commands chris/calfw-calendar-open :commands chris/calfw-calendar-open
@ -3393,21 +3377,21 @@ Let's add org-msg to write emails in org-mode
"q" 'cfw:details-kill-buffer-command)) "q" 'cfw:details-kill-buffer-command))
#+end_src #+end_src
*** Calfw-Org **** Calfw-Org
Here we can use org as a way to create calfw sources in the calendar view. Here we can use org as a way to create calfw sources in the calendar view.
#+begin_src emacs-lisp #+begin_src emacs-lisp
(use-package calfw-org (use-package calfw-org
:after calfw) :after calfw)
#+end_src #+end_src
*** Calfw-ical **** Calfw-ical
Here we setup an easy way to use ical as a source for calendar views. Here we setup an easy way to use ical as a source for calendar views.
#+begin_src emacs-lisp #+begin_src emacs-lisp
(use-package calfw-ical (use-package calfw-ical
:after calfw) :after calfw)
#+end_src #+end_src
** Org-Caldav-sync *** Org-Caldav-sync
I'd like to sync my org-files to caldav and hopefully use more native android apps to manage tasks and reminders. I'd like to sync my org-files to caldav and hopefully use more native android apps to manage tasks and reminders.
#+BEGIN_SRC emacs-lisp #+BEGIN_SRC emacs-lisp
(use-package org-caldav (use-package org-caldav
@ -3423,7 +3407,7 @@ I'd like to sync my org-files to caldav and hopefully use more native android ap
org-icalendar-use-scheduled '(todo-start event-if-todo))) org-icalendar-use-scheduled '(todo-start event-if-todo)))
#+END_SRC #+END_SRC
** Org Notifications *** Org Notifications
I'd really like to have notifications for when things are scheduled so that I get my butt to working. I'd really like to have notifications for when things are scheduled so that I get my butt to working.
#+BEGIN_SRC emacs-lisp :tangle no #+BEGIN_SRC emacs-lisp :tangle no
(use-package org-notifications (use-package org-notifications
@ -3440,7 +3424,7 @@ I'd really like to have notifications for when things are scheduled so that I ge
(setq alert-default-style 'libnotify) (setq alert-default-style 'libnotify)
(org-wild-notifier-mode +1)) (org-wild-notifier-mode +1))
#+END_SRC #+END_SRC
** Magit *** Magit
Use magit, because why wouldn't you? duh! Use magit, because why wouldn't you? duh!
#+begin_src emacs-lisp #+begin_src emacs-lisp
(use-package magit (use-package magit
@ -3455,7 +3439,7 @@ Use magit, because why wouldn't you? duh!
(magit-display-buffer-function #'magit-display-buffer-same-window-except-diff-v1)) (magit-display-buffer-function #'magit-display-buffer-same-window-except-diff-v1))
#+end_src #+end_src
** Eshell *** Eshell
Let's add our own eshell prompt. and set the password cache to a significantly higher time in order to not need to constantly reuse my password. Let's add our own eshell prompt. and set the password cache to a significantly higher time in order to not need to constantly reuse my password.
#+begin_src emacs-lisp #+begin_src emacs-lisp
(use-package eshell (use-package eshell
@ -3607,20 +3591,20 @@ Let's add our own eshell prompt. and set the password cache to a significantly h
"C-d" 'kill-buffer-and-window)) "C-d" 'kill-buffer-and-window))
#+end_src #+end_src
*** EAT **** EAT
Emulate a terminal Emulate a terminal
#+begin_src emacs-lisp #+begin_src emacs-lisp
(add-hook 'eshell-load-hook #'eat-eshell-mode) (add-hook 'eshell-load-hook #'eat-eshell-mode)
#+end_src #+end_src
*** Esh-autosuggest **** Esh-autosuggest
#+begin_src emacs-lisp :tangle no #+begin_src emacs-lisp :tangle no
(use-package esh-autosuggest (use-package esh-autosuggest
:hook (eshell-mode . esh-autosuggest-mode) :hook (eshell-mode . esh-autosuggest-mode)
:ensure nil) :ensure nil)
#+end_src #+end_src
** Vterm *** Vterm
#+begin_src emacs-lisp #+begin_src emacs-lisp
(setq vterm-buffer-name-string "vterm %s") (setq vterm-buffer-name-string "vterm %s")
(defun chris/vterm-setup () (defun chris/vterm-setup ()
@ -3629,7 +3613,7 @@ Emulate a terminal
(add-hook 'vterm-mode-hook 'chris/vterm-setup) (add-hook 'vterm-mode-hook 'chris/vterm-setup)
#+end_src #+end_src
** Sly *** Sly
Using sly makes a lot better common-lisp interaction within emacs. Using sly makes a lot better common-lisp interaction within emacs.
#+begin_src emacs-lisp #+begin_src emacs-lisp
(use-package sly (use-package sly
@ -3643,7 +3627,7 @@ Using sly makes a lot better common-lisp interaction within emacs.
(sly-connect "localhost" 4006))) (sly-connect "localhost" 4006)))
#+end_src #+end_src
** PDF-Tools *** PDF-Tools
Let's use pdf-tools for a lot better interaction with pdfs. Let's use pdf-tools for a lot better interaction with pdfs.
#+begin_src emacs-lisp #+begin_src emacs-lisp
(use-package pdf-tools (use-package pdf-tools
@ -3658,7 +3642,7 @@ Let's use pdf-tools for a lot better interaction with pdfs.
(add-hook 'pdf-view-mode 'pdf-view-fit-page-to-window)) (add-hook 'pdf-view-mode 'pdf-view-fit-page-to-window))
#+end_src #+end_src
** EPUB *** EPUB
#+begin_src emacs-lisp #+begin_src emacs-lisp
(use-package nov (use-package nov
:mode ("\\.epub\\'" . nov-mode) :mode ("\\.epub\\'" . nov-mode)
@ -3675,7 +3659,7 @@ Let's use pdf-tools for a lot better interaction with pdfs.
(add-hook 'nov-mode-hook 'chris/setup-nov-mode)) (add-hook 'nov-mode-hook 'chris/setup-nov-mode))
#+end_src #+end_src
** EAF (Emacs Application Framework) *** EAF (Emacs Application Framework)
#+begin_src emacs-lisp :tangle no #+begin_src emacs-lisp :tangle no
(use-package eaf (use-package eaf
@ -3688,7 +3672,7 @@ Let's use pdf-tools for a lot better interaction with pdfs.
(eaf-browser-enable-adblocker t)) (eaf-browser-enable-adblocker t))
#+end_src #+end_src
** Elfeed *** Elfeed
#+begin_src emacs-lisp #+begin_src emacs-lisp
(use-package elfeed (use-package elfeed
:commands (elfeed) :commands (elfeed)
@ -3822,7 +3806,7 @@ interfere with the default `bongo-playlist-buffer'."
(elfeed-update)) (elfeed-update))
#+end_src #+end_src
** Bongo *** Bongo
#+begin_src emacs-lisp #+begin_src emacs-lisp
(use-package bongo (use-package bongo
:commands (bongo bongo-playlist-buffer) :commands (bongo bongo-playlist-buffer)
@ -3916,7 +3900,7 @@ interfere with the default `bongo-playlist-buffer'."
"q" 'bury-buffer)) "q" 'bury-buffer))
#+end_src #+end_src
** EMMS *** EMMS
Since Bongo seems kinda difficult I shall give EMMS another try. Since Bongo seems kinda difficult I shall give EMMS another try.
#+begin_src emacs-lisp #+begin_src emacs-lisp
(use-package emms (use-package emms
@ -3957,7 +3941,7 @@ Since Bongo seems kinda difficult I shall give EMMS another try.
"D" 'emms-browser-view-in-dired)) "D" 'emms-browser-view-in-dired))
#+end_src #+end_src
** Transmission *** Transmission
I use transmission on a server to manage my torrents I use transmission on a server to manage my torrents
#+begin_src emacs-lisp #+begin_src emacs-lisp
(use-package transmission (use-package transmission
@ -3984,7 +3968,7 @@ I use transmission on a server to manage my torrents
"ot" 'transmission)) "ot" 'transmission))
#+end_src #+end_src
** HASS *** HASS
Hass is a package to control Home Assistant. I use HA so... I like HASS. Hass is a package to control Home Assistant. I use HA so... I like HASS.
#+begin_src emacs-lisp :tangle no #+begin_src emacs-lisp :tangle no
(use-package hass (use-package hass
@ -3998,7 +3982,7 @@ Hass is a package to control Home Assistant. I use HA so... I like HASS.
"oh" 'hass-dash-open)) "oh" 'hass-dash-open))
#+end_src #+end_src
** Pass *** Pass
I like to keep my passwords in password-store for a very unixy way of doing things. I like to keep my passwords in password-store for a very unixy way of doing things.
#+begin_src emacs-lisp #+begin_src emacs-lisp
(use-package auth-source-pass (use-package auth-source-pass
@ -4027,7 +4011,7 @@ I like to keep my passwords in password-store for a very unixy way of doing thin
"st" 'password-store-otp-token-copy)) "st" 'password-store-otp-token-copy))
#+end_src #+end_src
** Matrix/Ement *** Matrix/Ement
Matrix.el is a decent enough matrix client built in emacs. Like it. Matrix.el is a decent enough matrix client built in emacs. Like it.
#+begin_src emacs-lisp #+begin_src emacs-lisp
(use-package plz (use-package plz
@ -4049,7 +4033,7 @@ Matrix.el is a decent enough matrix client built in emacs. Like it.
"oM" 'ement-list-rooms)) "oM" 'ement-list-rooms))
#+end_src #+end_src
** Mastodon *** Mastodon
I'd like to access the mastodon world through emacs too. I'd like to access the mastodon world through emacs too.
#+begin_src emacs-lisp #+begin_src emacs-lisp
(use-package mastodon (use-package mastodon
@ -4071,7 +4055,7 @@ I'd like to access the mastodon world through emacs too.
"N" 'mastodon-notifications--timeline)) "N" 'mastodon-notifications--timeline))
#+end_src #+end_src
** ActivityWatch *** ActivityWatch
I like to track my time with ActivityWatch so I can notice and kill bad habits. At least I used to but it is pretty heavy on resources and doesn't work on Wayland. I like to track my time with ActivityWatch so I can notice and kill bad habits. At least I used to but it is pretty heavy on resources and doesn't work on Wayland.
#+begin_src emacs-lisp :tangle no #+begin_src emacs-lisp :tangle no
(use-package activity-watch-mode (use-package activity-watch-mode
@ -4081,7 +4065,7 @@ I like to track my time with ActivityWatch so I can notice and kill bad habits.
(global-activity-watch-mode -1))) (global-activity-watch-mode -1)))
#+end_src #+end_src
** LanguageTool *** LanguageTool
I am going to try and use LanguageTool to fix grammatical issues. I am going to try and use LanguageTool to fix grammatical issues.
#+begin_src emacs-lisp #+begin_src emacs-lisp
@ -4102,12 +4086,12 @@ I am going to try and use LanguageTool to fix grammatical issues.
languagetool-server-command "/home/chris/.emacs.d/languagetool/languagetool-server.jar")) languagetool-server-command "/home/chris/.emacs.d/languagetool/languagetool-server.jar"))
#+end_src #+end_src
** qrencode *** qrencode
#+begin_src emacs-lisp #+begin_src emacs-lisp
(use-package qrencode) (use-package qrencode)
#+end_src #+end_src
** MyBible *** MyBible
MyBible is going to be set of functions for creating and using a bible app within Emacs. Let's see if we can't make it work. MyBible is going to be set of functions for creating and using a bible app within Emacs. Let's see if we can't make it work.
#+begin_src emacs-lisp :tangle no #+begin_src emacs-lisp :tangle no
(defun chris/find-verse () (defun chris/find-verse ()
@ -4118,7 +4102,7 @@ MyBible is going to be set of functions for creating and using a bible app withi
) )
#+end_src #+end_src
** Performance *** Performance
Here we have a bunch of performance tweaks Here we have a bunch of performance tweaks
#+begin_src emacs-lisp #+begin_src emacs-lisp
;; Reduce rendering/line scan work for Emacs by not rendering cursors or regions ;; Reduce rendering/line scan work for Emacs by not rendering cursors or regions
@ -4149,7 +4133,7 @@ Here we have a bunch of performance tweaks
(setq redisplay-skip-fontification-on-input t) (setq redisplay-skip-fontification-on-input t)
#+end_src #+end_src
*** Garbage Collection **** Garbage Collection
We set the =gc-cons-threshold= variable to really high, now lets set it back low to make sure emacs performs properly. We set the =gc-cons-threshold= variable to really high, now lets set it back low to make sure emacs performs properly.
#+begin_src emacs-lisp #+begin_src emacs-lisp
@ -4169,7 +4153,7 @@ Let's also use an automatic garbage collector while idle to make better input.
gcmh-verbose nil)) gcmh-verbose nil))
#+end_src #+end_src
** Logging *** Logging
Using Emacs 28 there are a lot of comp warnings so I am suppressing those for a quieter compilation. Using Emacs 28 there are a lot of comp warnings so I am suppressing those for a quieter compilation.
#+begin_src emacs-lisp #+begin_src emacs-lisp
(setq warning-suppress-types '((comp))) (setq warning-suppress-types '((comp)))

23
init.el
View file

@ -159,7 +159,7 @@
;; Please note the list `("-d" "en_US")` contains ACTUAL parameters passed to hunspell ;; Please note the list `("-d" "en_US")` contains ACTUAL parameters passed to hunspell
;; You could use `("-d" "en_US,en_US-med")` to check with multiple dictionaries ;; You could use `("-d" "en_US,en_US-med")` to check with multiple dictionaries
'(("en_US" "[[:alpha:]]" "[^[:alpha:]]" "[']" nil ("-d" "en_US") nil utf-8))) '(("en_US" "[[:alpha:]]" "[^[:alpha:]]" "[']" nil ("-d" "en_US") nil utf-8)))
(add-hook 'org-mode-hook 'chris/org-mode-setup) (add-hook 'org-mode-hook 'chris/org-mode-setup)
(use-package no-littering) (use-package no-littering)
@ -168,6 +168,14 @@
(setq auto-save-file-name-transforms (setq auto-save-file-name-transforms
`((".*" ,(no-littering-expand-var-file-name "auto-save/") t))) `((".*" ,(no-littering-expand-var-file-name "auto-save/") t)))
(setq backup-directory-alist '(("." . "~/.emacs.d/backup"))
backup-by-copying t ; Don't delink hardlinks
version-control t ; Use version numbers on backups
delete-old-versions t ; Automatically delete excess backups
kept-new-versions 20 ; how many of the newest versions to keep
kept-old-versions 5 ; and how many of the old
)
(let ((alist '((?! . "\\(?:!\\(?:==\\|[!=]\\)\\)") (let ((alist '((?! . "\\(?:!\\(?:==\\|[!=]\\)\\)")
(?# . "\\(?:#\\(?:###?\\|_(\\|[!#(:=?[_{]\\)\\)") (?# . "\\(?:#\\(?:###?\\|_(\\|[!#(:=?[_{]\\)\\)")
(?$ . "\\(?:\\$>\\)") (?$ . "\\(?:\\$>\\)")
@ -339,7 +347,8 @@
(visual-fill-column-mode +1) (visual-fill-column-mode +1)
(display-line-numbers-mode -1) (display-line-numbers-mode -1)
(variable-pitch-mode +1) (variable-pitch-mode +1)
(flyspell-mode +1) (languagetool-server-start)
(languagetool-server-mode +1)
(setq visual-fill-column-width 100 (setq visual-fill-column-width 100
visual-fill-column-center-text t) visual-fill-column-center-text t)
@ -1336,6 +1345,13 @@ All my (performant) foldings needs are met between this and `org-show-subtree'
(setq gptel-default-mode 'org-mode (setq gptel-default-mode 'org-mode
gptel-api-key "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")) gptel-api-key "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"))
(use-package jinx
:hook (emacs-startup . global-jinx-mode)
:init (flyspell-mode -1)
:config (flyspell-mode -1)
:bind (("M-c" . jinx-correct)
("C-M-$" . Jinx-Languages)))
(use-package unicode-fonts (use-package unicode-fonts
:ensure t :ensure t
:config :config
@ -2146,6 +2162,9 @@ targets."
(add-to-list 'exec-path "/opt/android-sdk/cmdline-tools/latest/bin") (add-to-list 'exec-path "/opt/android-sdk/cmdline-tools/latest/bin")
(use-package php-mode
:mode ("\\.php\\'" . php-mode))
(use-package direnv (use-package direnv
:config :config
(direnv-mode)) (direnv-mode))