Added icons to syntax check and did some editting
This commit is contained in:
parent
dcca930e78
commit
a58ae3b59d
|
@ -5,7 +5,7 @@
|
||||||
I'll fill out the how and why of this all as I figure out what the hell I'm doing. My current Emacs Configuration is a mess of copy and pasted snippet loosely grouped together. There's a fair number of work around, to transient configuration issues that now no longer exist, and more of stuff cribbed off StackOverflow & held together with string & bubble gum. While not yet calling Configuration Bankrupt's, I am going to try to see if I can restructure this technical debt.
|
I'll fill out the how and why of this all as I figure out what the hell I'm doing. My current Emacs Configuration is a mess of copy and pasted snippet loosely grouped together. There's a fair number of work around, to transient configuration issues that now no longer exist, and more of stuff cribbed off StackOverflow & held together with string & bubble gum. While not yet calling Configuration Bankrupt's, I am going to try to see if I can restructure this technical debt.
|
||||||
|
|
||||||
|
|
||||||
This Emacs configuration is written using the [[https://en.wikipedia.org/wiki/Literate_programming][Literate Programming]] (sort of) paradigm (well sort of) proposed by [[https://en.wikipedia.org/wiki/Donald_Knuth][Donald Knuth]] in 1984, and uses Hlissner's awesome [[https://github.com/doomemacs/doomemacs][Doom Emacs]] configuration framework. While I like Literate Programming, literate configuration can be a mixed bag. Literate Programming produces more prose then code. Discoverability & readability can be drowned out under the prose about the current thoughts, pros & cons, backstory, deciding thoughts, & moral pondering. While this verbosity[fn:4] aids documentation and understanding, its often at the cost of readability. As a compromise I'm going to version both to the verbose =config.org= file and all of the produced configuration files; this will allow us to =git blame= both the this file and the generated files.
|
This Emacs configuration is written using the [[https://en.wikipedia.org/wiki/Literate_programming][Literate Programming]] (sort of) paradigm (well sort of) proposed by [[https://en.wikipedia.org/wiki/Donald_Knuth][Donald Knuth]] in 1984, and uses Hlissner's awesome [[https://github.com/doomemacs/doomemacs][Doom Emacs]] configuration framework. While I like Literate Programming, literate configuration can be a mixed bag. Literate Programming produces more prose than code. Discoverability & readability can be drowned out under the prose about the current thoughts, pros & cons, backstory, deciding thoughts, & moral pondering. While this verbosity[fn:4] aids documentation and understanding, its often at the cost of readability. As a compromise I'm going to version both to the verbose =config.org= file and all the produced configuration files; this will allow us to =git blame= both this file and the generated files.
|
||||||
|
|
||||||
* Document Structure
|
* Document Structure
|
||||||
** Doom Emacs
|
** Doom Emacs
|
||||||
|
@ -13,20 +13,20 @@ I'm utilizing Hlissner's [[https://github.com/doomemacs/doomemacs][Doom Emacs]]
|
||||||
|
|
||||||
Configuration is located in the ~$DOOMDIR~ directory; this can be located either[fn:3] at =~/.doom.d= or =$XDG_CONFIG_HOME/doom=.
|
Configuration is located in the ~$DOOMDIR~ directory; this can be located either[fn:3] at =~/.doom.d= or =$XDG_CONFIG_HOME/doom=.
|
||||||
** Tangle
|
** Tangle
|
||||||
This org-mode document works by using [[https://orgmode.org/manual/Extracting-Source-Code.html][tangles]]. By default Doom's literate config mode adds any ~#+begin_src~ blocks into the =config.el= file[fn:1]. If you want to tangle to a specific file you pass in a file name.
|
This org-mode document works by using [[https://orgmode.org/manual/Extracting-Source-Code.html][tangles]]. By default, Doom's literate config mode adds any ~#+begin_src~ blocks into the =config.el= file[fn:1]. If you want to tangle to a specific file you pass in a file name.
|
||||||
|
|
||||||
#+begin_src org :tangle no
|
#+begin_src org :tangle no
|
||||||
#+begin_src emacs-lisp :tangle "example.el"
|
#+begin_src emacs-lisp :tangle "example.el"
|
||||||
#+end_src
|
#+end_src
|
||||||
|
|
||||||
or to disable it tangling for a codeblock set the =:tangle= property in code block header to =no=.
|
or to disable it tangling for a code block set the =:tangle= property in code block header to =no=.
|
||||||
|
|
||||||
#+begin_src org :tangle no
|
#+begin_src org :tangle no
|
||||||
#+begin_src orgmode :tangle no
|
#+begin_src orgmode :tangle no
|
||||||
#+end_src
|
#+end_src
|
||||||
|
|
||||||
*** Noweb Reference
|
*** Noweb Reference
|
||||||
This document uses [[https://orgmode.org/manual/Noweb-Reference-Syntax.html][noweb reference syntax]]. This allows us to extract bits of configuration into named codeblocks, which can be interpolated into another code block's variable. For example:
|
This document uses [[https://orgmode.org/manual/Noweb-Reference-Syntax.html][noweb reference syntax]]. This allows us to extract bits of configuration into named code blocks, which can be interpolated into another code block's variable. For example:
|
||||||
|
|
||||||
#+begin_example :tangle no
|
#+begin_example :tangle no
|
||||||
#+NAME: initialization
|
#+NAME: initialization
|
||||||
|
@ -85,7 +85,7 @@ tree $DOOMDIR -L 2
|
||||||
Doom will automatically load the following files.
|
Doom will automatically load the following files.
|
||||||
|
|
||||||
+ =init.el= :: Enabled Doom Modules
|
+ =init.el= :: Enabled Doom Modules
|
||||||
+ =package.el= :: Packages to fetch from MELPA, Github, etc.
|
+ =package.el= :: Packages to fetch from MELPA, GitHub, etc.
|
||||||
+ =config.el= :: General Emacs configuration
|
+ =config.el= :: General Emacs configuration
|
||||||
|
|
||||||
Any additional files should follow the pattern of =+name.el= and should be scoped to that individual purpose.
|
Any additional files should follow the pattern of =+name.el= and should be scoped to that individual purpose.
|
||||||
|
@ -96,10 +96,10 @@ This should be loaded by the =config.el= file by using the =load!= macro[fn:7]
|
||||||
(load! "+name")
|
(load! "+name")
|
||||||
#+end_src
|
#+end_src
|
||||||
|
|
||||||
Currently this includes
|
Currently, this includes
|
||||||
|
|
||||||
- =+orgmode.el= :: Additional configuration for Orgmode. Considering this is one of the primary modes I use emacs in there's a fair bit of configuration there.
|
- =+orgmode.el= :: Additional configuration for Orgmode. Considering this is one of the primary modes I use emacs in there's a fair bit of configuration there.
|
||||||
- =+keybinds.el= :: A relatively new and not fully utilized file. The plan is to use this as a centralized location for all custom keybinds.
|
- =+keybinds.el= :: A relatively new and not fully utilized file. The plan is to use this as a centralized location for all custom key binds.
|
||||||
|
|
||||||
*** Other files
|
*** Other files
|
||||||
There are several other files here not directly used by emacs but are related to it.
|
There are several other files here not directly used by emacs but are related to it.
|
||||||
|
@ -120,7 +120,7 @@ There [[https://nullprogram.com/blog/2016/12/22/][minor but non-zero start time
|
||||||
#+END_SRC
|
#+END_SRC
|
||||||
|
|
||||||
*** Warn user not to modify =*.el= files directly.
|
*** Warn user not to modify =*.el= files directly.
|
||||||
As mentioned above, we are versioning the generated emacs lisp configuration. We shouldn't modified these files as they'll be clobbed anytime the org-tangle is run. Lets include a warning to this effect.
|
As mentioned above, we are versioning the generated emacs lisp configuration. We shouldn't modify these files as they'll be clobbered anytime the org-tangle is run. Let's include a warning to this effect.
|
||||||
|
|
||||||
#+name:modification-warning
|
#+name:modification-warning
|
||||||
#+begin_src emacs-lisp
|
#+begin_src emacs-lisp
|
||||||
|
@ -129,7 +129,7 @@ As mentioned above, we are versioning the generated emacs lisp configuration. We
|
||||||
#+end_src
|
#+end_src
|
||||||
|
|
||||||
*** Applying to all files
|
*** Applying to all files
|
||||||
We need to apply this to all of the following files.
|
We need to apply this to all the following files.
|
||||||
#+begin_src bash :tangle no :exports result :results output verbatim
|
#+begin_src bash :tangle no :exports result :results output verbatim
|
||||||
find ~/.doom.d/* -iname '*.el' | sed "s/.*\///"
|
find ~/.doom.d/* -iname '*.el' | sed "s/.*\///"
|
||||||
#+end_src
|
#+end_src
|
||||||
|
@ -141,7 +141,7 @@ find ~/.doom.d/* -iname '*.el' | sed "s/.*\///"
|
||||||
: init.el
|
: init.el
|
||||||
: packages.el
|
: packages.el
|
||||||
|
|
||||||
Since we've used a named these blocks we can use [[*Noweb Reference][Noweb Reference]] for all of the files.
|
Since we've used a named these blocks we can use [[*Noweb Reference][Noweb Reference]] for all the files.
|
||||||
|
|
||||||
=+keybinds.el=
|
=+keybinds.el=
|
||||||
#+begin_src emacs-lisp :tangle "+keybinds.el" :noweb no-export :comments no
|
#+begin_src emacs-lisp :tangle "+keybinds.el" :noweb no-export :comments no
|
||||||
|
@ -356,7 +356,9 @@ https://github.com/doomemacs/doomemacs/tree/master/modules/checker
|
||||||
|
|
||||||
#+name:doom-checker
|
#+name:doom-checker
|
||||||
#+begin_src emacs-lisp :tangle no
|
#+begin_src emacs-lisp :tangle no
|
||||||
(syntax +childframe) ; tasing you for every semicolon you forget
|
(syntax +childframe ; tasing you for every semicolon you forget
|
||||||
|
+icons
|
||||||
|
+flymake)
|
||||||
(spell ; tasing you for misspelling mispelling
|
(spell ; tasing you for misspelling mispelling
|
||||||
+aspell
|
+aspell
|
||||||
+everywhere)
|
+everywhere)
|
||||||
|
@ -538,8 +540,8 @@ literate
|
||||||
|
|
||||||
|
|
||||||
* General UI Tweaks
|
* General UI Tweaks
|
||||||
** Window Titlebar
|
** Window Title bar
|
||||||
The titlebar display string will display =♢= if there exist unsaved buffer modifications & =♦= otherwise.
|
The title bar display string will display =♢= if there exist unsaved buffer modifications & =♦= otherwise.
|
||||||
|
|
||||||
#+begin_src emacs-lisp :tangle "config.el" :noweb no-export :comments no
|
#+begin_src emacs-lisp :tangle "config.el" :noweb no-export :comments no
|
||||||
(setq doom-fallback-buffer-name "Doom"
|
(setq doom-fallback-buffer-name "Doom"
|
||||||
|
@ -560,7 +562,7 @@ The titlebar display string will display =♢= if there exist unsaved buffer mod
|
||||||
#+end_src
|
#+end_src
|
||||||
|
|
||||||
** Fonts
|
** Fonts
|
||||||
I use the [[https://www.nerdfonts.com/][nerdfont]]'s [[https://github.com/i-tu/Hasklig][Hasklig]] for my monospace font & Huerta Tipografica's [[https://www.huertatipografica.com/en/fonts/alegreya-ht-pro][ Alegreya]] serif font.
|
I use the [[https://www.nerdfonts.com/][nerdfont]]'s [[https://github.com/i-tu/Hasklig][Hasklig]] for my monospaced font & Huerta Tipografica's [[https://www.huertatipografica.com/en/fonts/alegreya-ht-pro][ Alegreya]] serif font.
|
||||||
|
|
||||||
#+begin_src emacs-lisp :tangle "config.el" :noweb no-export :comments no
|
#+begin_src emacs-lisp :tangle "config.el" :noweb no-export :comments no
|
||||||
(setq doom-font (font-spec :family "Hasklig" :size 14 :height 1)
|
(setq doom-font (font-spec :family "Hasklig" :size 14 :height 1)
|
||||||
|
@ -569,21 +571,21 @@ I use the [[https://www.nerdfonts.com/][nerdfont]]'s [[https://github.com/i-tu/H
|
||||||
#+end_src
|
#+end_src
|
||||||
|
|
||||||
* Keys
|
* Keys
|
||||||
Keybinds should be centralized in =$DOOMDIR/+keybinds.el=. This is loaded from =$DOOMDIR/config.el= file via
|
Key binds should be centralized in =$DOOMDIR/+keybinds.el=. This is loaded from =$DOOMDIR/config.el= file via
|
||||||
|
|
||||||
#+begin_src emacs-lisp :tangle "config.el" :noweb no-export :comments no
|
#+begin_src emacs-lisp :tangle "config.el" :noweb no-export :comments no
|
||||||
(load! "+keybinds")
|
(load! "+keybinds")
|
||||||
#+end_src
|
#+end_src
|
||||||
|
|
||||||
|
|
||||||
Doom comes with some good keybind macros (see [[https://github.com/doomemacs/doomemacs/blob/master/docs/faq.org#bind-my-own-keys-or-change-existing-ones][here]] for why). Documentation for this can be found [[https://github.com/doomemacs/doomemacs/blob/master/docs/faq.org#bind-my-own-keys-or-change-existing-ones][here]], but in broad strokes:
|
Doom comes with some good key bind macros (see [[https://github.com/doomemacs/doomemacs/blob/master/docs/faq.org#bind-my-own-keys-or-change-existing-ones][here]] for why). Documentation for this can be found [[https://github.com/doomemacs/doomemacs/blob/master/docs/faq.org#bind-my-own-keys-or-change-existing-ones][here]], but in broad strokes:
|
||||||
|
|
||||||
1. Start with a =map!= macro. You can use
|
1. Start with a =map!= macro. You can use
|
||||||
2. When possible use =:when= to limit scope.
|
2. When possible use =:when= to limit scope.
|
||||||
3. Use =:prefix= and =:prefix-map= where possible.
|
3. Use =:prefix= and =:prefix-map= where possible.
|
||||||
4. Always use =:desc= to describe what is being done.
|
4. Always use =:desc= to describe what is being done.
|
||||||
|
|
||||||
Below is a sample snippet from Rameez Khan's [[https://rameezkhan.me/posts/2020/2020-07-03--adding-keybindings-to-doom-emacs/][blog]] (first hit on "doom emacs keybind" using [[https://duckduckgo.com/][DDG]]):
|
Below is a sample snippet from Rameez Khan's [[https://rameezkhan.me/posts/2020/2020-07-03--adding-keybindings-to-doom-emacs/][blog]] (first hit on "doom emacs key bind" using [[https://duckduckgo.com/][DDG]]):
|
||||||
#+begin_src emacs-lisp :tangle no
|
#+begin_src emacs-lisp :tangle no
|
||||||
(map! :leader
|
(map! :leader
|
||||||
(:prefix-map ("a" . "applications")
|
(:prefix-map ("a" . "applications")
|
||||||
|
@ -592,10 +594,10 @@ Below is a sample snippet from Rameez Khan's [[https://rameezkhan.me/posts/2020/
|
||||||
:desc "Search journal entry" "s" #'org-journal-search)))
|
:desc "Search journal entry" "s" #'org-journal-search)))
|
||||||
#+end_src
|
#+end_src
|
||||||
|
|
||||||
Note: Keybinds should be defined with in the context that they are being used, not here
|
Note: Key binds should be defined with in the context that they are being used, not here
|
||||||
|
|
||||||
** Local Leader
|
** Local Leader
|
||||||
Lets set the local leader to =,=. We may want to remap this to =;= later. Both of these seem to have issues with potential key conflicts with evil-snipe. This seems to primarily exists with regards to org-mode. Github issue can be found [[https://github.com/doomemacs/doomemacs/issues/4242][here]].
|
Lets set the local leader to =,=. We may want to remap this to =;= later. Both of these seem to have issues with potential key conflicts with evil-snipe. This seems to primarily exists in regard to org-mode. GitHub issue can be found [[https://github.com/doomemacs/doomemacs/issues/4242][here]].
|
||||||
|
|
||||||
#+begin_src emacs-lisp :tangle "+keybinds.el" :noweb no-export :comments no
|
#+begin_src emacs-lisp :tangle "+keybinds.el" :noweb no-export :comments no
|
||||||
(setq doom-localleader-key ",")
|
(setq doom-localleader-key ",")
|
||||||
|
@ -616,18 +618,18 @@ Some files we'll need to set the major-mode for manually. Either based on where
|
||||||
(add-to-list 'auto-mode-alist '("/path/to/file/.*\\.file" . markdown-mode))
|
(add-to-list 'auto-mode-alist '("/path/to/file/.*\\.file" . markdown-mode))
|
||||||
#+end_src
|
#+end_src
|
||||||
** Tridactyl
|
** Tridactyl
|
||||||
I am currently using Firefox with [[https://github.com/tridactyl/tridactyl][Tridactyl]]. The =editorcmd= creates a temporary file & opens it with the editor of choice. The domain is included in the temporary file name, but its a fair assumption that it will markdown. We can use this to set the syntax of the file in question. This likely just be markdown.
|
I am currently using Firefox with [[https://github.com/tridactyl/tridactyl][Tridactyl]]. The =editorcmd= creates a temporary file & opens it with the editor of choice. The domain is included in the temporary file name, but it's a fair assumption that it will markdown. We can use this to set the syntax of the file in question. This likely just be markdown.
|
||||||
#+begin_src emacs-lisp :tangle "config.el" :noweb no-export :comments no
|
#+begin_src emacs-lisp :tangle "config.el" :noweb no-export :comments no
|
||||||
(add-to-list 'auto-mode-alist '("/\\(tmp\\|private/var\\)/.*/tmp_.*\\.txt" . markdown-mode))
|
(add-to-list 'auto-mode-alist '("/\\(tmp\\|private/var\\)/.*/tmp_.*\\.txt" . markdown-mode))
|
||||||
#+end_src
|
#+end_src
|
||||||
* Orgmode
|
* Orgmode
|
||||||
This file will be needed for emacs batch automation, where its not reasonable to start up my entire working env. This file can be located at =$DOOMDIR/+orgmode.el=.
|
This file will be needed for emacs batch automation, where it's not reasonable to start up my entire working env. This file can be located at =$DOOMDIR/+orgmode.el=.
|
||||||
|
|
||||||
#+begin_src emacs-lisp :tangle "config.el" :noweb no-export :comments no
|
#+begin_src emacs-lisp :tangle "config.el" :noweb no-export :comments no
|
||||||
(load! "+orgmode")
|
(load! "+orgmode")
|
||||||
#+end_src
|
#+end_src
|
||||||
|
|
||||||
This file may get consumed via emacs batch scripting, so we need ot make sure the orgmode is actually loaded.
|
This file may get consumed via emacs batch scripting, so we need to make sure the orgmode is actually loaded.
|
||||||
|
|
||||||
#+begin_src emacs-lisp :tangle "+orgmode.el" :noweb no-export :comments no
|
#+begin_src emacs-lisp :tangle "+orgmode.el" :noweb no-export :comments no
|
||||||
(require 'org)
|
(require 'org)
|
||||||
|
@ -711,7 +713,7 @@ For configuring it we'll want the following settings:
|
||||||
- =gac-automatically-push-p= :: Automatically push new changes.
|
- =gac-automatically-push-p= :: Automatically push new changes.
|
||||||
- =gac-automatically-add-new-files-p= :: Automatically add new files.
|
- =gac-automatically-add-new-files-p= :: Automatically add new files.
|
||||||
|
|
||||||
Additionally we'll also want to add a big of additional logic so that we will automatically pull changes as well. It may be worth setting up a crontab to automate the pull in the future.
|
Additionally, we'll also want to add a big of additional logic so that we will automatically pull changes as well. It may be worth setting up a crontab to automate the pull in the future.
|
||||||
|
|
||||||
This snippet below is from siatwe's comment [[https://github.com/ryuslash/git-auto-commit-mode/pull/40#issuecomment-1772237807][here]].
|
This snippet below is from siatwe's comment [[https://github.com/ryuslash/git-auto-commit-mode/pull/40#issuecomment-1772237807][here]].
|
||||||
|
|
||||||
|
|
|
@ -87,7 +87,9 @@
|
||||||
vterm ; the best terminal emulation in Emacs
|
vterm ; the best terminal emulation in Emacs
|
||||||
|
|
||||||
:checkers
|
:checkers
|
||||||
(syntax +childframe) ; tasing you for every semicolon you forget
|
(syntax +childframe ; tasing you for every semicolon you forget
|
||||||
|
+icons
|
||||||
|
+flymake)
|
||||||
(spell ; tasing you for misspelling mispelling
|
(spell ; tasing you for misspelling mispelling
|
||||||
+aspell
|
+aspell
|
||||||
+everywhere)
|
+everywhere)
|
||||||
|
|
Loading…
Reference in New Issue
Block a user