Major Revisions, Much Cleaner

This commit is contained in:
2024-06-05 15:09:36 -04:00
parent 937e5d5518
commit 75669df3a5
2 changed files with 423 additions and 523 deletions

161
custom.el
View File

@@ -3,167 +3,8 @@
;; If you edit it by hand, you could mess it up, so be careful. ;; If you edit it by hand, you could mess it up, so be careful.
;; Your init file should contain only one such instance. ;; Your init file should contain only one such instance.
;; If there is more than one, they won't work right. ;; If there is more than one, they won't work right.
'(conda-anaconda-home "~/opt/anaconda3")
'(custom-safe-themes '(custom-safe-themes
'("5f79df6b4c56021d173c178d90b5a600c678a192d78cc639553915985b67c4ea" "8cda1cfae8e393bfb23f1d448d4be10720835d086f7db080908a7c8d01566516" "a27f7b52fe66bacaec9059f8afd04d055a4ac3c2fba9eb9128c81e10152fc566" "1ba7196d8e7b883272ea8818a5163aec21b57023368febf55255816226f7b370" "8256e7e03444834d34915a226dc24933b0d680a0a1da568ec03f852be776f168" "4ac2f45e6b46e5bb50826d4250df71a57124169b82cc0ad75e436de6e70a9690" "29addd67feb95ca1179e60d476bb92c1f11835548e2efaec15c9ac6af2a8e6a8" "9b7a425c38c4894e161887c26381c2a6fc1de3c1407158507caaf469d76eb27b" "bce055e1681dd343659957710af77f7a6ad106677d42c61f86ebeedf637c4493" "f62c69472d3f506179d797131c014fe4095d9609dddf14542c50e0388f1e8d6d" "cf143bf23fa8160f87331893cdadc40b876556634621dfa373fcf93c4c97c444" "f459dfd377e9cb98d90e53383dcca7d73396cc0a22b31d39af24fb1cf3548fb5" "fcc14e1a22c99d77f7b1455b0c8a320f8afd0c1f4a9c5c50b45f676eb0c54ba2" "a6bae299481c3c0058e611d2c32ca169fa27203345a880806a5a8554cdd2e588" "feb9556e03558588e29e6659c8e01ea3d2a17a1e7a13e9bf9fc9e59cacba4b72" default)) '("5f79df6b4c56021d173c178d90b5a600c678a192d78cc639553915985b67c4ea" "8cda1cfae8e393bfb23f1d448d4be10720835d086f7db080908a7c8d01566516" "a27f7b52fe66bacaec9059f8afd04d055a4ac3c2fba9eb9128c81e10152fc566" "1ba7196d8e7b883272ea8818a5163aec21b57023368febf55255816226f7b370" "8256e7e03444834d34915a226dc24933b0d680a0a1da568ec03f852be776f168" "4ac2f45e6b46e5bb50826d4250df71a57124169b82cc0ad75e436de6e70a9690" "29addd67feb95ca1179e60d476bb92c1f11835548e2efaec15c9ac6af2a8e6a8" "9b7a425c38c4894e161887c26381c2a6fc1de3c1407158507caaf469d76eb27b" "bce055e1681dd343659957710af77f7a6ad106677d42c61f86ebeedf637c4493" "f62c69472d3f506179d797131c014fe4095d9609dddf14542c50e0388f1e8d6d" "cf143bf23fa8160f87331893cdadc40b876556634621dfa373fcf93c4c97c444" "f459dfd377e9cb98d90e53383dcca7d73396cc0a22b31d39af24fb1cf3548fb5" "fcc14e1a22c99d77f7b1455b0c8a320f8afd0c1f4a9c5c50b45f676eb0c54ba2" "a6bae299481c3c0058e611d2c32ca169fa27203345a880806a5a8554cdd2e588" "feb9556e03558588e29e6659c8e01ea3d2a17a1e7a13e9bf9fc9e59cacba4b72" default)))
'(delete-selection-mode nil)
'(dired-listing-switches "-alh")
'(elpy-rpc-python-command "python3")
'(lsp-dart-flutter-sdk-dir "~/flutter")
'(lsp-file-watch-ignored-directories
'("[/\\\\]\\.git\\'" "[/\\\\]\\.github\\'" "[/\\\\]\\.circleci\\'" "[/\\\\]\\.hg\\'" "[/\\\\]\\.bzr\\'" "[/\\\\]_darcs\\'" "[/\\\\]\\.svn\\'" "[/\\\\]_FOSSIL_\\'" "[/\\\\]\\.idea\\'" "[/\\\\]\\.ensime_cache\\'" "[/\\\\]\\.eunit\\'" "[/\\\\]node_modules" "[/\\\\]\\.yarn\\'" "[/\\\\]\\.fslckout\\'" "[/\\\\]\\.tox\\'" "[/\\\\]dist\\'" "[/\\\\]dist-newstyle\\'" "[/\\\\]\\.stack-work\\'" "[/\\\\]\\.bloop\\'" "[/\\\\]\\.metals\\'" "[/\\\\]target\\'" "[/\\\\]\\.ccls-cache\\'" "[/\\\\]\\.vscode\\'" "[/\\\\]\\.venv\\'" "[/\\\\]\\.mypy_cache\\'" "[/\\\\]\\.deps\\'" "[/\\\\]build-aux\\'" "[/\\\\]autom4te.cache\\'" "[/\\\\]\\.reference\\'" "[/\\\\]\\.lsp\\'" "[/\\\\]\\.clj-kondo\\'" "[/\\\\]\\.shadow-cljs\\'" "[/\\\\]\\.babel_cache\\'" "[/\\\\]\\.cpcache\\'" "[/\\\\]\\checkouts\\'" "[/\\\\]\\.m2\\'" "[/\\\\]bin/Debug\\'" "[/\\\\]obj\\'" "[/\\\\]_opam\\'" "[/\\\\]_build\\'" "[/\\\\]\\.elixir_ls\\'" "[/\\\\]\\.direnv\\'" "[/\\\\]\\.tmp\\'"))
'(lsp-java-format-on-type-enabled nil)
'(lsp-java-format-settings-profile nil)
'(lsp-pylsp-plugins-jedi-use-pyenv-environment t)
'(org-agenda-files
'("/home/universe/Documents/research/DBS/TechnicalEvaluation/technicaldraft.org"))
'(org-export-backends '(ascii beamer html icalendar latex odt))
'(org-latex-classes
'(("beamer" "\\documentclass[presentation]{beamer}"
("\\section{%s}" . "\\section*{%s}")
("\\subsection{%s}" . "\\subsection*{%s}")
("\\subsubsection{%s}" . "\\subsubsection*{%s}"))
("article" "\\documentclass[11pt]{article}"
("\\section{%s}" . "\\section*{%s}")
("\\subsection{%s}" . "\\subsection*{%s}")
("\\subsubsection{%s}" . "\\subsubsection*{%s}")
("\\paragraph{%s}" . "\\paragraph*{%s}")
("\\subparagraph{%s}" . "\\subparagraph*{%s}"))
("report" "\\documentclass[11pt]{report}"
("\\part{%s}" . "\\part*{%s}")
("\\chapter{%s}" . "\\chapter*{%s}")
("\\section{%s}" . "\\section*{%s}")
("\\subsection{%s}" . "\\subsection*{%s}")
("\\subsubsection{%s}" . "\\subsubsection*{%s}"))
("book" "\\documentclass[11pt]{book}"
("\\part{%s}" . "\\part*{%s}")
("\\chapter{%s}" . "\\chapter*{%s}")
("\\section{%s}" . "\\section*{%s}")
("\\subsection{%s}" . "\\subsection*{%s}")
("\\subsubsection{%s}" . "\\subsubsection*{%s}"))
("thesis" "\\documentclass[11pt]{ut-thesis}"
("\\part{%s}" . "\\part*{%s}")
("\\chapter{%s}" . "\\chapter*{%s}")
("\\section{%s}" . "\\section*{%s}")
("\\subsection{%s}" . "\\subsection*{%s}")
("\\subsubsection{%s}" . "\\subsubsection*{%s}"))))
'(org-preview-latex-process-alist
'((dvipng :programs
("latex" "dvipng")
:description "dvi > png" :message "you need to install the programs: latex and dvipng." :image-input-type "dvi" :image-output-type "png" :image-size-adjust
(2.0 . 2.0)
:latex-compiler
("latex -interaction nonstopmode -output-directory %o %f")
:image-converter
("dvipng -D %D -T tight -o %O %f")
:transparent-image-converter
("dvipng -D %D -T tight -bg Transparent -o %O %f"))
(dvisvgm :programs
("latex" "dvisvgm")
:description "dvi > svg" :message "you need to install the programs: latex and dvisvgm." :image-input-type "dvi" :image-output-type "svg" :image-size-adjust
(1.7 . 1.5)
:latex-compiler
("latex -interaction nonstopmode -output-directory %o %f")
:image-converter
("dvisvgm %f -n -b min -c %S -o %O"))
(imagemagick :programs
("latex" "convert")
:description "pdf > png" :message "you need to install the programs: latex and imagemagick." :image-input-type "pdf" :image-output-type "png" :image-size-adjust
(1.0 . 1.0)
:latex-compiler
("pdflatex -interaction nonstopmode -output-directory %o %f")
:image-converter
("convert -density %D -trim -antialias %f -quality 100 %O"))))
'(package-selected-packages
'(dockerfile-mode :ensure slint-mode ox-reveal lsp-dart dart-mode gnuplot auctex ox-pandoc pdf-tools org-ref helm-bibtex ivy-bibtex geiser-racket rainbow-delimiters rust-mode company-ghci lsp-haskell haskell-mode meson-mode company-c-headers company-ctags poetry python-mode which-key dap-mode helm-lsp lsp-treemacs flycheck lsp-ui lsp-mode company yaml-mode d2-mode php-mode web-mode nix-mode direnv magit esup ligature exec-path-from-shell transient-dwim leaf-convert leaf-tree blackout hydra el-get leaf-keywords leaf))
'(python-shell-completion-native-enable nil)
'(sql-sqlite-program "sqlite3")
'(warning-suppress-types '((comp) (comp) (comp) (comp) (comp))))
'(org-latex-classes
'(("thesis" "\\documentclass{ut-thesis}"
("\\chapter{%s}" . "\\chapter*{%s}")
("\\section{%s}" . "\\section*{%}")
("\\subsection{%s}" . "\\subsection*{%s}")
("\\subsubsection{%s}" . "\\subsubsection*{%s}")
("\\paragraph{%s}" . "\\paragraph*{%s}")
("\\subparagraph{%s}" . "\\subparagraph*{%s}"))
("labtemplate" "\\documentclass{labtemplate}"
("\\section{%s}" . "\\section*{%s}")
("\\subsection{%s}" . "\\subsection*{%s}")
("\\subsubsection{%s}" . "\\subsubsection*{%s}")
("\\paragraph{%s}" . "\\paragraph*{%s}")
("\\subparagraph{%s}" . "\\subparagraph*{%s}"))
("beamer" "\\documentclass[presentation]{beamer}"
("\\section{%s}" . "\\section*{%s}")
("\\subsection{%s}" . "\\subsection*{%s}")
("\\subsubsection{%s}" . "\\subsubsection*{%s}"))
("article" "\\documentclass[11pt]{article}"
("\\section{%s}" . "\\section*{%s}")
("\\subsection{%s}" . "\\subsection*{%s}")
("\\subsubsection{%s}" . "\\subsubsection*{%s}")
("\\paragraph{%s}" . "\\paragraph*{%s}")
("\\subparagraph{%s}" . "\\subparagraph*{%s}"))
("report" "\\documentclass[11pt]{report}"
("\\part{%s}" . "\\part*{%s}")
("\\chapter{%s}" . "\\chapter*{%s}")
("\\section{%s}" . "\\section*{%s}")
("\\subsection{%s}" . "\\subsection*{%s}")
("\\subsubsection{%s}" . "\\subsubsection*{%s}"))
("letter" "\\documentclass{letter}"
("" . ""))
("book" "\\documentclass[11pt]{book}"
("\\part{%s}" . "\\part*{%s}")
("\\chapter{%s}" . "\\chapter*{%s}")
("\\section{%s}" . "\\section*{%s}")
("\\subsection{%s}" . "\\subsection*{%s}")
("\\subsubsection{%s}" . "\\subsubsection*{%s}"))))
'(org-latex-default-packages-alist
'(("AUTO" "inputenc" t
("pdflatex"))
("T1" "fontenc" t
("pdflatex"))
("" "graphicx" t nil)
("" "grffile" t nil)
("" "longtable" nil nil)
("" "wrapfig" nil nil)
("" "rotating" nil nil)
("normalem" "ulem" t nil)
("" "amsmath" t nil)
("" "textcomp" t nil)
("" "amssymb" t nil)
("" "capt-of" nil nil)
("" "hyperref" nil nil)))
'(org-pandoc-menu-entry
'((61 "to ms-pdf and open." org-pandoc-export-to-ms-pdf-and-open)
(45 "to ms-pdf." org-pandoc-export-to-ms-pdf)
(106 "to json and open." org-pandoc-export-to-json-and-open)
(74 "as json." org-pandoc-export-as-json)
(80 "to pptx." org-pandoc-export-to-pptx)
(120 "to docx and open." org-pandoc-export-to-docx-and-open)
(88 "to docx." org-pandoc-export-to-docx)))
'(python-shell-completion-native-enable nil)
'(warning-suppress-log-types
'((direnv)
(lsp-mode)
(comp)
(comp)
(comp)
(comp)
(comp)
(comp)
(comp)
(comp)))
'(warning-suppress-types
'((lsp-mode)
(comp)
(comp)
(comp)
(comp)
(comp)
(comp)
(comp)
(comp)))
(custom-set-faces (custom-set-faces
;; custom-set-faces was added by Custom. ;; custom-set-faces was added by Custom.
;; If you edit it by hand, you could mess it up, so be careful. ;; If you edit it by hand, you could mess it up, so be careful.

785
main.org
View File

@@ -14,53 +14,56 @@
We must initialize =leaf.el=, which we use as a use-package We must initialize =leaf.el=, which we use as a use-package
replacement for defining configs and relations between packages etc. replacement for defining configs and relations between packages etc.
#+begin_src elisp :tangle yes #+begin_src elisp :tangle yes :exports code
(eval-and-compile (eval-and-compile
(customize-set-variable (customize-set-variable
'package-archives '(("org" . "https://orgmode.org/elpa/") 'package-archives '(("org" . "https://orgmode.org/elpa/")
("melpa" . "https://melpa.org/packages/") ("melpa" . "https://melpa.org/packages/")
("gnu" . "https://elpa.gnu.org/packages/"))) ("gnu" . "https://elpa.gnu.org/packages/")))
(package-initialize) (package-initialize)
(unless (package-installed-p 'leaf) (unless (package-installed-p 'leaf)
(package-refresh-contents) (package-refresh-contents)
(package-install 'leaf)) (package-install 'leaf))
(leaf leaf-keywords (leaf leaf-keywords
:ensure t :ensure t
:init :init
(leaf el-get :ensure t) (leaf el-get :ensure t)
(leaf hydra :ensure t) (leaf hydra :ensure t)
(leaf blackout :ensure t) (leaf blackout :ensure t)
:config :config
;; initialize leaf-keywords.el ;; initialize leaf-keywords.el
(leaf-keywords-init))) (leaf-keywords-init)))
(leaf leaf-tree :ensure t) (leaf leaf-tree :ensure t)
(leaf leaf-convert :ensure t) (leaf leaf-convert :ensure t)
(leaf transient-dwim :ensure t (leaf transient-dwim :ensure t
:bind (("M-=" . transient-dwim-dispatch))) :bind (("M-=" . transient-dwim-dispatch)))
#+end_src #+end_src
** MacOS Specific ** MacOS Specific
#+begin_src elisp :tangle yes #+begin_src elisp :tangle yes :exports code
(when (eq system-type 'darwin) (leaf macos
(setq mac-option-modifier 'meta)) :hook (after-init hook)
:when (eq system-type 'darwin)
:init
(setq mac-option-modifier 'meta))
#+end_src #+end_src
** Performance ** Performance
*** Garbage Collection *** Garbage Collection
#+begin_src elisp :tangle yes #+begin_src elisp :tangle yes :exports code
(leaf gcmh :ensure t (leaf gcmh :ensure t
:hook (after-init-hook)) :hook (after-init-hook))
#+end_src #+end_src
*** Profiling *** Profiling
#+begin_src elisp :tangle yes #+begin_src elisp :tangle yes :exports code
(leaf esup :disabled nil :ensure t) (leaf esup :disabled nil :ensure t)
#+end_src #+end_src
** Emacs Paths ** Emacs Paths
@@ -69,24 +72,24 @@ replacement for defining configs and relations between packages etc.
Ensure that the =custom.el= resides in the users' emacs directory. Ensure that the =custom.el= resides in the users' emacs directory.
#+begin_src elisp :tangle yes #+begin_src elisp :tangle yes :exports code
(leaf custom-el (leaf custom-el
:config :config
;; Ensure custom writes to specific file ;; Ensure custom writes to specific file
(setq custom-file (expand-file-name "custom.el" user-emacs-directory)) (setq custom-file (expand-file-name "custom.el" user-emacs-directory))
(load custom-file 'noerror 'nomessage)) (load custom-file 'noerror 'nomessage))
#+end_src #+end_src
*** Backups *** Backups
Set the backups directory to reside in the users' emacs directory. Set the backups directory to reside in the users' emacs directory.
#+begin_src elisp :tangle yes #+begin_src elisp :tangle yes :exports code
(leaf backup (leaf backup
:config :config
;; Change the location of file backups/locks into the emacs.d/backups/ ;; Change the location of file backups/locks into the emacs.d/backups/
(setq backup-directory-alist (setq backup-directory-alist
`(("." . ,(concat user-emacs-directory "backups"))))) `(("." . ,(concat user-emacs-directory "backups")))))
#+end_src #+end_src
** Shell Path Preservation ** Shell Path Preservation
@@ -94,382 +97,442 @@ Set the backups directory to reside in the users' emacs directory.
Exec-path-from-shell ensures that path variable is preserved from Exec-path-from-shell ensures that path variable is preserved from
shell. shell.
#+begin_src elisp :tangle yes #+begin_src elisp :tangle yes :exports code
(leaf exec-path-from-shell :ensure t (leaf exec-path-from-shell :ensure t
:config :config
(exec-path-from-shell-initialize)) (exec-path-from-shell-initialize))
#+end_src #+end_src
* Visual Customization * Visual Customization
Visual Theme of Emacs config: defined in the =themes= directory. Visual Theme of Emacs config: defined in the =themes= directory.
#+begin_src elisp :tangle yes #+begin_src elisp :tangle yes :exports code
(leaf visual (leaf visual
:doc "Visual Changes to Emacs" :doc "Visual Changes to Emacs"
:tag "builtin" "internal" :tag "builtin" "internal"
:custom ((menu-bar-mode . nil) :custom ((menu-bar-mode . nil)
(tool-bar-mode . nil) (tool-bar-mode . nil)
(scroll-bar-mode . nil)) (scroll-bar-mode . nil))
:custom-face ((default . '((t (:family "JuliaMono" :custom-face ((default . '((t (:family "JuliaMono"
:height 150 :height 150
:weight normal))))) :weight normal)))))
:config :config
;; Set location of custom theme dir ;; Set location of custom theme dir
(setq custom-theme-directory (concat user-emacs-directory "themes")) (setq custom-theme-directory (concat user-emacs-directory "themes"))
(load-theme 'UniverseHighContrast)) (load-theme 'UniverseHighContrast))
#+end_src #+end_src
** Font Related * Version Control
#+begin_src elisp :tangle yes :exports code
*** Ligature (leaf magit :ensure t :require t)
Font related ligatures, combining multiple characters into "one".
#+begin_src elisp :tangle yes
(leaf ligature
:ensure t
:config
;; Enable the "www" ligature in every possible major mode
(ligature-set-ligatures 't '("www"))
;; Enable traditional ligature support in eww-mode, if the
;; `variable-pitch' face supports it
(ligature-set-ligatures 'eww-mode '("ff" "fi" "ffi"))
;; Enable all Cascadia Code ligatures in programming modes
(ligature-set-ligatures 'prog-mode '("|||>" "<|||" "<==>" "<!--" "####" "~~>" "***" "||=" "||>"
":::" "::=" "=:=" "===" "==>" "=!=" "=>>" "=<<" "=/=" "!=="
"!!." ">=>" ">>=" ">>>" ">>-" ">->" "->>" "-->" "---" "-<<"
"<~~" "<~>" "<*>" "<||" "<|>" "<$>" "<==" "<=>" "<=<" "<->"
"<--" "<-<" "<<=" "<<-" "<<<" "<+>" "</>" "###" "#_(" "..<"
"..." "+++" "/==" "///" "_|_" "www" "&&" "^=" "~~" "~@" "~="
"~>" "~-" "**" "*>" "*/" "||" "|}" "|]" "|=" "|>" "|-" "{|"
"[|" "]#" "::" ":=" ":>" ":<" "$>" "==" "=>" "!=" "!!" ">:"
">=" ">>" ">-" "-~" "-|" "->" "--" "-<" "<~" "<*" "<|" "<:"
"<$" "<=" "<>" "<-" "<<" "<+" "</" "#{" "#[" "#:" "#=" "#!"
"##" "#(" "#?" "#_" "%%" ".=" ".-" ".." ".?" "+>" "++" "?:"
"?=" "?." "??" ";;" "/*" "/=" "/>" "//" "__" "~~" "(*" "*)"
"\\\\" "://"))
;; Enables ligature checks globally in all buffers. You can also do it
;; per mode with `ligature-mode'.
(global-ligature-mode t))
#+end_src #+end_src
* Package Configuration * Nix Related
** Version Control ** Direnv
#+begin_src elisp :tangle yes
(leaf magit :ensure t :require t)
#+end_src
** Nix Related
*** Direnv
In order to support direnv (loading =nix-shell= / =nix develop=) In order to support direnv (loading =nix-shell= / =nix develop=)
#+begin_src elisp :tangle yes #+begin_src elisp :tangle yes :exports code
(leaf direnv (leaf direnv
:ensure t :ensure t
:config :config
(direnv-mode)) (direnv-mode))
#+end_src #+end_src
*** Nix-mode ** Nix-mode
=.nix= file mode =.nix= file mode
#+begin_src elisp :tangle yes #+begin_src elisp :tangle yes :exports code
(leaf nix-mode :ensure t) (leaf nix-mode :ensure t)
#+end_src #+end_src
** WEB * IDE Like Things
We all know the web is the future, obviously, of course. ** Which Key Again?
#+begin_src elisp :tangle yes #+begin_src elisp :tangle yes :exports code
(leaf web-mode (leaf which-key :ensure t
:ensure t :config (which-key-mode))
:mode
"\\.p?html?\\'"
"\\.djtml\\'"
"\\.jsx?\\'"
"\\.tsx?\\'")
(leaf php-mode
:ensure t)
#+end_src #+end_src
** D2 ** Company Completion!
#+begin_src elisp :tangle yes
(leaf d2-mode :ensure t)
#+end_src
** YAML
#+begin_src elisp :tangle yes
(leaf yaml-mode :ensure t)
#+end_src
** IDE Like Things
*** Company Completion!
We like autocomplete, it... is nice, okay? We like autocomplete, it... is nice, okay?
#+begin_src elisp :tangle yes #+begin_src elisp :tangle yes :exports code
(leaf company :ensure t (leaf company :ensure t
:bind :bind
(("C-<tab>" . company-complete)) (("C-<tab>" . company-complete))
:hook after-init-hook :hook after-init-hook
:config (global-company-mode)) :config (global-company-mode))
#+end_src #+end_src
*** Language Server Protocol
** Language Server Protocol
We love language features that make languages nice We love language features that make languages nice
#+begin_src elisp :tangle yes #+begin_src elisp :tangle yes :exports code
(leaf lsp-mode (leaf lsp-mode
:ensure t :ensure t
:init :init
(setq lsp-keymap-prefix "C-c l") (setq lsp-keymap-prefix "C-c l")
:hook :commands lsp lsp-deferred
((dart-mode-hook . lsp) :hook
(python-mode-hook . lsp) ;; which key support v v v
(c-mode-hook . lsp) ((lsp-mode-hook . lsp-enable-which-key-integration)
(c++-mode-hook . lsp)
(haskell-mode-hook . lsp)
(java-mode-hook . lsp)
(rust-mode-hook . lsp)
;; which key support v v v
(lsp-mode-hook . lsp-enable-which-key-integration))
:commands lsp
:config
(leaf lsp-ui :ensure t
:commands lsp-ui-mode)
(leaf flycheck :ensure t)
(leaf lsp-treemacs :ensure t
:commands lsp-treemacs-errors-list)
(leaf helm-lsp :ensure t
:commands helm-lsp-workspace-symbol)
(leaf dap-mode :ensure t)
(leaf which-key :ensure t
:config (which-key-mode)))
#+end_src #+end_src
**** Projectile (Projects)
#+begin_src elisp :tangle yes *** IDE Languages
(leaf projectile
:commands projectile-mode **** Dart/Flutter
:config
(projectile-mode +1)) #+begin_src elisp :tangle yes :exports code
(dart-mode . lsp-deferred)
#+end_src #+end_src
** Python Things
*** Python-mode **** Python
#+begin_src elisp :tangle yes :exports code
(python-mode . lsp-deferred)
#+end_src
**** C/C++
#+begin_src elisp :tangle yes :exports code
(c-mode-hook . lsp-deferred)
(c++-mode-hook . lsp-deferred)
#+end_src
**** Haskell
#+begin_src elisp :tangle yes :exports code
(haskell-mode-hook . lsp-deferred)
#+end_src
**** Java
#+begin_src elisp :tangle yes :exports code
(java-mode-hook . lsp-deferred)
#+end_src
**** Rust
#+begin_src elisp :tangle yes :exports code
(rust-mode-hook . lsp-deferred))
#+end_src
#+begin_src elisp :tangle yes :exports code
)
#+end_src
*** LSP Plugins:
We do want some nice to haves of course
- A pretty UI:
#+begin_src elisp :tangle yes :exports code
(leaf lsp-ui :ensure t
:commands lsp-ui-mode)
#+end_src
- Flycheck compat:
#+begin_src elisp :tangle yes :exports code
(leaf flycheck :ensure t)
#+end_src
- Debugger Compatibility
#+begin_src elisp :tangle yes :exports code
(leaf dap-mode :ensure t)
#+end_src
*** Projectile (Projects)
#+begin_src elisp :tangle yes :exports code
(leaf projectile
:commands projectile-mode
:config
(projectile-mode +1))
#+end_src
* WEB
We all know the web is the future, obviously, of course.
#+begin_src elisp :tangle yes :exports code
(leaf web-mode
:ensure t
:mode
"\\.p?html?\\'"
"\\.djtml\\'"
"\\.jsx?\\'"
"\\.tsx?\\'")
(leaf php-mode
:ensure t)
#+end_src
* D2
#+begin_src elisp :tangle yes :exports code
(leaf d2-mode :ensure t)
#+end_src
* YAML
#+begin_src elisp :tangle yes :exports code
(leaf yaml-mode :ensure t)
#+end_src
* Python Things
** Python-mode
Using python-mode is to have more up to date features (and Using python-mode is to have more up to date features (and
highlighting) compared to builtin python-mode. highlighting) compared to builtin python-mode.
#+begin_src elisp :tangle yes #+begin_src elisp :tangle yes :exports code
(leaf python-mode :ensure t (leaf python-mode :ensure t
:config :config
(setq python-shell-interpreter "ipython" (setq python-shell-interpreter "ipython"
python-shell-interpreter-args "-i --simple-prompt --InteractiveShell.display_page=True")) python-shell-interpreter-args "-i --simple-prompt --InteractiveShell.display_page=True"))
#+end_src #+end_src
*** Poetry
** Poetry
For when we aren't nix'ing things, and want some nice poetry. For when we aren't nix'ing things, and want some nice poetry.
#+begin_src elisp :tangle yes #+begin_src elisp :tangle yes :exports code
(leaf poetry :ensure t) (leaf poetry :ensure t)
#+end_src #+end_src
** Java
LSP for java is /nice/. * C
#+begin_src elisp :tangle yes
(leaf lsp-java
:hook (java-mode-hook . lsp))
#+end_src
** C
Who even needs C++, not me, no way, no how. Who even needs C++, not me, no way, no how.
#+begin_src elisp :tangle yes
#+begin_src elisp :tangle yes :exports code
(leaf c-config
:hook c-mode-hook c++-mode-hook
:config
(leaf company-ctags :ensure t) (leaf company-ctags :ensure t)
(leaf company-c-headers :ensure t) (leaf company-c-headers :ensure t)
(leaf meson-mode :ensure t) (leaf meson-mode :ensure t))
#+end_src #+end_src
** Haskell
#+begin_src elisp :tangle yes * Haskell
(leaf haskell-mode :ensure t
:config #+begin_src elisp :tangle yes :exports code
(leaf lsp-haskell :ensure t) (leaf haskell-mode :ensure t)
(leaf company-ghci :ensure t)) (leaf lsp-haskell :ensure t)
(leaf company-ghci :ensure t)
#+end_src #+end_src
** Rust
#+begin_src elisp :tangle yes * Rust
(leaf rust-mode :ensure t
(leaf slint-mode :ensure t)) #+begin_src elisp :tangle yes :exports code
(leaf rust-mode :ensure t
:init
(leaf slint-mode :ensure t))
#+end_src #+end_src
** Minecraft??
* Minecraft??
Minecraft =mcfunction= support, because, it can be annoying to type Minecraft =mcfunction= support, because, it can be annoying to type
this stuff otherwise. this stuff otherwise.
#+begin_src elisp :tangle yes #+begin_src elisp :tangle yes :exports code
(leaf mcf-mode (leaf mcf-mode
:el-get rasensuihei/mcf) :el-get rasensuihei/mcf)
#+end_src #+end_src
** Lisps
* Lisps
Gonna need to have pretty brackets Gonna need to have pretty brackets
#+begin_src elisp :tangle yes #+begin_src elisp :tangle yes :exports code
(leaf rainbow-delimiters (leaf rainbow-delimiters
:ensure t :ensure t
:commands rainbow-delimiters-mode :commands rainbow-delimiters-mode
:config :config
(leaf rainbow (leaf rainbow
:hook (emacs-lisp-mode-hook . rainbow-delimiters-mode) :hook (emacs-lisp-mode-hook . rainbow-delimiters-mode)
(geiser-mode-hook . rainbow-delimiters-mode))) (geiser-mode-hook . rainbow-delimiters-mode)))
#+end_src #+end_src
*** Racket
** Racket
Makes using racket so much nicer Makes using racket so much nicer
#+begin_src elisp :tangle yes #+begin_src elisp :tangle yes :exports code
(leaf geiser-racket :ensure t) (leaf geiser-racket :ensure t)
#+end_src #+end_src
** Org
* Org
We ensure that org is available (though it is builtin)
#+begin_src elisp :tangle yes :exports code
(leaf org :ensure t
:require t org-tempo
:hook
(org-mode-hook . auto-fill-mode)
:config
(setq document-dir (expand-file-name (if (eq system-type 'darwin) "~/Nextcloud" "~/Documents")))
(setq org-directory (concat document-dir "/org"))
(set-fill-column 100)
(setq org-src-fontify-natively t
org-confirm-babel-evaluate nil
org-src-preserve-indentation t))
;; (tempo-define-template "Fig. Caption"
;; '("" (P "Image: " image t)
;; (P "Caption: " caption t)
;; (P "Figure Name: " name t)
;; "#+CAPTION: " (s caption) > n >
;; "#+NAME: fig:" (s name) > n >
;; "#+ATTR_LaTeX: :placement [H]" > n >
;; "[[" (s image) "]]" > n > p >)
;; "<fig" "Inserts Figure with Caption"))
#+end_src
We also want to set our document directory (which as it stands is OS
dependent)
** Citations/References
We use org-ref because it provides some niceties, like doi-utils for We use org-ref because it provides some niceties, like doi-utils for
updating our bibliography. updating our bibliography.
#+begin_src elisp :tangle yes #+begin_src elisp :tangle no :exports code
(leaf ivy-bibtex :ensure t) (leaf org-ref :ensure t helm-bibtex
(leaf helm-bibtex :ensure t) :after org
(leaf org-ref :ensure t :init
:after org (leaf pdf-tools :ensure t)
:init :bind
(leaf pdf-tools :ensure t) (("C-c ]" . org-ref-insert-link))
:config :config
(setq bibtex-completion-bibliography (setq org-bib-dir (concat document-dir "/Bibliography"))
(list (expand-file-name "~/Nextcloud/Bibliography/references.bib"))) (setq org-bib-file (concat org-bib-dir "/references.bib"))
;; Where should PDFs be stored
(setq bibtex-completion-library-path `(,(concat org-bib-dir "/bibtex-pdfs/"))
;; Where is the bibliography expected (org-ref & org-cite)
bibtex-completion-bibliography (list org-bib-file)
org-cite-global-bibliography org-bib-file
(setq org-ref-bibliography-notes "~/Nextcloud/Bibliography/notes.org" bibtex-completion-notes-path (concat org-bib-dir "/notes")
org-ref-default-bibliography '("~/Nextcloud/Bibliography/references.bib") bibtex-completion-notes-template-multiple-files "* ${author-or-editor}, ${title}, ${journal}, (${year}) :${=type=}: \n\nSee [[cite:&${=key=}]]\n"
org-ref-pdf-directory "~/Nextcloud/Bibliography/bibtex-pdfs/")
(when (eq system-type 'darwin)
(setq bibtex-completion-bibliography
(list (expand-file-name "~/Nextcloud/Bibliography/references.bib")))
(setq org-ref-bibliography-notes "~/Nextcloud/Bibliography/notes.org" bibtex-completion-additional-search-fields '(keywords)
org-ref-default-bibliography '("~/Nextcloud/Bibliography/references.bib") bibtex-completion-display-formats
org-ref-pdf-directory "~/Nextcloud/Bibliography/bibtex-pdfs/") '((article . "${=has-pdf=:1}${=has-note=:1} ${year:4} ${author:36} ${title:*} ${journal:40}")
) (inbook . "${=has-pdf=:1}${=has-note=:1} ${year:4} ${author:36} ${title:*} Chapter ${chapter:32}")
(incollection . "${=has-pdf=:1}${=has-note=:1} ${year:4} ${author:36} ${title:*} ${booktitle:40}")
(inproceedings . "${=has-pdf=:1}${=has-note=:1} ${year:4} ${author:36} ${title:*} ${booktitle:40}")
(setq org-ref-insert-link-function 'org-ref-insert-link-hydra/body (t . "${=has-pdf=:1}${=has-note=:1} ${year:4} ${author:36} ${title:*}"))
org-ref-insert-cite-function 'org-ref-cite-insert-helm bibtex-completion-pdf-open-function
org-ref-insert-label-function 'org-ref-insert-label-link (lambda (fpath)
org-ref-insert-ref-function 'org-ref-insert-ref-link (call-process "open" nil 0 nil fpath)))
org-ref-cite-onclick-function (lambda (_) (org-ref-citation-hydra/body))) ;; For bibtex generated keys (in-org citation format)
(setq bibtex-autokey-year-length 4
:require org-ref org-ref-ivy org-ref-helm doi-utils) bibtex-autokey-name-year-separator "-"
bibtex-autokey-year-title-separator "-"
bibtex-autokey-titleword-separator "-"
bibtex-autokey-titlewords 2
bibtex-autokey-titlewords-stretch 1
bibtex-autokey-titleword-length 5)
:require org-ref org-ref-helm oc-bibtex oc-bibtex oc-csl oc-natbib)
#+end_src #+end_src
** Extra Export Options
*** LaTeX (Obviously)
We really do require latex
#+begin_src elisp :tangle no :exports code
(leaf ox-latex
:after org org-ref
:config
;; (add-to-list 'org-export-backends 'latex)
(add-to-list 'org-latex-packages-alist '("" "minted"))
(setq org-latex-listings 'minted)
(add-to-list 'org-latex-classes
'("labtemplate" "\\documentclass{labtemplate}"
("\\section{%s}" . "\\section*{%s}")
("\\subsection{%s}" . "\\subsection*{%s}")
("\\subsubsection{%s}" . "\\subsubsection*{%s}")
("\\paragraph{%s}" . "\\paragraph*{%s}")
("\\subparagraph{%s}" . "\\subparagraph*{%s}")))
(add-to-list 'org-latex-classes
'("thesis" "\\documentclass[11pt]{ut-thesis}"
("\\part{%s}" . "\\part*{%s}")
("\\chapter{%s}" . "\\chapter*{%s}")
("\\section{%s}" . "\\section*{%s}")
("\\subsection{%s}" . "\\subsection*{%s}")
("\\subsubsection{%s}" . "\\subsubsection*{%s}")))
(setq org-latex-pdf-process
'("%latex -shell-escape -interaction nonstopmode -output-directory %o %f"
"%latex -shell-escape -interaction nonstopmode -output-directory %o %f"
"bibtex %b"
"%latex -shell-escape -interaction nonstopmode -output-directory %o %f"
"%latex -shell-escape -interaction nonstopmode -output-directory %o %f")))
#+end_src
*** Pandoc the Panacea of Exports
For more export formats we use pandoc: For more export formats we use pandoc:
#+begin_src elisp :tangle yes #+begin_src elisp :tangle no :exports code
(leaf ox-pandoc :ensure t (leaf ox-pandoc :ensure t
:after org) :after org org-ref
:config)
;; (add-to-list 'org-export-backends 'pandoc))
#+end_src #+end_src
*** Slideshows
**** Web based (reveal)
Writing mockup presentations can be quicker when you focus on the text Writing mockup presentations can be quicker when you focus on the text
of the presentation first, and prettifying later. Reveal.js is a nice of the presentation first, and prettifying later. Reveal.js is a nice
in between of these. in between of these.
TODO: I need to ensure [[https://gitlab.com/oer/emacs-reveal.git][emacs-reveal]] is installed properly via both nix #+begin_src elisp :tangle no :exports code
& the git clone. Could use a submodule? Maybe. I don't know if that (leaf ox-reveal :ensure t
will work :config
;; (add-to-list 'org-export-backends 'reveal)
#+begin_src elisp :tangle yes (setq org-reveal-root "https://cdn.jsdelivr.net/npm/reveal.js"))
(leaf ox-reveal :ensure t
:require t
:after org
:config
(setq org-reveal-root "https://cdn.jsdelivr.net/npm/reveal.js"))
#+end_src #+end_src
** LaTeX: with AuCTeX
Nicer LaTeX editing (AuCTeX): Nicer LaTeX editing (AuCTeX):
#+begin_src elisp :tangle yes #+begin_src elisp :tangle yes :exports code
(leaf auctex :ensure t (leaf auctex :ensure t
:after org) :after org)
#+end_src #+end_src
We also ma(k|d)e use of org-tempo for templating things, which can be We also ma(k|d)e use of org-tempo for templating things, which can be
nice. Should use the export based templating probably. Eventually. nice. Should use the export based templating probably. Eventually.
#+begin_src elisp :tangle yes
(leaf org-cfg
:after org
:require org-ref oc-csl org-tempo ox-latex ox-pandoc ox-reveal
:init
:bind*
("C-c ]" . org-ref-insert-link)
("s-[" . org-ref-insert-link-hydra/body)
:hook
(org-mode-hook . auto-fill-mode)
:config
(set-fill-column 100)
(setq org-src-fontify-natively t
org-confirm-babel-evaluate nil
org-src-preserve-indentation t)
(tempo-define-template "Fig. Caption"
'("" (P "Image: " image t)
(P "Caption: " caption t)
(P "Figure Name: " name t)
"#+CAPTION: " (s caption) > n >
"#+NAME: fig:" (s name) > n >
"#+ATTR_LaTeX: :placement [H]" > n >
"[[" (s image) "]]" > n > p >)
"<fig" "Inserts Figure with Caption")
(add-to-list 'org-latex-packages-alist '("" "minted"))
(setq org-latex-listings 'minted)
(add-to-list 'org-latex-classes
'("labtemplate" "\\documentclass{labtemplate}"
("\\section{%s}" . "\\section*{%s}")
("\\subsection{%s}" . "\\subsection*{%s}")
("\\subsubsection{%s}" . "\\subsubsection*{%s}")
("\\paragraph{%s}" . "\\paragraph*{%s}")
("\\subparagraph{%s}" . "\\subparagraph*{%s}"))
)
(setq org-latex-pdf-process
'("%latex -shell-escape -interaction nonstopmode -output-directory %o %f"
"%latex -shell-escape -interaction nonstopmode -output-directory %o %f"
"bibtex %b"
"%latex -shell-escape -interaction nonstopmode -output-directory %o %f"
"%latex -shell-escape -interaction nonstopmode -output-directory %o %f")))
#+end_src
And in case we want to make some (GNU)?plots? And in case we want to make some (GNU)?plots?
#+begin_src elisp :tangle yes #+begin_src elisp :tangle yes :exports code
(leaf gnuplot (leaf gnuplot
:ensure t) :ensure t)
#+end_src #+end_src
*** Org Mode Agenda/Calendar Things ** Org Mode Agenda/Calendar Things
**** Agenda Location *** Agenda Location
Make it so that all files in the src_elisp{org-agenda-files} variable
(e.g. "=~/Documents=") will be included in the tablutation and
collation of all the dates and todos etc.
#+begin_src elisp :tangle yes Make it so that all files in the " src_elisp{org-agenda-files} " variable (e.g. "=~/Documents=") will be
(leaf org-agenda-file included in the tablutation and collation of all the dates and todos
:after org etc.
:config
(setq org-agenda-files '("~/Nextcloud/org"))) #+begin_src elisp :tangle yes :exports code
(when (eq system-type 'darwin) (leaf org-agenda :require t
(setq org-agenda-files '("~/Nextcloud/org")) :after org
) :config
(setq org-agenda-files (concat org-directory "/MasterList.org")))
#+end_src #+end_src
**** Capture Things *** Capture Things
Unless specified otherwise, any captured note, date, meeting, idea, Unless specified otherwise, any captured note, date, meeting, idea,
should be put into the src_elisp{org-directory}. should be put into the src_elisp{org-directory}.
@@ -478,46 +541,42 @@ Similarly, we have a default file for notes that we capture, in there
=note.org=, which is where all captured things go when they aren't =note.org=, which is where all captured things go when they aren't
told to go elsewhere. told to go elsewhere.
#+begin_src elisp :tangle yes #+begin_src elisp :tangle yes :exports code
(leaf org-capture-cfg (leaf org-capture
:after org :after org
:config :config
(setq org-directory "~/Nextcloud/org") (setq org-default-notes-file (concat org-directory "/notes.org")))
(when (eq system-type 'darwin)
(setq org-directory '("~/Nextcloud/org"))
)
(setq org-default-notes-file (concat org-directory "/notes.org")))
#+end_src #+end_src
We also want to configure what type of things we want to capture, We also want to configure what type of things we want to capture,
e.g. meetings, deadlines and whatever else: e.g. meetings, deadlines and whatever else:
#+begin_src elisp :tangle yes
(leaf org-capture-what #+begin_src elisp :tangle yes :exports code
:after org (leaf org-capture
:config :after org-capture
(setq org-capture-templates :config
'(("t" "Todo" entry (file+headline "todo.org" "Tasks") (setq org-capture-templates
"* TODO %?\n %i\n %a") '(("t" "Todo" entry (file+headline "todo.org" "Tasks")
("j" "Journal" entry (file+datetree "journal.org") "* TODO %?\n %i\n %a")
"* %?\nEntered on %U\n %i\n %a") ("j" "Journal" entry (file+datetree "journal.org")
("m" "Meeting" entry (file+headline "dates.org" "Meetings") "* %?\nEntered on %U\n %i\n %a")
"* %^{prompt}\n:PROPERTIES:\n:CATEGORY: Meeting\n:END:\nWhen: %^t\nAdded: %U\nTags: %^g\n%?")))) ("m" "Meeting" entry (file+headline "dates.org" "Meetings")
"* %^{prompt}\n:PROPERTIES:\n:CATEGORY: Meeting\n:END:\nWhen: %^t\nAdded: %U\nTags: %^g\n%?"))))
#+end_src #+end_src
** Flutter * Flutter
#+begin_src elisp :tangle yes
(leaf dart-mode :ensure t) #+begin_src elisp :tangle yes :exports code
(leaf lsp-dart :ensure t) (leaf dart-mode :ensure t)
(leaf lsp-dart :ensure t)
#+end_src #+end_src
** BQN
#+begin_src elisp :tangle yes * BQN
(leaf bqn-mode
:el-get "museoa/bqn-mode" #+begin_src elisp :tangle yes :exports code
:config (leaf bqn-mode
(leaf bqn-font :el-get "museoa/bqn-mode"
:after bqn-mode :defer-config
:config (set-face-attribute 'bqn-default nil :family 'unspecified))
(set-face-attribute 'bqn-default nil :family 'unspecified)))
#+end_src #+end_src