feat(org): Remove and reformat org configuration
Remove a lot of extraneous org-mode config. Remove a lot of doom modules not using. Add several useful doom modules (nix, direnv, etc) Reformat configuration
This commit is contained in:
parent
941712eb6f
commit
ac12d307fa
571
config.org
571
config.org
@ -36,23 +36,13 @@ Relative line numbers don't seem to work, because of folding in Org-mode.
|
|||||||
#+begin_src emacs-lisp
|
#+begin_src emacs-lisp
|
||||||
(setq doom-theme 'doom-xcode)
|
(setq doom-theme 'doom-xcode)
|
||||||
(setq doom-font (font-spec :family "Hack Nerd Font Mono" :size 16 :weight 'medium))
|
(setq doom-font (font-spec :family "Hack Nerd Font Mono" :size 16 :weight 'medium))
|
||||||
|
|
||||||
(setq auto-save-default nil) ;I don't like autosaving. Let me do it myself.
|
(setq auto-save-default nil) ;I don't like autosaving. Let me do it myself.
|
||||||
#+end_src
|
|
||||||
|
|
||||||
#+RESULTS:
|
|
||||||
|
|
||||||
** Doom splash screen
|
|
||||||
I really don't like the widgets, and I think it takes longer to load so I get rid of them
|
|
||||||
#+begin_src emacs-lisp
|
|
||||||
(remove-hook '+doom-dashboard-functions #'doom-dashboard-widget-shortmenu)
|
(remove-hook '+doom-dashboard-functions #'doom-dashboard-widget-shortmenu)
|
||||||
(remove-hook '+doom-dashboard-functions #'doom-dashboard-widget-footer)
|
(remove-hook '+doom-dashboard-functions #'doom-dashboard-widget-footer)
|
||||||
|
(setq fancy-splash-image (concat doom-private-dir "emacs.png"))
|
||||||
|
(add-hook 'term-mode-hook 'hide-mode-line-mode)
|
||||||
#+end_src
|
#+end_src
|
||||||
|
|
||||||
Set a sweet splash image
|
|
||||||
#+begin_src emacs-lisp
|
|
||||||
(setq fancy-splash-image (concat doom-private-dir "emacs.png"))
|
|
||||||
#+end_src
|
|
||||||
* Evil configuration
|
* Evil configuration
|
||||||
I want a non-ESC way to get back to normal mode:
|
I want a non-ESC way to get back to normal mode:
|
||||||
#+begin_src emacs-lisp
|
#+begin_src emacs-lisp
|
||||||
@ -62,44 +52,20 @@ I want a non-ESC way to get back to normal mode:
|
|||||||
(map! :desc "Decrement number below or after cursor" :n "C-x" #'evil-numbers/dec-at-pt)
|
(map! :desc "Decrement number below or after cursor" :n "C-x" #'evil-numbers/dec-at-pt)
|
||||||
(map! :n "g j" #'evil-next-visual-line)
|
(map! :n "g j" #'evil-next-visual-line)
|
||||||
(map! :n "g k" #'evil-previous-visual-line)
|
(map! :n "g k" #'evil-previous-visual-line)
|
||||||
|
(map!
|
||||||
|
:map org-agenda-keymap
|
||||||
|
"j" #'evil-next-line
|
||||||
|
"k" #'evil-previous-line)
|
||||||
|
(map!
|
||||||
|
:map org-super-agenda-header-map
|
||||||
|
"j" #'evil-next-line
|
||||||
|
"k" #'evil-previous-line)
|
||||||
#+end_src
|
#+end_src
|
||||||
|
|
||||||
* Terminal setup
|
* Terminal setup
|
||||||
I like to just use bash:
|
|
||||||
#+begin_src emacs-lisp
|
|
||||||
(defun bash nil
|
|
||||||
"Lauch term with /bin/bash"
|
|
||||||
(interactive)
|
|
||||||
(term "/bin/bash"))
|
|
||||||
|
|
||||||
(defun dash nil
|
|
||||||
"Lauch term with /bin/dash"
|
|
||||||
(interactive)
|
|
||||||
(term "/bin/dash"))
|
|
||||||
|
|
||||||
(defun zsh nil
|
|
||||||
"Lauch term with /bin/zsh"
|
|
||||||
(interactive)
|
|
||||||
(term "/bin/zsh"))
|
|
||||||
|
|
||||||
#+end_src
|
|
||||||
|
|
||||||
#+RESULTS:
|
|
||||||
: zsh
|
|
||||||
|
|
||||||
** Shell mappings
|
** Shell mappings
|
||||||
#+begin_src emacs-lisp
|
#+begin_src emacs-lisp
|
||||||
(map! :leader (:prefix ("k" . "shell")
|
(map! :leader (:prefix ("k" . "shell")
|
||||||
|
|
||||||
:desc "Start a bash shell"
|
|
||||||
:n "b" #'bash
|
|
||||||
|
|
||||||
:desc "Start a dash shell"
|
|
||||||
:n "d" #'dash
|
|
||||||
|
|
||||||
:desc "Start a zsh shell"
|
|
||||||
:n "z" #'zsh
|
|
||||||
|
|
||||||
:desc "Start an elisp repl"
|
:desc "Start an elisp repl"
|
||||||
:n "e" #'+emacs-lisp/open-repl
|
:n "e" #'+emacs-lisp/open-repl
|
||||||
|
|
||||||
@ -107,44 +73,13 @@ I like to just use bash:
|
|||||||
:n "j" #'+python/open-repl))
|
:n "j" #'+python/open-repl))
|
||||||
#+end_src
|
#+end_src
|
||||||
|
|
||||||
#+RESULTS:
|
|
||||||
|
|
||||||
,#+RESULTS:
|
|
||||||
|
|
||||||
I don't like the modeline in the terminal.
|
|
||||||
,#+begin_src emacs-lisp
|
|
||||||
(add-hook 'term-mode-hook 'hide-mode-line-mode)
|
|
||||||
#+end_src
|
|
||||||
* Sage-math
|
|
||||||
#+begin_src emacs-lisp
|
|
||||||
(use-package! sage-shell-mode
|
|
||||||
:defer)
|
|
||||||
|
|
||||||
;; Ob-sagemath supports only evaluating with a session.
|
|
||||||
(setq org-babel-default-header-args:sage '((:session . t)
|
|
||||||
(:results . "output")))
|
|
||||||
|
|
||||||
;; C-c c for asynchronous evaluating (only for SageMath code blocks).
|
|
||||||
(with-eval-after-load "org"
|
|
||||||
(define-key org-mode-map (kbd "C-c c") 'ob-sagemath-execute-async))
|
|
||||||
#+end_src
|
|
||||||
I like to have a shortcut for calc as well, for simpler calculations
|
I like to have a shortcut for calc as well, for simpler calculations
|
||||||
#+begin_src emacs-lisp
|
#+begin_src emacs-lisp
|
||||||
(map! :leader
|
(map! :leader
|
||||||
:desc "The Emacs Calculator"
|
:desc "The Emacs Calculator"
|
||||||
"C" #'calc)
|
"C" #'calc)
|
||||||
#+end_src
|
#+end_src
|
||||||
* Beancount
|
|
||||||
** FavaGTK :outdated:
|
|
||||||
I want to launch favagtk more easily. Let's do that here:
|
|
||||||
#+begin_src emacs-lisp
|
|
||||||
(defun fava ()
|
|
||||||
(interactive)
|
|
||||||
(async-shell-command "flatpak run org.gnome.gitlab.johannesjh.favagtk"))
|
|
||||||
(map! :leader
|
|
||||||
:desc "Start favagtk"
|
|
||||||
"r b" #'fava)
|
|
||||||
#+end_src
|
|
||||||
* Useful Functions
|
* Useful Functions
|
||||||
** Get the date from the shell
|
** Get the date from the shell
|
||||||
I want to grab the current date and put it in the buffer.
|
I want to grab the current date and put it in the buffer.
|
||||||
@ -166,9 +101,7 @@ Because I sometimes use Fish or another shell, it's good to make sure bash is ru
|
|||||||
"m" #'insert-current-date-alt)))
|
"m" #'insert-current-date-alt)))
|
||||||
#+end_src
|
#+end_src
|
||||||
|
|
||||||
#+RESULTS:
|
** Convert regex strings to rx :COMMENT:
|
||||||
: insert-current-date-alt
|
|
||||||
** Convert regex strings to rx
|
|
||||||
#+begin_src elisp :tangle packages.el
|
#+begin_src elisp :tangle packages.el
|
||||||
(package! xr)
|
(package! xr)
|
||||||
#+end_src
|
#+end_src
|
||||||
@ -176,9 +109,6 @@ Because I sometimes use Fish or another shell, it's good to make sure bash is ru
|
|||||||
#+begin_src elisp
|
#+begin_src elisp
|
||||||
(use-package! xr)
|
(use-package! xr)
|
||||||
#+end_src
|
#+end_src
|
||||||
* Creating Diagrams and graphs
|
|
||||||
** TODO set default values using org-babel's features for that.
|
|
||||||
|
|
||||||
* Securing Sensitive Files
|
* Securing Sensitive Files
|
||||||
** Age.el
|
** Age.el
|
||||||
#+begin_src emacs-lisp :tangle "packages.el"
|
#+begin_src emacs-lisp :tangle "packages.el"
|
||||||
@ -203,7 +133,7 @@ Because I sometimes use Fish or another shell, it's good to make sure bash is ru
|
|||||||
:END:
|
:END:
|
||||||
This preprocessor script allows me to use Ripgrep with Age to filter agenda files.
|
This preprocessor script allows me to use Ripgrep with Age to filter agenda files.
|
||||||
You can see the configuration for that in [[#agenda-efficient][this section]].
|
You can see the configuration for that in [[#agenda-efficient][this section]].
|
||||||
#+begin_src zsh :tangle "/home/user/age-preprocessor.zsh"
|
#+begin_src zsh :tangle "/home/judah/age-preprocessor.zsh"
|
||||||
#!/usr/bin/env zsh
|
#!/usr/bin/env zsh
|
||||||
|
|
||||||
case "$1" in
|
case "$1" in
|
||||||
@ -244,6 +174,7 @@ Emacs has better default values now, so it will ask to evaluate local variables.
|
|||||||
(setq templates/post-capture-title "#+TITLE: ${title}\n")
|
(setq templates/post-capture-title "#+TITLE: ${title}\n")
|
||||||
(setq templates/post-capture-template (concat templates/post-capture-title templates/post-capture-props))
|
(setq templates/post-capture-template (concat templates/post-capture-title templates/post-capture-props))
|
||||||
#+end_src
|
#+end_src
|
||||||
|
|
||||||
* Org-mode for a great todo list
|
* Org-mode for a great todo list
|
||||||
** Making the Agenda features more efficient
|
** Making the Agenda features more efficient
|
||||||
Using ripgrep we can automatically narrow org-agenda files.
|
Using ripgrep we can automatically narrow org-agenda files.
|
||||||
@ -256,7 +187,7 @@ This piece of code will allow us to capture all the agenda files using the prepr
|
|||||||
#+begin_src sh :exports code :tangle no
|
#+begin_src sh :exports code :tangle no
|
||||||
rg --type-add 'aorg:*.org.age' \
|
rg --type-add 'aorg:*.org.age' \
|
||||||
-torg -taorg \
|
-torg -taorg \
|
||||||
--pre ~/age-preprocessor.zsh --pre-glob '*.age' -l TODO /home/user/org
|
--pre ~/age-preprocessor.zsh --pre-glob '*.age' -l TODO /home/judah/10-19-personal-projects/11-zettelkasten
|
||||||
#+end_src
|
#+end_src
|
||||||
|
|
||||||
Now, of course, this code is not useful as it is--after all, we can't tangle a ~.sh~ script into [[file:config.el]].
|
Now, of course, this code is not useful as it is--after all, we can't tangle a ~.sh~ script into [[file:config.el]].
|
||||||
@ -266,13 +197,10 @@ The rubber hits the road here.
|
|||||||
I'll call that shell command to set the agenda files correctly.
|
I'll call that shell command to set the agenda files correctly.
|
||||||
#+begin_src emacs-lisp
|
#+begin_src emacs-lisp
|
||||||
(defun set-org-agenda-files-ripgrep ()
|
(defun set-org-agenda-files-ripgrep ()
|
||||||
(setq org-agenda-files (split-string (shell-command-to-string "rg --type-add \'aorg:*.org.age\' -torg -taorg --pre ~/age-preprocessor.zsh --pre-glob \'*.age\' -l TODO /home/user/org ")))
|
(setq org-agenda-files (split-string (shell-command-to-string "rg --type-add \'aorg:*.org.age\' -torg -taorg --pre ~/age-preprocessor.zsh --pre-glob \'*.age\' -l TODO /home/judah/10-19-personal-projects/11-zettelkasten/")))
|
||||||
(setq org-agenda-files (remove "/home/user/org/archive.sec.org.age" org-agenda-files)))
|
(setq org-agenda-files (remove "/home/judah/10-19-personal-projects/11-zettelkasten/archive.sec.org.age" org-agenda-files)))
|
||||||
#+end_src
|
#+end_src
|
||||||
|
|
||||||
#+RESULTS:
|
|
||||||
: set-org-agenda-files-ripgrep
|
|
||||||
|
|
||||||
And then we want to call this before building the agenda:
|
And then we want to call this before building the agenda:
|
||||||
#+begin_src emacs-lisp
|
#+begin_src emacs-lisp
|
||||||
(add-hook 'org-agenda-mode-hook 'set-org-agenda-files-ripgrep)
|
(add-hook 'org-agenda-mode-hook 'set-org-agenda-files-ripgrep)
|
||||||
@ -302,21 +230,8 @@ I don't want scheduled items to duplicate if the deadline is up.
|
|||||||
#+end_src
|
#+end_src
|
||||||
|
|
||||||
#+RESULTS:
|
#+RESULTS:
|
||||||
: ~/org/
|
: ~/10-19-personal-projects/11-zettelkasten/
|
||||||
|
|
||||||
*** Keymap
|
|
||||||
#+begin_src emacs-lisp
|
|
||||||
(map!
|
|
||||||
:map org-agenda-keymap
|
|
||||||
"j" #'evil-next-line
|
|
||||||
"k" #'evil-previous-line)
|
|
||||||
(map!
|
|
||||||
:map org-super-agenda-header-map
|
|
||||||
"j" #'evil-next-line
|
|
||||||
"k" #'evil-previous-line)
|
|
||||||
#+end_src
|
|
||||||
|
|
||||||
#+RESULTS:
|
|
||||||
|
|
||||||
** Appearances
|
** Appearances
|
||||||
*** Images Preferences
|
*** Images Preferences
|
||||||
@ -332,7 +247,7 @@ Super-agenda allows many nice configurations to the agenda buffer.
|
|||||||
#+begin_src emacs-lisp :tangle "packages.el"
|
#+begin_src emacs-lisp :tangle "packages.el"
|
||||||
(package! org-super-agenda)
|
(package! org-super-agenda)
|
||||||
#+end_src
|
#+end_src
|
||||||
Is it working now? It sure seems to be, so IDK what was up with it earlier.
|
|
||||||
#+begin_src emacs-lisp
|
#+begin_src emacs-lisp
|
||||||
(use-package! org-super-agenda
|
(use-package! org-super-agenda
|
||||||
:after org-roam
|
:after org-roam
|
||||||
@ -340,60 +255,63 @@ Is it working now? It sure seems to be, so IDK what was up with it earlier.
|
|||||||
|
|
||||||
#+end_src
|
#+end_src
|
||||||
|
|
||||||
|
#+RESULTS:
|
||||||
|
: t
|
||||||
|
|
||||||
Configure the Super Agenda to neatly organize everything.
|
Configure the Super Agenda to neatly organize everything.
|
||||||
#+begin_src emacs-lisp
|
#+begin_src emacs-lisp
|
||||||
(setq org-super-agenda-groups
|
(setq org-super-agenda-groups
|
||||||
'(;; Each group has an implicit boolean OR operator between its selectors.
|
'(;; Each group has an implicit boolean OR operator between its selectors.
|
||||||
|
|
||||||
(:name "Calendar"
|
(:name "Calendar"
|
||||||
:and (:todo nil :not (:scheduled (before "2024-03-17")) :not (:deadline (before "2024-03-17")))
|
:and (:todo nil :not (:scheduled (before "2024-03-17")) :not (:deadline (before "2024-03-17")))
|
||||||
:order 10)
|
:order 10)
|
||||||
|
|
||||||
(:name "Today" ; Optionally specify section name
|
(:name "Today" ; Optionally specify section name
|
||||||
:time-grid t ; Items that appear on the time grid
|
:time-grid t ; Items that appear on the time grid
|
||||||
:todo "TODAY") ; Items that have this TODO keyword
|
:todo "TODAY") ; Items that have this TODO keyword
|
||||||
|
|
||||||
(:name "Important"
|
(:name "Important"
|
||||||
;; Single arguments given alone
|
;; Single arguments given alone
|
||||||
:tag "bills"
|
:tag "bills"
|
||||||
:priority<= "A")
|
:priority<= "A")
|
||||||
(:name "Active Projects"
|
(:name "Active Projects"
|
||||||
:and (:todo "PROJ"
|
:and (:todo "PROJ"
|
||||||
:not (:scheduled (after "2024-03-17"))
|
:not (:scheduled (after "2024-03-17"))
|
||||||
:deadline (after "2024-03-17")))
|
:deadline (after "2024-03-17")))
|
||||||
|
|
||||||
(:name "School"
|
(:name "School"
|
||||||
:tag "school" )
|
:tag "school" )
|
||||||
|
|
||||||
;; Set order of multiple groups at once
|
;; Set order of multiple groups at once
|
||||||
(:order-multi (2 (:name "Shopping in town"
|
(:order-multi (2 (:name "Shopping in town"
|
||||||
;; Boolean AND group matches items that match all subgroups
|
;; Boolean AND group matches items that match all subgroups
|
||||||
:and (:tag "shopping" :tag "@town"))
|
:and (:tag "shopping" :tag "@town"))
|
||||||
(:name "Food-related"
|
(:name "Food-related"
|
||||||
;; Multiple args given in list with implicit OR
|
;; Multiple args given in list with implicit OR
|
||||||
:tag ("food" "dinner"))
|
:tag ("food" "dinner"))
|
||||||
(:name "Habits"
|
(:name "Habits"
|
||||||
:habit t
|
:habit t
|
||||||
:tag "personal")
|
:tag "personal")
|
||||||
(:name "Space-related (non-moon-or-planet-related)"
|
(:name "Space-related (non-moon-or-planet-related)"
|
||||||
;; Regexps match case-insensitively on the entire entry
|
;; Regexps match case-insensitively on the entire entry
|
||||||
:and (:regexp ("space" "NASA")
|
:and (:regexp ("space" "NASA")
|
||||||
;; Boolean NOT also has implicit OR between selectors
|
;; Boolean NOT also has implicit OR between selectors
|
||||||
:not (:regexp "moon" :tag "planet")))))
|
:not (:regexp "moon" :tag "planet")))))
|
||||||
;; Groups supply their own section names when none are given
|
;; Groups supply their own section names when none are given
|
||||||
(:todo "WAITING" :order 8) ; Set order of this section
|
(:todo "WAITING" :order 8) ; Set order of this section
|
||||||
(:todo ("SOMEDAY" "TO-READ" "CHECK" "TO-WATCH" "WATCHING")
|
(:todo ("SOMEDAY" "TO-READ" "CHECK" "TO-WATCH" "WATCHING")
|
||||||
;; Show this group at the end of the agenda (since it has the
|
;; Show this group at the end of the agenda (since it has the
|
||||||
;; highest number). If you specified this group last, items
|
;; highest number). If you specified this group last, items
|
||||||
;; with these todo keywords that e.g. have priority A would be
|
;; with these todo keywords that e.g. have priority A would be
|
||||||
;; displayed in that group instead, because items are grouped
|
;; displayed in that group instead, because items are grouped
|
||||||
;; out in the order the groups are listed.
|
;; out in the order the groups are listed.
|
||||||
:order 9)
|
:order 9)
|
||||||
(:priority<= "B"
|
(:priority<= "B"
|
||||||
;; Show this section after "Today" and "Important", because
|
;; Show this section after "Today" and "Important", because
|
||||||
;; their order is unspecified, defaulting to 0. Sections
|
;; their order is unspecified, defaulting to 0. Sections
|
||||||
;; are displayed lowest-number-first.
|
;; are displayed lowest-number-first.
|
||||||
:order 1)))
|
:order 1)))
|
||||||
#+end_src
|
#+end_src
|
||||||
|
|
||||||
** org-edna
|
** org-edna
|
||||||
@ -410,11 +328,11 @@ Edna allows better dependency handling for todos and the like.
|
|||||||
#+begin_src emacs-lisp
|
#+begin_src emacs-lisp
|
||||||
|
|
||||||
(use-package org-habit
|
(use-package org-habit
|
||||||
:custom
|
:custom
|
||||||
(org-habit-graph-column 1)
|
(org-habit-graph-column 1)
|
||||||
(org-habit-preceding-days 10)
|
(org-habit-preceding-days 10)
|
||||||
(org-habit-following-days 1)
|
(org-habit-following-days 1)
|
||||||
(org-habit-show-habits-only-for-today t))
|
(org-habit-show-habits-only-for-today t))
|
||||||
|
|
||||||
#+end_src
|
#+end_src
|
||||||
|
|
||||||
@ -431,7 +349,7 @@ Inline anki is far better for small cards, and where it is best to maintain a /s
|
|||||||
#+begin_src emacs-lisp :tangle packages.el
|
#+begin_src emacs-lisp :tangle packages.el
|
||||||
(package! asyncloop)
|
(package! asyncloop)
|
||||||
(package! inline-aki
|
(package! inline-aki
|
||||||
:recipe (:host github :repo "meedstrom/inline-anki"))
|
:recipe (:host github :repo "meedstrom/inline-anki"))
|
||||||
#+end_src
|
#+end_src
|
||||||
|
|
||||||
#+begin_src emacs-lisp
|
#+begin_src emacs-lisp
|
||||||
@ -457,20 +375,12 @@ This is okay, but I'd rather find something that isn't already used.
|
|||||||
#+end_src
|
#+end_src
|
||||||
|
|
||||||
* Programming Items
|
* Programming Items
|
||||||
** Editorconfig
|
|
||||||
I need to make sure some different files work with
|
|
||||||
#+begin_src emacs-lisp
|
|
||||||
(after! editorconfig-mode
|
|
||||||
(add-to-list 'editorconfig-mode-alist
|
|
||||||
'(cpp-mode . "cpp")))
|
|
||||||
#+end_src
|
|
||||||
** LSP
|
** LSP
|
||||||
In order for editorconfig to do its thing, indentation by the lsp must be disabled.
|
In order for editorconfig to do its thing, indentation by the lsp must be disabled.
|
||||||
#+begin_src emacs-lisp
|
#+begin_src emacs-lisp
|
||||||
(setq lsp-enable-indentation nil)
|
(setq lsp-enable-indentation nil)
|
||||||
#+end_src emacs-lisp
|
#+end_src emacs-lisp
|
||||||
|
|
||||||
|
|
||||||
* Website
|
* Website
|
||||||
** Capture template
|
** Capture template
|
||||||
#+begin_src emacs-lisp
|
#+begin_src emacs-lisp
|
||||||
@ -479,17 +389,12 @@ In order for editorconfig to do its thing, indentation by the lsp must be disabl
|
|||||||
(setq templates/post-capture-template (concat templates/post-capture-title templates/post-capture-props))
|
(setq templates/post-capture-template (concat templates/post-capture-title templates/post-capture-props))
|
||||||
#+end_src
|
#+end_src
|
||||||
|
|
||||||
|
* Crafting a Writing Environment :export:
|
||||||
** Hugo base directory
|
|
||||||
#+begin_src emacs-lisp
|
|
||||||
(setq org-hugo-base-dir (concat org-directory (file-name-as-directory "website")))
|
|
||||||
(setq org-hugo-default-section-directory "posts")
|
|
||||||
#+end_src
|
|
||||||
* Crafting a Writing Environment
|
|
||||||
For writing I like to automate as much as possible.
|
For writing I like to automate as much as possible.
|
||||||
This means creating an environment that does citations and such /for/ me.
|
This means creating an environment that does citations and such /for/ me.
|
||||||
** Export settings
|
** Export settings
|
||||||
*** Ox-latex
|
*** \LaTeX
|
||||||
|
**** Ox-latex
|
||||||
#+begin_src emacs-lisp
|
#+begin_src emacs-lisp
|
||||||
(after! org
|
(after! org
|
||||||
;; Import ox-latex to get org-latex-classes and other funcitonality
|
;; Import ox-latex to get org-latex-classes and other funcitonality
|
||||||
@ -507,17 +412,17 @@ This means creating an environment that does citations and such /for/ me.
|
|||||||
(setq org-latex-classes nil))))
|
(setq org-latex-classes nil))))
|
||||||
#+end_src
|
#+end_src
|
||||||
|
|
||||||
*** Lualatex as PDF Processor
|
**** Lualatex as PDF Processor
|
||||||
I've found that lualatex does a good job processing PDFs. $hi$
|
I've found that lualatex does a good job processing PDFs. $hi$
|
||||||
#+begin_src emacs-lisp
|
#+begin_src emacs-lisp
|
||||||
(after! ox-latex
|
(after! ox-latex
|
||||||
(setq org-latex-pdf-process
|
(setq org-latex-pdf-process
|
||||||
'("lualatex --output-directory=/home/user/Documents -shell-escape -interaction nonstopmode %f"
|
'("lualatex --output-directory=%o -shell-escape -interaction nonstopmode %f"
|
||||||
"lualatex --output-directory=/home/user/Documents -shell-escape -interaction nonstopmode %f")))
|
"lualatex --output-directory=%o -shell-escape -interaction nonstopmode %f")))
|
||||||
#+end_src
|
#+end_src
|
||||||
|
|
||||||
#+RESULTS:
|
#+RESULTS:
|
||||||
| lualatex --output-directory=/home/user/Documents -shell-escape -interaction nonstopmode %f | lualatex --output-directory=/home/user/Documents -shell-escape -interaction nonstopmode %f |
|
| lualatex --output-directory=/home/judah/Documents -shell-escape -interaction nonstopmode %f | lualatex --output-directory=/home/judah/Documents -shell-escape -interaction nonstopmode %f |
|
||||||
|
|
||||||
$x + 1 = 3$
|
$x + 1 = 3$
|
||||||
#+RESULTS:
|
#+RESULTS:
|
||||||
@ -614,12 +519,8 @@ $x + 1 = 3$
|
|||||||
|
|
||||||
#+end_src
|
#+end_src
|
||||||
|
|
||||||
#+RESULTS:
|
**** COMMENT Fixing dvipng image handling
|
||||||
| mcdowellcv | \documentclass[]{mcdowellcv} |
|
|
||||||
|
|
||||||
*** COMMENT Fixing dvipng image handling
|
|
||||||
#+begin_src emacs-lisp
|
#+begin_src emacs-lisp
|
||||||
|
|
||||||
(defun +org-refresh-latex-images-previews-h ()
|
(defun +org-refresh-latex-images-previews-h ()
|
||||||
(dolist (buffer (doom-buffers-in-mode 'org-mode (buffer-list)))
|
(dolist (buffer (doom-buffers-in-mode 'org-mode (buffer-list)))
|
||||||
(with-current-buffer buffer
|
(with-current-buffer buffer
|
||||||
@ -630,38 +531,8 @@ $x + 1 = 3$
|
|||||||
|
|
||||||
(add-hook 'doom-load-theme-hook #'+org-refresh-latex-images-previews-h)
|
(add-hook 'doom-load-theme-hook #'+org-refresh-latex-images-previews-h)
|
||||||
#+end_src
|
#+end_src
|
||||||
*** Export Function
|
|
||||||
#+begin_src emacs-lisp
|
|
||||||
(defun eww-open-this-file ()
|
|
||||||
(set 'directory (file-name-directory buffer-file-name))
|
|
||||||
(set 'filename (file-name-sans-extension buffer-file-name))
|
|
||||||
(set 'extension ".html")
|
|
||||||
(set 'filename (format "%s%s" filename extension))
|
|
||||||
(eww-open-file filename)
|
|
||||||
(evil-window-left)
|
|
||||||
)
|
|
||||||
|
|
||||||
(defun org-export-and-open-eww ()
|
**** Delete links from inline anki
|
||||||
"Export current file to html and open in eww"
|
|
||||||
(interactive)
|
|
||||||
|
|
||||||
(org-html-export-to-html)
|
|
||||||
(if (equal (file-name-extension buffer-file-name) "org")
|
|
||||||
(eww-open-this-file)
|
|
||||||
(message "Failed")
|
|
||||||
)
|
|
||||||
)
|
|
||||||
#+end_src
|
|
||||||
|
|
||||||
We'll want a handy shortcut for this.
|
|
||||||
#+begin_src emacs-lisp
|
|
||||||
(map! :leader
|
|
||||||
:desc "Export to html and diplay with eww"
|
|
||||||
"r E" #'org-export-and-open-eww)
|
|
||||||
#+end_src
|
|
||||||
#+RESULTS:
|
|
||||||
: /home/user/.config/doom/
|
|
||||||
*** Delete links from inline anki
|
|
||||||
#+begin_src elisp
|
#+begin_src elisp
|
||||||
(defun inline-anki-link-filter (link backend info)
|
(defun inline-anki-link-filter (link backend info)
|
||||||
"Rewrite links in export to preserve link text only"
|
"Rewrite links in export to preserve link text only"
|
||||||
@ -676,7 +547,7 @@ We'll want a handy shortcut for this.
|
|||||||
|
|
||||||
#+begin_src elisp
|
#+begin_src elisp
|
||||||
(add-to-list 'org-export-filter-link-functions
|
(add-to-list 'org-export-filter-link-functions
|
||||||
'inline-anki-link-filter)
|
'inline-anki-link-filter)
|
||||||
#+end_src
|
#+end_src
|
||||||
|
|
||||||
|
|
||||||
@ -719,50 +590,50 @@ First of all, we must configure citar.
|
|||||||
*** Icons for some prettification
|
*** Icons for some prettification
|
||||||
#+begin_src emacs-lisp
|
#+begin_src emacs-lisp
|
||||||
(after! citar
|
(after! citar
|
||||||
(setq citar-indicator-files-icons
|
(setq citar-indicator-files-icons
|
||||||
(citar-indicator-create
|
(citar-indicator-create
|
||||||
:symbol (nerd-icons-faicon
|
:symbol (nerd-icons-faicon
|
||||||
"nf-fa-file_o"
|
"nf-fa-file_o"
|
||||||
:face 'nerd-icons-green
|
:face 'nerd-icons-green
|
||||||
:v-adjust -0.1)
|
:v-adjust -0.1)
|
||||||
:function #'citar-has-files
|
:function #'citar-has-files
|
||||||
:padding " " ; need this because the default padding is too low for these icons
|
:padding " " ; need this because the default padding is too low for these icons
|
||||||
:tag "has:files"))
|
:tag "has:files"))
|
||||||
|
|
||||||
(setq citar-indicator-links-icons
|
(setq citar-indicator-links-icons
|
||||||
(citar-indicator-create
|
(citar-indicator-create
|
||||||
:symbol (nerd-icons-faicon
|
:symbol (nerd-icons-faicon
|
||||||
"nf-fa-link"
|
"nf-fa-link"
|
||||||
:face 'nerd-icons-orange
|
:face 'nerd-icons-orange
|
||||||
:v-adjust 0.01)
|
:v-adjust 0.01)
|
||||||
:function #'citar-has-links
|
:function #'citar-has-links
|
||||||
:padding " "
|
:padding " "
|
||||||
:tag "has:links"))
|
:tag "has:links"))
|
||||||
|
|
||||||
(setq citar-indicator-notes-icons
|
(setq citar-indicator-notes-icons
|
||||||
(citar-indicator-create
|
(citar-indicator-create
|
||||||
:symbol (nerd-icons-codicon
|
:symbol (nerd-icons-codicon
|
||||||
"nf-cod-note"
|
"nf-cod-note"
|
||||||
:face 'nerd-icons-blue
|
:face 'nerd-icons-blue
|
||||||
:v-adjust -0.3)
|
:v-adjust -0.3)
|
||||||
:function #'citar-has-notes
|
:function #'citar-has-notes
|
||||||
:padding " "
|
:padding " "
|
||||||
:tag "has:notes"))
|
:tag "has:notes"))
|
||||||
|
|
||||||
(setq citar-indicator-cited-icons
|
(setq citar-indicator-cited-icons
|
||||||
(citar-indicator-create
|
(citar-indicator-create
|
||||||
:symbol (nerd-icons-faicon
|
:symbol (nerd-icons-faicon
|
||||||
"nf-fa-circle_o"
|
"nf-fa-circle_o"
|
||||||
:face 'nerd-icon-green)
|
:face 'nerd-icon-green)
|
||||||
:function #'citar-is-cited
|
:function #'citar-is-cited
|
||||||
:padding " "
|
:padding " "
|
||||||
:tag "is:cited"))
|
:tag "is:cited"))
|
||||||
|
|
||||||
(setq citar-indicators
|
(setq citar-indicators
|
||||||
(list citar-indicator-files-icons
|
(list citar-indicator-files-icons
|
||||||
citar-indicator-links-icons
|
citar-indicator-links-icons
|
||||||
citar-indicator-notes-icons
|
citar-indicator-notes-icons
|
||||||
citar-indicator-cited-icons)))
|
citar-indicator-cited-icons)))
|
||||||
#+end_src
|
#+end_src
|
||||||
|
|
||||||
** Scholarly Writing Environment with Org-mode
|
** Scholarly Writing Environment with Org-mode
|
||||||
@ -770,45 +641,46 @@ I like to keep formatting simple.
|
|||||||
Let's use a package or two to set a decent document class:
|
Let's use a package or two to set a decent document class:
|
||||||
#+begin_src emacs-lisp
|
#+begin_src emacs-lisp
|
||||||
(add-to-list 'org-latex-classes
|
(add-to-list 'org-latex-classes
|
||||||
'("student-apa7"
|
'("student-apa7"
|
||||||
"\\documentclass[stu]{apa7}
|
"\\documentclass[stu]{apa7}
|
||||||
\\usepackage[]{multicol}
|
\\usepackage[]{multicol}
|
||||||
\\usepackage{mathptmx}
|
\\usepackage{mathptmx}
|
||||||
|
\\usepackage{times}
|
||||||
[NO-DEFAULT-PACKAGES]
|
[NO-DEFAULT-PACKAGES]
|
||||||
[NO-PACKAGES]"
|
[NO-PACKAGES]"
|
||||||
("\\section{%s}" . "\\section*{%s}")
|
("\\section{%s}" . "\\section*{%s}")
|
||||||
("\\subsection{%s}" . "\\subsection*{%s}")
|
("\\subsection{%s}" . "\\subsection*{%s}")
|
||||||
("\\subsubsection{%s}" . "\\subsubsection*{%s}")
|
("\\subsubsection{%s}" . "\\subsubsection*{%s}")
|
||||||
("\\paragraph{%s}" . "\\paragraph*{%s}")
|
("\\paragraph{%s}" . "\\paragraph*{%s}")
|
||||||
("\\subparagraph{%s}" . "\\subparagraph*{%s}")))
|
("\\subparagraph{%s}" . "\\subparagraph*{%s}")))
|
||||||
|
|
||||||
(add-to-list 'org-latex-classes
|
(add-to-list 'org-latex-classes
|
||||||
'("student-turabian"
|
'("student-turabian"
|
||||||
"\\documentclass{turabian-researchpaper}
|
"\\documentclass{turabian-researchpaper}
|
||||||
\\usepackage[]{multicol}
|
\\usepackage[]{multicol}
|
||||||
\\usepackage{mathptmx}
|
\\usepackage{mathptmx}
|
||||||
[NO-PACKAGES]
|
[NO-PACKAGES]
|
||||||
"
|
"
|
||||||
("\\section{%s}" . "\\section*{%s}")
|
("\\section{%s}" . "\\section*{%s}")
|
||||||
("\\subsection{%s}" . "\\subsection*{%s}")
|
("\\subsection{%s}" . "\\subsection*{%s}")
|
||||||
("\\subsubsection{%s}" . "\\subsubsection*{%s}")
|
("\\subsubsection{%s}" . "\\subsubsection*{%s}")
|
||||||
("\\paragraph{%s}" . "\\paragraph*{%s}")
|
("\\paragraph{%s}" . "\\paragraph*{%s}")
|
||||||
("\\subparagraph{%s}" . "\\subparagraph*{%s}")
|
("\\subparagraph{%s}" . "\\subparagraph*{%s}")
|
||||||
("\\usepackage{biblatex-chicago}")))
|
("\\usepackage{biblatex-chicago}")))
|
||||||
|
|
||||||
(add-to-list 'org-latex-classes
|
(add-to-list 'org-latex-classes
|
||||||
'("student-mla"
|
'("student-mla"
|
||||||
"\\documentclass[stu]{mla}
|
"\\documentclass[stu]{mla}
|
||||||
\\hypersetup{hidelinks}
|
\\hypersetup{hidelinks}
|
||||||
\\usepackage[]{multicol}
|
\\usepackage[]{multicol}
|
||||||
\\usepackage{mathptmx} "
|
\\usepackage{mathptmx} "
|
||||||
("\\section{%s}" . "\\section*{%s}")
|
("\\section{%s}" . "\\section*{%s}")
|
||||||
("\\subsection{%s}" . "\\subsection*{%s}")
|
("\\subsection{%s}" . "\\subsection*{%s}")
|
||||||
("\\subsubsection{%s}" . "\\subsubsection*{%s}")
|
("\\subsubsection{%s}" . "\\subsubsection*{%s}")
|
||||||
("\\paragraph{%s}" . "\\paragraph*{%s}")
|
("\\paragraph{%s}" . "\\paragraph*{%s}")
|
||||||
("\\subparagraph{%s}" . "\\subparagraph*{%s}")))
|
("\\subparagraph{%s}" . "\\subparagraph*{%s}")))
|
||||||
|
|
||||||
;; org-latex-compilers = ("pdflatex" "xelatex" "lualatex"), which are the possible values for %latex
|
;; org-latex-compilers = ("pdflatex" "xelatex" "lualatex"), which are the possible values for %latex
|
||||||
#+end_src
|
#+end_src
|
||||||
|
|
||||||
*** Engraving Faces
|
*** Engraving Faces
|
||||||
@ -874,33 +746,33 @@ I use =r= for this purpose. It is close and goes well with *roam*.
|
|||||||
#+begin_src emacs-lisp
|
#+begin_src emacs-lisp
|
||||||
(after! org-roam (map! :leader (:prefix ("r" . "roam")
|
(after! org-roam (map! :leader (:prefix ("r" . "roam")
|
||||||
|
|
||||||
:desc "Search for a node in org-roam files"
|
:desc "Search for a node in org-roam files"
|
||||||
"f" #'org-roam-node-find
|
"f" #'org-roam-node-find
|
||||||
|
|
||||||
:desc "Insert the link to a node from org-roam"
|
:desc "Insert the link to a node from org-roam"
|
||||||
"i" #'org-roam-node-insert
|
"i" #'org-roam-node-insert
|
||||||
|
|
||||||
:desc "Rescan org-roam files and add new nodes to database"
|
:desc "Rescan org-roam files and add new nodes to database"
|
||||||
"s" #'org-roam-db-sync
|
"s" #'org-roam-db-sync
|
||||||
|
|
||||||
:desc "Jump to a random node"
|
:desc "Jump to a random node"
|
||||||
"r" #'org-roam-node-random
|
"r" #'org-roam-node-random
|
||||||
|
|
||||||
:desc "Capture inside an existing or new node"
|
:desc "Capture inside an existing or new node"
|
||||||
"c" #'org-roam-capture
|
"c" #'org-roam-capture
|
||||||
|
|
||||||
:desc "Go to or create a daily note"
|
:desc "Go to or create a daily note"
|
||||||
"d" #'org-roam-dailies-goto-today
|
"d" #'org-roam-dailies-goto-today
|
||||||
|
|
||||||
:desc "Seek a daily note"
|
:desc "Seek a daily note"
|
||||||
"D" #'org-roam-dailies-goto-date
|
"D" #'org-roam-dailies-goto-date
|
||||||
|
|
||||||
:desc "Extract a subtree to a new file"
|
:desc "Extract a subtree to a new file"
|
||||||
"e" #'org-roam-extract-subtree))
|
"e" #'org-roam-extract-subtree))
|
||||||
|
|
||||||
(map!
|
(map!
|
||||||
:desc "Alternative keybind to insert a roam link while in insert mode"
|
:desc "Alternative keybind to insert a roam link while in insert mode"
|
||||||
:i "M-[" #'org-roam-node-insert))
|
:i "M-[" #'org-roam-node-insert))
|
||||||
#+end_src
|
#+end_src
|
||||||
*** Nice UI to access Zettelkasten notes with Org-roam ui
|
*** Nice UI to access Zettelkasten notes with Org-roam ui
|
||||||
|
|
||||||
@ -910,38 +782,33 @@ I use =r= for this purpose. It is close and goes well with *roam*.
|
|||||||
#+end_src
|
#+end_src
|
||||||
#+begin_src emacs-lisp
|
#+begin_src emacs-lisp
|
||||||
(use-package! websocket
|
(use-package! websocket
|
||||||
:after org-roam)
|
:after org-roam)
|
||||||
|
|
||||||
(use-package! org-roam-ui
|
(use-package! org-roam-ui
|
||||||
:after org-roam ;; or :after org
|
:after org-roam ;; or :after org
|
||||||
;; normally we'd recommend hooking orui after org-roam, but since org-roam does not have
|
;; normally we'd recommend hooking orui after org-roam, but since org-roam does not have
|
||||||
;; a hookable mode anymore, you're advised to pick something yourself
|
;; a hookable mode anymore, you're advised to pick something yourself
|
||||||
;; if you don't care about startup time, use
|
;; if you don't care about startup time, use
|
||||||
;; :hook (after-init . org-roam-ui-mode)
|
;; :hook (after-init . org-roam-ui-mode)
|
||||||
:config
|
:config
|
||||||
(setq org-roam-ui-sync-theme t
|
(setq org-roam-ui-sync-theme t
|
||||||
org-roam-ui-follow t
|
org-roam-ui-follow t
|
||||||
org-roam-ui-update-on-save t
|
org-roam-ui-update-on-save t
|
||||||
org-roam-ui-open-on-start t))
|
org-roam-ui-open-on-start t))
|
||||||
|
|
||||||
(after! org-roam-ui (map! :leader (:prefix ("r" . "roam") (:prefix ("u" . "roam-ui")
|
(after! org-roam-ui (map! :leader (:prefix ("r" . "roam") (:prefix ("u" . "roam-ui")
|
||||||
|
|
||||||
:desc "focus the current node in org-roam-ui view"
|
:desc "focus the current node in org-roam-ui view"
|
||||||
"f" #'org-roam-ui-node-zoom
|
"f" #'org-roam-ui-node-zoom
|
||||||
|
|
||||||
:desc "focus the current node's local graph in org-roam-ui view"
|
:desc "focus the current node's local graph in org-roam-ui view"
|
||||||
"l" #'org-roam-ui-node-local
|
"l" #'org-roam-ui-node-local
|
||||||
|
|
||||||
:desc "begin org-roam ui mode"
|
:desc "begin org-roam ui mode"
|
||||||
"u" #'open-org-roam-ui
|
"u" #'open-org-roam-ui
|
||||||
|
|
||||||
))))
|
))))
|
||||||
#+END_SRC
|
#+END_SRC
|
||||||
*** Default Browser for Export
|
|
||||||
#+begin_src emacs-lisp
|
|
||||||
(setq browse-url-browser-function 'browse-url-generic
|
|
||||||
browse-url-generic-program "surf")
|
|
||||||
#+end_src
|
|
||||||
|
|
||||||
** Journal Environment with org-roam
|
** Journal Environment with org-roam
|
||||||
#+begin_src emacs-lisp
|
#+begin_src emacs-lisp
|
||||||
@ -971,26 +838,26 @@ Test for existence of the plus: (match-beginning 1)"
|
|||||||
"Get global org property KEY of current buffer.
|
"Get global org property KEY of current buffer.
|
||||||
Adding up values for one key is supported."
|
Adding up values for one key is supported."
|
||||||
(let ((key-re (org-global-props-key-re key))
|
(let ((key-re (org-global-props-key-re key))
|
||||||
(props (org-global-props))
|
(props (org-global-props))
|
||||||
ret)
|
ret)
|
||||||
(cl-loop with val for prop in props
|
(cl-loop with val for prop in props
|
||||||
when (string-match key-re (setq val (plist-get prop :value))) do
|
when (string-match key-re (setq val (plist-get prop :value))) do
|
||||||
(setq
|
(setq
|
||||||
val (substring val (match-end 0))
|
val (substring val (match-end 0))
|
||||||
ret (if (match-beginning 1)
|
ret (if (match-beginning 1)
|
||||||
(concat ret " " val)
|
(concat ret " " val)
|
||||||
val)))
|
val)))
|
||||||
ret))
|
ret))
|
||||||
|
|
||||||
#+end_src
|
#+end_src
|
||||||
|
|
||||||
** Resume setup for a stellar CV
|
** Resume setup for a stellar CV
|
||||||
*** ox-extra for ":ignore:" tags
|
*** ox-extra for ":ignore:" tags
|
||||||
I want to be able to ignore headings on export.
|
I want to be able to ignore headings on export.
|
||||||
#+begin_src emacs-lisp
|
#+begin_src emacs-lisp
|
||||||
(use-package! ox-extra
|
(use-package! ox-extra
|
||||||
:after (org)
|
:after (org)
|
||||||
:config
|
:config
|
||||||
(ox-extras-activate '(latex-header-blocks ignore-headlines)))
|
(ox-extras-activate '(latex-header-blocks ignore-headlines)))
|
||||||
#+end_src
|
#+end_src
|
||||||
*** McDowell Resume Template
|
*** McDowell Resume Template
|
||||||
This template is supposed to be the standard.
|
This template is supposed to be the standard.
|
||||||
@ -1076,7 +943,7 @@ We need to bring in the correct SSH agent values, so that Emacs is aware of wher
|
|||||||
(use-package! exec-path-from-shell)
|
(use-package! exec-path-from-shell)
|
||||||
(after! exec-path-from-shell
|
(after! exec-path-from-shell
|
||||||
(dolist (var '("SSH_AUTH_SOCK" "SSH_AGENT_PID" "GPG_AGENT_INFO"))
|
(dolist (var '("SSH_AUTH_SOCK" "SSH_AGENT_PID" "GPG_AGENT_INFO"))
|
||||||
(add-to-list 'exec-path-from-shell-variables var))
|
(add-to-list 'exec-path-from-shell-variables var))
|
||||||
(exec-path-from-shell-initialize)
|
(exec-path-from-shell-initialize)
|
||||||
)
|
)
|
||||||
#+end_src
|
#+end_src
|
||||||
@ -1226,7 +1093,7 @@ SVGBob is an ASCII art renderer. It can do all kinds of nifty things with just a
|
|||||||
(setq org-svgbob-executable "svgbob_cli")
|
(setq org-svgbob-executable "svgbob_cli")
|
||||||
|
|
||||||
(setq org-babel-svgbob--parameters
|
(setq org-babel-svgbob--parameters
|
||||||
'(:background transparent))
|
'(:background transparent))
|
||||||
#+end_src
|
#+end_src
|
||||||
|
|
||||||
|
|
||||||
@ -1273,7 +1140,7 @@ I like to have all my config in one place.
|
|||||||
doom ; what makes DOOM look the way it does
|
doom ; what makes DOOM look the way it does
|
||||||
doom-dashboard ; a nifty splash screen for Emacs
|
doom-dashboard ; a nifty splash screen for Emacs
|
||||||
;;doom-quit ; DOOM quit-message prompts when you quit Emacs
|
;;doom-quit ; DOOM quit-message prompts when you quit Emacs
|
||||||
;;(emoji +unicode) ; 🙂
|
(emoji +unicode) ; 🙂
|
||||||
hl-todo ; highlight TODO/FIXME/NOTE/DEPRECATED/HACK/REVIEW
|
hl-todo ; highlight TODO/FIXME/NOTE/DEPRECATED/HACK/REVIEW
|
||||||
;;hydra
|
;;hydra
|
||||||
indent-guides ; highlighted indent columns
|
indent-guides ; highlighted indent columns
|
||||||
@ -1300,7 +1167,7 @@ I like to have all my config in one place.
|
|||||||
(format ) ; 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
|
||||||
;;objed ; text object editing for the innocent
|
;;objed ; text object editing for the innocent
|
||||||
;;parinfer ; turn lisp into python, sort of
|
;;parinfer ; turn lisp into python, sort of
|
||||||
;;rotate-text ; cycle region at point between text candidates
|
;;rotate-text ; cycle region at point between text candidates
|
||||||
@ -1317,7 +1184,7 @@ I like to have all my config in one place.
|
|||||||
:term
|
:term
|
||||||
;;eshell ; the elisp shell that works everywhere
|
;;eshell ; the elisp shell that works everywhere
|
||||||
;;shell ; simple shell REPL for Emacs
|
;;shell ; simple shell REPL for Emacs
|
||||||
term ; basic terminal emulator for Emacs
|
;;term ; basic terminal emulator for Emacs
|
||||||
vterm ; the best terminal emulation in Emacs
|
vterm ; the best terminal emulation in Emacs
|
||||||
|
|
||||||
:checkers
|
:checkers
|
||||||
@ -1326,10 +1193,10 @@ I like to have all my config in one place.
|
|||||||
grammar ; tasing grammar mistake every you make
|
grammar ; tasing grammar mistake every you make
|
||||||
|
|
||||||
:tools
|
:tools
|
||||||
;;ansible
|
ansible
|
||||||
(biblio +icons) ; Writes a PhD for you (citation needed)
|
(biblio +icons) ; Writes a PhD for you (citation needed)
|
||||||
;;debugger ; FIXME stepping through code, to help you add bugs
|
;;debugger ; FIXME stepping through code, to help you add bugs
|
||||||
;;direnv
|
direnv
|
||||||
;;docker
|
;;docker
|
||||||
editorconfig ; let someone else argue about tabs vs spaces
|
editorconfig ; let someone else argue about tabs vs spaces
|
||||||
;;ein ; tame Jupyter notebooks with emacs
|
;;ein ; tame Jupyter notebooks with emacs
|
||||||
@ -1346,7 +1213,7 @@ I like to have all my config in one place.
|
|||||||
;;taskrunner ; taskrunner for all your projects
|
;;taskrunner ; taskrunner for all your projects
|
||||||
;;terraform ; infrastructure as code
|
;;terraform ; infrastructure as code
|
||||||
;;tmux ; an API for interacting with tmux
|
;;tmux ; an API for interacting with tmux
|
||||||
;;tree-sitter ; syntax and parsing, sitting in a tree...
|
tree-sitter ; syntax and parsing, sitting in a tree...
|
||||||
;;upload ; map local to remote projects via ssh/ftp
|
;;upload ; map local to remote projects via ssh/ftp
|
||||||
|
|
||||||
:os
|
:os
|
||||||
@ -1355,10 +1222,10 @@ I like to have all my config in one place.
|
|||||||
|
|
||||||
:lang
|
:lang
|
||||||
;;agda ; types of types of types of types...
|
;;agda ; types of types of types of types...
|
||||||
(beancount +lsp) ; mind the GAAP
|
;;(beancount +lsp) ; mind the GAAP
|
||||||
(cc +lsp) ; C > C++ == 1
|
(cc +lsp) ; C > C++ == 1
|
||||||
;;clojure ; java with a lisp
|
;;clojure ; java with a lisp
|
||||||
;;common-lisp ; if you've seen one lisp, you've seen them all
|
common-lisp ; if you've seen one lisp, you've seen them all
|
||||||
;;coq ; proofs-as-programs
|
;;coq ; proofs-as-programs
|
||||||
;;crystal ; ruby at the speed of c
|
;;crystal ; ruby at the speed of c
|
||||||
;;csharp ; unity, .NET, and mono shenanigans
|
;;csharp ; unity, .NET, and mono shenanigans
|
||||||
@ -1376,7 +1243,7 @@ I like to have all my config in one place.
|
|||||||
;;fsharp ; ML stands for Microsoft's Language
|
;;fsharp ; ML stands for Microsoft's Language
|
||||||
;;fstar ; (dependent) types and (monadic) effects and Z3
|
;;fstar ; (dependent) types and (monadic) effects and Z3
|
||||||
;;gdscript ; the language you waited for
|
;;gdscript ; the language you waited for
|
||||||
;;(go +lsp) ; the hipster dialect
|
(go +lsp) ; the hipster dialect
|
||||||
;;(graphql +lsp) ; Give queries a REST
|
;;(graphql +lsp) ; Give queries a REST
|
||||||
;;(haskell +lsp) ; a language that's lazier than I am
|
;;(haskell +lsp) ; a language that's lazier than I am
|
||||||
;;hy ; readability of scheme w/ speed of python
|
;;hy ; readability of scheme w/ speed of python
|
||||||
@ -1392,7 +1259,7 @@ I like to have all my config in one place.
|
|||||||
lua ; one-based indices? one-based indices
|
lua ; one-based indices? one-based indices
|
||||||
markdown ; writing docs for people to ignore
|
markdown ; writing docs for people to ignore
|
||||||
;;nim ; python + lisp at the speed of c
|
;;nim ; python + lisp at the speed of c
|
||||||
;;nix ; I hereby declare "nix geht mehr!"
|
(nix +lsp +treesitter) ; I hereby declare "nix geht mehr!"
|
||||||
;;ocaml ; an objective camel
|
;;ocaml ; an objective camel
|
||||||
(org +roam2 +gnuplot +pomodoro +noter +present +pretty) ; organize your plain life in plain text
|
(org +roam2 +gnuplot +pomodoro +noter +present +pretty) ; organize your plain life in plain text
|
||||||
;;php ; perl's insecure younger brother
|
;;php ; perl's insecure younger brother
|
||||||
@ -1413,9 +1280,9 @@ I like to have all my config in one place.
|
|||||||
;;solidity ; do you need a blockchain? No.
|
;;solidity ; do you need a blockchain? No.
|
||||||
;;swift ; who asked for emoji variables?
|
;;swift ; who asked for emoji variables?
|
||||||
;;terra ; Earth and Moon in alignment for performance.
|
;;terra ; Earth and Moon in alignment for performance.
|
||||||
web ; the tubes
|
(web +lsp) ; the tubes
|
||||||
;;yaml ; JSON, but readable
|
yaml ; JSON, but readable
|
||||||
;zig ; C, but simpler
|
;zig ; C, but simpler
|
||||||
|
|
||||||
:email
|
:email
|
||||||
;;(mu4e +org +gmail)
|
;;(mu4e +org +gmail)
|
||||||
@ -1433,22 +1300,20 @@ I like to have all my config in one place.
|
|||||||
:config
|
:config
|
||||||
literate
|
literate
|
||||||
(default +bindings +smartparens)
|
(default +bindings +smartparens)
|
||||||
|
)
|
||||||
)
|
|
||||||
#+end_src
|
#+end_src
|
||||||
|
|
||||||
* Footnotes
|
* Footnotes
|
||||||
[fn:1] Stolen from Tecosaur's [[https://git.tecosaur.net/tec/emacs-config][config]]
|
[fn:1] Stolen from Tecosaur's [[https://git.tecosaur.net/tec/emacs-config][config]]
|
||||||
* Other Editing
|
* Other Editing
|
||||||
** Lillypond
|
** Lilypond :COMMENT:noexport:
|
||||||
|
*** package
|
||||||
*** ob-lilypond
|
|
||||||
**** package
|
|
||||||
#+begin_src emacs-lisp :tangle "packages.el"
|
#+begin_src emacs-lisp :tangle "packages.el"
|
||||||
(package! ob-lilypond
|
(package! ob-lilypond
|
||||||
:recipe (:host github :type git :repo "mjago/ob-lilypond"))
|
:recipe (:host github :type git :repo "mjago/ob-lilypond"))
|
||||||
#+end_src
|
#+end_src
|
||||||
**** config
|
|
||||||
|
*** config
|
||||||
#+begin_src emacs-lisp
|
#+begin_src emacs-lisp
|
||||||
(use-package! ob-lilypond)
|
(use-package! ob-lilypond)
|
||||||
(setq ly-arrange-mode t)
|
(setq ly-arrange-mode t)
|
||||||
|
Loading…
Reference in New Issue
Block a user