diff options
Diffstat (limited to 'Doom/.config/doom/org/config.org')
-rw-r--r-- | Doom/.config/doom/org/config.org | 354 |
1 files changed, 354 insertions, 0 deletions
diff --git a/Doom/.config/doom/org/config.org b/Doom/.config/doom/org/config.org new file mode 100644 index 0000000..e0bf129 --- /dev/null +++ b/Doom/.config/doom/org/config.org @@ -0,0 +1,354 @@ +#+TITLE: Oreodave's Emacs configuration +#+AUTHOR: Oreodave +#+DESCRIPTION: My Doom Emacs configuration! + +* Preclude +- This is my [[https://github.com/hlissner/doom-emacs][Doom Emacs]] configuration. +- Use it for most of my code editing and development needs. +- Incredibly versatile tool in my inventory. +* Initial setup +** Doom Variables +- Set the doom local-leader to "SPC ," because it's faster +- Good font choices: + - Hack + - Source Code Pro/Variable + - IBM Plex Mono + - Space Mono + - Z003 if I'm feeling fancy (▀̿Ĺ̯▀̿̿) +#+BEGIN_SRC elisp +(after! core-keybinds + (map! :leader "," nil) + (setq doom-localleader-key "SPC ,") + (setq doom-themes-enable-italic nil) + (setq doom-themes-enable-bold t) + (setq doom-theme 'doom-monokai-classic) + (setq doom-font (font-spec :family "Source Code Pro" :size 15))) +#+END_SRC +** Other variables +Some quality of life things and others that I couldn't really put in one category +- Using line-numbers that are relative now instead of nothing. +- Set org directory +- Add libgen to search providers +#+BEGIN_SRC elisp +(setq completion-ignore-case t + truncate-lines t + display-line-numbers-type t + bookmark-default-file (expand-file-name (concat doom-private-dir "bookmarks"))) +(setq-default frame-title-format '("%b - Emacs")) +(add-to-list 'default-frame-alist '(alpha . 90)) +(cl-pushnew '("Libgen" "http://gen.lib.rus.ec/search.php?req=%s") +lookup-provider-url-alist :key #'car :test 'string=) +#+END_SRC +** HACK: Load org mode again? +#+BEGIN_SRC elisp +(load (expand-file-name (concat user-emacs-directory "modules/lang/org/config.el"))) +#+END_SRC +* Package Configuration +Configuration for or based heavily around specific packages that I find very important +** Ido +Just add vimish keybindings to ido completion +#+BEGIN_SRC elisp +(map! + :map (ido-common-completion-map ido-file-completion-map ido-buffer-completion-map) + "C-k" #'ido-prev-match + "C-j" #'ido-next-match) + +(setq ido-ignore-buffers '("\\` " "^\\*ESS\\*" "^\\*[Hh]elp" "^\\*.*Completions\\*$" "^\\*tramp" "^\\*cvs-" "^*Ido")) +#+END_SRC +** DAP +*** Function +First to setup is a routine for setting up all the dap-panes for debugging. +Easier to do than just running all those functions manually +- Routine sets up the panes that I like to use, instead of M-x'ing it +- *<SPC>cD* starts up the routine +#+BEGIN_SRC elisp +(after! dap-mode + (defun dx:debug () + (interactive) + (dap-ui-mode) + (dap-ui-locals) + (dap-ui-sessions))) +#+END_SRC +*** Keybind +#+BEGIN_SRC elisp +(map! + :after dap-mode + :leader + :desc "Start debugging setup" "cD" #'dx:debug) +#+END_SRC +** Spelling checker +Keybinds to org-mode for flyspell package +#+BEGIN_SRC elisp +(map! + :after (flyspell org) + :localleader + :map org-mode-map + :prefix "w" + :desc "Correct current word" "c" #'flyspell-correct-at-point + :desc "Autocorrect word" "a" #'flyspell-auto-correct-word + :desc "Goto next error" "w" #'flyspell-goto-next-error) +#+END_SRC +** Projectile +Add CMakeLists.txt to projectile-project-roots. +#+BEGIN_SRC elisp +(after! projectile + (cl-pushnew "CMakeLists.txt" projectile-project-root-files :test 'string=) + (setq projectile-tags-command + "ctags -e -R --exclude=dist --exclude=.ccls --exclude=.ccls-cache")) +#+END_SRC +** Prettify symbols +Configuration for the module (pretty-code). +*** Setup symbols +Some symbols aren't present in the current doom version, or my fonts are screwing up, so I wrote them here. +Maybe a bit of a bandage over broken glass, but at least it's something. +#+BEGIN_SRC elisp +(setq +pretty-code-symbols + '(:name "»" + :src_block "»" + :src_block_end "«" + :quote "“" + :quote_end "”" + :lambda "λ" + :def "ƒ" + :composition "∘" + :map "↦" + :null "∅" + :true "𝕋" + :false "𝔽" + :int "ℤ" + :float "ℝ" + :str "𝕊" + :bool "𝔹" + :not "¬" + :in "∈" + :not-in "∉" + :and "∧" + :or "∨" + :for "∀" + :some "∃" + :return "⟼" + :yield "⟻" + :tuple "⨂" + :pipe "|" + :dot "•")) +#+END_SRC + +The 'x' symbol in the =+pretty-code-fira-code-font-ligatures= is annoying, and unneeded. +So I remove it. +#+BEGIN_SRC elisp +(assoc-delete-all "x" +pretty-code-fira-code-font-ligatures #'string=) +#+END_SRC +*** Pretty symbols +Setup pretty symbols specifically for C++. +I import the string type via `using std::string` which isn't supported in standard doom so I added support for it as well. +#+BEGIN_SRC elisp +(after! cc-mode + (set-pretty-symbols! + '(c-mode c++-mode) + :return "return" + :or "||" + :and "&&" + :not "!" + :bool "bool" + :str "string" + :str "std::string" + :float "float" + :int "int" + :false "false" + :true "true" + :null "nullptr")) +#+END_SRC +** Calc +*** Configuration +#+BEGIN_SRC elisp +(use-package! calc + :config + (setq calc-angle-mode 'rad) + (map! + :leader + :desc "Calc" ":" #'calc)) +#+END_SRC +** Dired and ranger +I like doing shell comamnds from dired, but I don't want Emacs to hang when doing them. +So, as '!' is a common use command and "&" is the async comamnd, I'll just switcheroo the "!" and "&" for their designated commands. +#+BEGIN_SRC elisp +(map! + :map dired-mode-map + :n "!" #'dired-do-async-shell-command + :n "&" #'dired-do-shell-command) +#+END_SRC +** Compilation +Add keybind to recompile (inside the buffer) +#+BEGIN_SRC elisp +(map! + (:map 'compilation-mode-map + :n "u" #'recompile)) +#+END_SRC +** Company +#+BEGIN_SRC elisp +(add-hook + 'company-mode-hook + #'(lambda () (setq company-frontends '(company-preview-frontend company-pseudo-tooltip-frontend)))) +#+END_SRC +* Language Configuration +Configuration for various languages which I feel can be useful +** C-style languages +Configuration for C and C++. +Emacs doesn't have the full range of styles that I want, so lemme just do it myself. +#+BEGIN_SRC elisp +(after! cc-mode + (c-add-style + "user" + '((c-basic-offset . 2) + (c-comment-only-line-offset . 0) + (c-hanging-braces-alist (brace-list-open) + (brace-entry-open) + (substatement-open after) + (block-close . c-snug-do-while) + (arglist-cont-nonempty)) + (c-cleanup-list brace-else-brace) + (c-offsets-alist + (statement-block-intro . +) + (knr-argdecl-intro . 0) + (substatement-open . 0) + (substatement-label . 0) + (access-label . 0) + (label . 0) + (statement-cont . +)))) + (setq c-default-style "user")) +#+END_SRC +** Python +Configuration for the Python language in doom +*** Set interpreter and flycheck to Python 3 +I do python development for Python3 so I need to set the flycheck python checker, as well as the interpreter, to be Python3 +#+BEGIN_SRC elisp +(after! python + (setq python-version-checked t) + (setq python-python-command "python3") + (setq python-shell-interpreter "python3") + (setq flycheck-python-pycompile-executable "python3")) +#+END_SRC +*** Map to python-mode-map +Most of my python work is in scripts or ideas, so I don't need extensive testing utilities or anything like that +I adhere greatly to the REPL in python, so I need access to it often. +#+BEGIN_SRC elisp +(after! python + (map! ; Python keybinds + :map python-mode-map + :localleader + :desc "Start python minor" "c" #'run-python + :desc "Format buffer" "=" #'py-yapf-buffer + (:prefix "s" + :desc "Send region REPL" "r" #'python-shell-send-region + :desc "Send buffer" "b" #'python-shell-send-buffer + :desc "Send function" "f" #'python-shell-send-defun))) +#+END_SRC +** Typescript +- Typescript (in my opinion) should be indented by 2 +- Setup the LSP server on the lsp-language-id-config in case it hasn't already +#+BEGIN_SRC elisp +(after! typescript-mode + (setq typescript-indent-level 2) + (setq tide-format-options '(:indentSize 2 :tabSize 2)) + (after! lsp + (cl-pushnew '(typescript-mode . "typescript") lsp-language-id-configuration :key #'car) + (lsp-register-client + (make-lsp-client + :new-connection (lsp-stdio-connection "typescript-language-server --stdio") + :major-modes '(typescript-mode) + :server-id 'typescript)))) +#+END_SRC +** Org +Org configuration to maximise org workflow. +*** Org variables +Setup the agenda-files and the org-directory. +#+BEGIN_SRC elisp +(after! org + (add-hook 'org-mode-hook #'visual-line-mode) + (add-hook 'org-mode-hook #'org-toggle-latex-fragment) + (setq org-directory "~/Text" + org-agenda-files '("~/Text/") + org-src-window-setup 'split-window-right + org-superstar-headline-bullets-list '("◉" "‣" "⧈" "⬠") + org-log-repeat 'note)) +#+END_SRC +*** Fragtog +#+BEGIN_SRC elisp +(use-package! org-fragtog + :config + (add-hook 'org-mode-hook #'org-fragtog-mode)) +#+END_SRC +*** Thesaurus +Powerthesaurus installation, added a keybind in org-mode for looking up words. +#+BEGIN_SRC elisp +(use-package! powerthesaurus + :after-call (org-mode) + :defer-incrementally (org) + :config + (map! + :localleader + :map org-mode-map + :prefix "w" + :desc "Thesaurus" "t" #'powerthesaurus-lookup-word-at-point)) +#+END_SRC +Powerthesaurus for thesaurus on writer files +*** Org keymap +- I like using org-export often, so bind it to a primary bind. +- Loading latex fragments is nice +#+BEGIN_SRC elisp +(map! ; Org keybinds + :after org + :map org-mode-map + :localleader + :desc "Org dispatch" "e" #'org-export-dispatch + :desc "Org LaTeX" "E" #'org-latex-export-as-latex) +#+END_SRC +** Haskell +Setup repl binds for Haskell +#+BEGIN_SRC elisp +(map! + :after haskell-mode + :map haskell-mode-map + :localleader + "l" #'haskell-process-load-file + "r" #'haskell-process-reload + "o" #'haskell-process-start) +#+END_SRC +** Sxhkd +Define a major-mode for sxhkd config files. +#+BEGIN_SRC elisp +(define-generic-mode sxhkd-mode + '(?#) + '("alt" "Escape" "super" "bspc" "ctrl" "space" "shift" "hyper" "XF86*") + '("{" "}") + '("sxhkdrc") + nil + "Simple mode for sxhkdrc files.") +#+END_SRC +* Key-map +General keymap +** Personal +- Prefix "SPC m" (rebound from local-leader) that will hold personal keybinds for functions that I like using +- Mostly opening directories I use a lot or doing custom stuff that I can't really put in anything in particular +#+BEGIN_SRC elisp +(map! + :leader + :prefix ("m" . "personal") ; Personal + :desc "Open books" "b" #'(lambda () (interactive) (dired (concat org-directory "/Books"))); I like my books + :desc "Convert auto-fill" "f" #'dx:org/fill-to-long-lines + :desc "Change theme" "t" #'dx:themes/set-new-theme ; From my own collection + :desc "Generate template" "g" #'+gentemplate/generate-template) ; From my own collection +#+END_SRC +** Remaps +Adding a new configuration option. +Remapping functions that other modules set to default functions. +#+BEGIN_SRC elisp +(define-key! + [remap compile] #'compile) +#+END_SRC +** Non-leader +Non-leader bindings for text-based commands. +#+BEGIN_SRC elisp +(map! + "M-v" #'dx:newline + "M-V" #'(lambda () (interactive) (dx:newline 1))) +#+END_SRC |