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.
;; Your init file should contain only one such instance.
;; If there is more than one, they won't work right.
'(conda-anaconda-home "~/opt/anaconda3")
'(custom-safe-themes
'("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)))
'("5f79df6b4c56021d173c178d90b5a600c678a192d78cc639553915985b67c4ea" "8cda1cfae8e393bfb23f1d448d4be10720835d086f7db080908a7c8d01566516" "a27f7b52fe66bacaec9059f8afd04d055a4ac3c2fba9eb9128c81e10152fc566" "1ba7196d8e7b883272ea8818a5163aec21b57023368febf55255816226f7b370" "8256e7e03444834d34915a226dc24933b0d680a0a1da568ec03f852be776f168" "4ac2f45e6b46e5bb50826d4250df71a57124169b82cc0ad75e436de6e70a9690" "29addd67feb95ca1179e60d476bb92c1f11835548e2efaec15c9ac6af2a8e6a8" "9b7a425c38c4894e161887c26381c2a6fc1de3c1407158507caaf469d76eb27b" "bce055e1681dd343659957710af77f7a6ad106677d42c61f86ebeedf637c4493" "f62c69472d3f506179d797131c014fe4095d9609dddf14542c50e0388f1e8d6d" "cf143bf23fa8160f87331893cdadc40b876556634621dfa373fcf93c4c97c444" "f459dfd377e9cb98d90e53383dcca7d73396cc0a22b31d39af24fb1cf3548fb5" "fcc14e1a22c99d77f7b1455b0c8a320f8afd0c1f4a9c5c50b45f676eb0c54ba2" "a6bae299481c3c0058e611d2c32ca169fa27203345a880806a5a8554cdd2e588" "feb9556e03558588e29e6659c8e01ea3d2a17a1e7a13e9bf9fc9e59cacba4b72" default)))
(custom-set-faces
;; custom-set-faces was added by Custom.
;; 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
replacement for defining configs and relations between packages etc.
#+begin_src elisp :tangle yes
(eval-and-compile
(customize-set-variable
'package-archives '(("org" . "https://orgmode.org/elpa/")
("melpa" . "https://melpa.org/packages/")
("gnu" . "https://elpa.gnu.org/packages/")))
(package-initialize)
(unless (package-installed-p 'leaf)
(package-refresh-contents)
(package-install 'leaf))
#+begin_src elisp :tangle yes :exports code
(eval-and-compile
(customize-set-variable
'package-archives '(("org" . "https://orgmode.org/elpa/")
("melpa" . "https://melpa.org/packages/")
("gnu" . "https://elpa.gnu.org/packages/")))
(package-initialize)
(unless (package-installed-p 'leaf)
(package-refresh-contents)
(package-install 'leaf))
(leaf leaf-keywords
:ensure t
:init
(leaf el-get :ensure t)
(leaf hydra :ensure t)
(leaf blackout :ensure t)
(leaf leaf-keywords
:ensure t
:init
(leaf el-get :ensure t)
(leaf hydra :ensure t)
(leaf blackout :ensure t)
:config
;; initialize leaf-keywords.el
(leaf-keywords-init)))
:config
;; initialize leaf-keywords.el
(leaf-keywords-init)))
(leaf leaf-tree :ensure t)
(leaf leaf-convert :ensure t)
(leaf transient-dwim :ensure t
:bind (("M-=" . transient-dwim-dispatch)))
(leaf leaf-tree :ensure t)
(leaf leaf-convert :ensure t)
(leaf transient-dwim :ensure t
:bind (("M-=" . transient-dwim-dispatch)))
#+end_src
** MacOS Specific
#+begin_src elisp :tangle yes
(when (eq system-type 'darwin)
(setq mac-option-modifier 'meta))
#+begin_src elisp :tangle yes :exports code
(leaf macos
:hook (after-init hook)
:when (eq system-type 'darwin)
:init
(setq mac-option-modifier 'meta))
#+end_src
** Performance
*** Garbage Collection
#+begin_src elisp :tangle yes
(leaf gcmh :ensure t
:hook (after-init-hook))
#+begin_src elisp :tangle yes :exports code
(leaf gcmh :ensure t
:hook (after-init-hook))
#+end_src
*** Profiling
#+begin_src elisp :tangle yes
(leaf esup :disabled nil :ensure t)
#+begin_src elisp :tangle yes :exports code
(leaf esup :disabled nil :ensure t)
#+end_src
** 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.
#+begin_src elisp :tangle yes
(leaf custom-el
:config
;; Ensure custom writes to specific file
(setq custom-file (expand-file-name "custom.el" user-emacs-directory))
(load custom-file 'noerror 'nomessage))
#+begin_src elisp :tangle yes :exports code
(leaf custom-el
:config
;; Ensure custom writes to specific file
(setq custom-file (expand-file-name "custom.el" user-emacs-directory))
(load custom-file 'noerror 'nomessage))
#+end_src
*** Backups
Set the backups directory to reside in the users' emacs directory.
#+begin_src elisp :tangle yes
(leaf backup
:config
;; Change the location of file backups/locks into the emacs.d/backups/
(setq backup-directory-alist
`(("." . ,(concat user-emacs-directory "backups")))))
#+begin_src elisp :tangle yes :exports code
(leaf backup
:config
;; Change the location of file backups/locks into the emacs.d/backups/
(setq backup-directory-alist
`(("." . ,(concat user-emacs-directory "backups")))))
#+end_src
** 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
shell.
#+begin_src elisp :tangle yes
(leaf exec-path-from-shell :ensure t
:config
(exec-path-from-shell-initialize))
#+begin_src elisp :tangle yes :exports code
(leaf exec-path-from-shell :ensure t
:config
(exec-path-from-shell-initialize))
#+end_src
* Visual Customization
Visual Theme of Emacs config: defined in the =themes= directory.
#+begin_src elisp :tangle yes
(leaf visual
:doc "Visual Changes to Emacs"
:tag "builtin" "internal"
:custom ((menu-bar-mode . nil)
(tool-bar-mode . nil)
(scroll-bar-mode . nil))
:custom-face ((default . '((t (:family "JuliaMono"
:height 150
:weight normal)))))
:config
;; Set location of custom theme dir
(setq custom-theme-directory (concat user-emacs-directory "themes"))
(load-theme 'UniverseHighContrast))
#+begin_src elisp :tangle yes :exports code
(leaf visual
:doc "Visual Changes to Emacs"
:tag "builtin" "internal"
:custom ((menu-bar-mode . nil)
(tool-bar-mode . nil)
(scroll-bar-mode . nil))
:custom-face ((default . '((t (:family "JuliaMono"
:height 150
:weight normal)))))
:config
;; Set location of custom theme dir
(setq custom-theme-directory (concat user-emacs-directory "themes"))
(load-theme 'UniverseHighContrast))
#+end_src
** Font Related
*** Ligature
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))
* Version Control
#+begin_src elisp :tangle yes :exports code
(leaf magit :ensure t :require t)
#+end_src
* Package Configuration
* Nix Related
** Version Control
#+begin_src elisp :tangle yes
(leaf magit :ensure t :require t)
#+end_src
** Nix Related
*** Direnv
** Direnv
In order to support direnv (loading =nix-shell= / =nix develop=)
#+begin_src elisp :tangle yes
(leaf direnv
:ensure t
:config
(direnv-mode))
#+begin_src elisp :tangle yes :exports code
(leaf direnv
:ensure t
:config
(direnv-mode))
#+end_src
*** Nix-mode
** Nix-mode
=.nix= file mode
#+begin_src elisp :tangle yes
(leaf nix-mode :ensure t)
#+begin_src elisp :tangle yes :exports code
(leaf nix-mode :ensure t)
#+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
(leaf web-mode
:ensure t
:mode
"\\.p?html?\\'"
"\\.djtml\\'"
"\\.jsx?\\'"
"\\.tsx?\\'")
(leaf php-mode
:ensure t)
#+begin_src elisp :tangle yes :exports code
(leaf which-key :ensure t
:config (which-key-mode))
#+end_src
** D2
#+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!
** Company Completion!
We like autocomplete, it... is nice, okay?
#+begin_src elisp :tangle yes
(leaf company :ensure t
:bind
(("C-<tab>" . company-complete))
:hook after-init-hook
:config (global-company-mode))
#+begin_src elisp :tangle yes :exports code
(leaf company :ensure t
:bind
(("C-<tab>" . company-complete))
:hook after-init-hook
:config (global-company-mode))
#+end_src
*** Language Server Protocol
** Language Server Protocol
We love language features that make languages nice
#+begin_src elisp :tangle yes
(leaf lsp-mode
:ensure t
:init
(setq lsp-keymap-prefix "C-c l")
:hook
((dart-mode-hook . lsp)
(python-mode-hook . lsp)
(c-mode-hook . lsp)
(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)))
#+begin_src elisp :tangle yes :exports code
(leaf lsp-mode
:ensure t
:init
(setq lsp-keymap-prefix "C-c l")
:commands lsp lsp-deferred
:hook
;; which key support v v v
((lsp-mode-hook . lsp-enable-which-key-integration)
#+end_src
**** Projectile (Projects)
#+begin_src elisp :tangle yes
(leaf projectile
:commands projectile-mode
:config
(projectile-mode +1))
*** IDE Languages
**** Dart/Flutter
#+begin_src elisp :tangle yes :exports code
(dart-mode . lsp-deferred)
#+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
highlighting) compared to builtin python-mode.
#+begin_src elisp :tangle yes
(leaf python-mode :ensure t
:config
(setq python-shell-interpreter "ipython"
python-shell-interpreter-args "-i --simple-prompt --InteractiveShell.display_page=True"))
#+begin_src elisp :tangle yes :exports code
(leaf python-mode :ensure t
:config
(setq python-shell-interpreter "ipython"
python-shell-interpreter-args "-i --simple-prompt --InteractiveShell.display_page=True"))
#+end_src
*** Poetry
** Poetry
For when we aren't nix'ing things, and want some nice poetry.
#+begin_src elisp :tangle yes
(leaf poetry :ensure t)
#+begin_src elisp :tangle yes :exports code
(leaf poetry :ensure t)
#+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.
#+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-c-headers :ensure t)
(leaf meson-mode :ensure t)
(leaf meson-mode :ensure t))
#+end_src
** Haskell
#+begin_src elisp :tangle yes
(leaf haskell-mode :ensure t
:config
(leaf lsp-haskell :ensure t)
(leaf company-ghci :ensure t))
* Haskell
#+begin_src elisp :tangle yes :exports code
(leaf haskell-mode :ensure t)
(leaf lsp-haskell :ensure t)
(leaf company-ghci :ensure t)
#+end_src
** Rust
#+begin_src elisp :tangle yes
(leaf rust-mode :ensure t
(leaf slint-mode :ensure t))
* Rust
#+begin_src elisp :tangle yes :exports code
(leaf rust-mode :ensure t
:init
(leaf slint-mode :ensure t))
#+end_src
** Minecraft??
* Minecraft??
Minecraft =mcfunction= support, because, it can be annoying to type
this stuff otherwise.
#+begin_src elisp :tangle yes
(leaf mcf-mode
:el-get rasensuihei/mcf)
#+begin_src elisp :tangle yes :exports code
(leaf mcf-mode
:el-get rasensuihei/mcf)
#+end_src
** Lisps
* Lisps
Gonna need to have pretty brackets
#+begin_src elisp :tangle yes
(leaf rainbow-delimiters
:ensure t
:commands rainbow-delimiters-mode
:config
(leaf rainbow
:hook (emacs-lisp-mode-hook . rainbow-delimiters-mode)
(geiser-mode-hook . rainbow-delimiters-mode)))
#+begin_src elisp :tangle yes :exports code
(leaf rainbow-delimiters
:ensure t
:commands rainbow-delimiters-mode
:config
(leaf rainbow
:hook (emacs-lisp-mode-hook . rainbow-delimiters-mode)
(geiser-mode-hook . rainbow-delimiters-mode)))
#+end_src
*** Racket
** Racket
Makes using racket so much nicer
#+begin_src elisp :tangle yes
(leaf geiser-racket :ensure t)
#+begin_src elisp :tangle yes :exports code
(leaf geiser-racket :ensure t)
#+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
updating our bibliography.
#+begin_src elisp :tangle yes
(leaf ivy-bibtex :ensure t)
(leaf helm-bibtex :ensure t)
(leaf org-ref :ensure t
:after org
:init
(leaf pdf-tools :ensure t)
:config
(setq bibtex-completion-bibliography
(list (expand-file-name "~/Nextcloud/Bibliography/references.bib")))
#+begin_src elisp :tangle no :exports code
(leaf org-ref :ensure t helm-bibtex
:after org
:init
(leaf pdf-tools :ensure t)
:bind
(("C-c ]" . org-ref-insert-link))
:config
(setq org-bib-dir (concat document-dir "/Bibliography"))
(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"
org-ref-default-bibliography '("~/Nextcloud/Bibliography/references.bib")
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")))
bibtex-completion-notes-path (concat org-bib-dir "/notes")
bibtex-completion-notes-template-multiple-files "* ${author-or-editor}, ${title}, ${journal}, (${year}) :${=type=}: \n\nSee [[cite:&${=key=}]]\n"
(setq org-ref-bibliography-notes "~/Nextcloud/Bibliography/notes.org"
org-ref-default-bibliography '("~/Nextcloud/Bibliography/references.bib")
org-ref-pdf-directory "~/Nextcloud/Bibliography/bibtex-pdfs/")
)
(setq org-ref-insert-link-function 'org-ref-insert-link-hydra/body
org-ref-insert-cite-function 'org-ref-cite-insert-helm
org-ref-insert-label-function 'org-ref-insert-label-link
org-ref-insert-ref-function 'org-ref-insert-ref-link
org-ref-cite-onclick-function (lambda (_) (org-ref-citation-hydra/body)))
:require org-ref org-ref-ivy org-ref-helm doi-utils)
bibtex-completion-additional-search-fields '(keywords)
bibtex-completion-display-formats
'((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}")
(t . "${=has-pdf=:1}${=has-note=:1} ${year:4} ${author:36} ${title:*}"))
bibtex-completion-pdf-open-function
(lambda (fpath)
(call-process "open" nil 0 nil fpath)))
;; For bibtex generated keys (in-org citation format)
(setq bibtex-autokey-year-length 4
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
** 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:
#+begin_src elisp :tangle yes
(leaf ox-pandoc :ensure t
:after org)
#+begin_src elisp :tangle no :exports code
(leaf ox-pandoc :ensure t
:after org org-ref
:config)
;; (add-to-list 'org-export-backends 'pandoc))
#+end_src
*** Slideshows
**** Web based (reveal)
Writing mockup presentations can be quicker when you focus on the text
of the presentation first, and prettifying later. Reveal.js is a nice
in between of these.
TODO: I need to ensure [[https://gitlab.com/oer/emacs-reveal.git][emacs-reveal]] is installed properly via both nix
& the git clone. Could use a submodule? Maybe. I don't know if that
will work
#+begin_src elisp :tangle yes
(leaf ox-reveal :ensure t
:require t
:after org
:config
(setq org-reveal-root "https://cdn.jsdelivr.net/npm/reveal.js"))
#+begin_src elisp :tangle no :exports code
(leaf ox-reveal :ensure t
:config
;; (add-to-list 'org-export-backends 'reveal)
(setq org-reveal-root "https://cdn.jsdelivr.net/npm/reveal.js"))
#+end_src
** LaTeX: with AuCTeX
Nicer LaTeX editing (AuCTeX):
#+begin_src elisp :tangle yes
(leaf auctex :ensure t
:after org)
#+begin_src elisp :tangle yes :exports code
(leaf auctex :ensure t
:after org)
#+end_src
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.
#+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?
#+begin_src elisp :tangle yes
(leaf gnuplot
:ensure t)
#+begin_src elisp :tangle yes :exports code
(leaf gnuplot
:ensure t)
#+end_src
*** Org Mode Agenda/Calendar Things
** Org Mode Agenda/Calendar Things
**** 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.
*** Agenda Location
#+begin_src elisp :tangle yes
(leaf org-agenda-file
:after org
:config
(setq org-agenda-files '("~/Nextcloud/org")))
(when (eq system-type 'darwin)
(setq org-agenda-files '("~/Nextcloud/org"))
)
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 :exports code
(leaf org-agenda :require t
:after org
:config
(setq org-agenda-files (concat org-directory "/MasterList.org")))
#+end_src
**** Capture Things
*** Capture Things
Unless specified otherwise, any captured note, date, meeting, idea,
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
told to go elsewhere.
#+begin_src elisp :tangle yes
(leaf org-capture-cfg
:after org
:config
(setq org-directory "~/Nextcloud/org")
(when (eq system-type 'darwin)
(setq org-directory '("~/Nextcloud/org"))
)
(setq org-default-notes-file (concat org-directory "/notes.org")))
#+begin_src elisp :tangle yes :exports code
(leaf org-capture
:after org
:config
(setq org-default-notes-file (concat org-directory "/notes.org")))
#+end_src
We also want to configure what type of things we want to capture,
e.g. meetings, deadlines and whatever else:
#+begin_src elisp :tangle yes
(leaf org-capture-what
:after org
:config
(setq org-capture-templates
'(("t" "Todo" entry (file+headline "todo.org" "Tasks")
"* TODO %?\n %i\n %a")
("j" "Journal" entry (file+datetree "journal.org")
"* %?\nEntered on %U\n %i\n %a")
("m" "Meeting" entry (file+headline "dates.org" "Meetings")
"* %^{prompt}\n:PROPERTIES:\n:CATEGORY: Meeting\n:END:\nWhen: %^t\nAdded: %U\nTags: %^g\n%?"))))
#+begin_src elisp :tangle yes :exports code
(leaf org-capture
:after org-capture
:config
(setq org-capture-templates
'(("t" "Todo" entry (file+headline "todo.org" "Tasks")
"* TODO %?\n %i\n %a")
("j" "Journal" entry (file+datetree "journal.org")
"* %?\nEntered on %U\n %i\n %a")
("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
** Flutter
#+begin_src elisp :tangle yes
(leaf dart-mode :ensure t)
(leaf lsp-dart :ensure t)
* Flutter
#+begin_src elisp :tangle yes :exports code
(leaf dart-mode :ensure t)
(leaf lsp-dart :ensure t)
#+end_src
** BQN
#+begin_src elisp :tangle yes
(leaf bqn-mode
:el-get "museoa/bqn-mode"
:config
(leaf bqn-font
:after bqn-mode
:config
(set-face-attribute 'bqn-default nil :family 'unspecified)))
* BQN
#+begin_src elisp :tangle yes :exports code
(leaf bqn-mode
:el-get "museoa/bqn-mode"
:defer-config
(set-face-attribute 'bqn-default nil :family 'unspecified))
#+end_src