From 37351ad29953e3c12851efef05406a5a2f57cace Mon Sep 17 00:00:00 2001 From: Aryadev Chavali Date: Wed, 24 Apr 2024 04:05:13 +0530 Subject: (Emacs/config)~rearrange org-mode configuration --- Emacs/.config/emacs/config.org | 114 +++++++++++++++++++++++------------------ 1 file changed, 65 insertions(+), 49 deletions(-) (limited to 'Emacs/.config/emacs/config.org') diff --git a/Emacs/.config/emacs/config.org b/Emacs/.config/emacs/config.org index 279e617..56beaf2 100644 --- a/Emacs/.config/emacs/config.org +++ b/Emacs/.config/emacs/config.org @@ -1169,25 +1169,29 @@ I'm not very bothered. preview, I'll do it myself, so turn it off. + Org manages windowing itself, to some extent, so I set those options to be as unobtrusive as possible ++ Load languages I use in =src= blocks in org-mode (Emacs-lisp for + this configuration, C and Python) #+begin_src emacs-lisp (use-package org :defer t :straight t :init - (setq - org-directory "~/Text" - org-adapt-indentation nil - org-indent-mode nil - org-startup-indented t - org-startup-folded 'content - org-startup-with-latex-preview nil - org-imenu-depth 10 - org-src-window-setup 'current-window - org-indirect-buffer-display 'current-window - org-link-frame-setup '((vm . vm-visit-folder-other-frame) - (vm-imap . vm-visit-imap-folder-other-frame) - (file . find-file)))) + (setq org-directory "~/Text" + org-adapt-indentation nil + org-indent-mode nil + org-startup-indented t + org-startup-folded 'content + org-startup-with-latex-preview nil + org-imenu-depth 10 + org-src-window-setup 'current-window + org-indirect-buffer-display 'current-window + org-link-frame-setup '((vm . vm-visit-folder-other-frame) + (vm-imap . vm-visit-imap-folder-other-frame) + (file . find-file)) + org-babel-load-languages '((emacs-lisp . t) + (lisp . t) + (shell . t)))) #+end_src ** Org Latex Org mode has deep integration with latex, can export to PDF and even @@ -1247,10 +1251,7 @@ Emacs was very helpful here. org-todo-keywords '((sequence "TODO" "WIP" "DONE") (sequence "PROJ" "WAIT" "COMPLETE")) - org-use-sub-superscripts '{} - org-babel-load-languages '((emacs-lisp . t) - (lisp . t) - (shell . t)))) + org-use-sub-superscripts '{})) #+end_src ** Org Core Functionality Hooks, prettify-symbols and records for auto insertion. @@ -1279,37 +1280,13 @@ Hooks, prettify-symbols and records for auto insertion. Some bindings for org mode. #+begin_src emacs-lisp (use-package org - :after counsel - :config - (defun +org/swiper-goto () - (interactive) - (swiper "^\\* ")) - (defun +org/search-headings () - "Searches directory (of buffer) for org headings via counsel-rg" - (interactive) - (counsel-rg "^\\* " (file-name-directory (buffer-file-name)))) - - (defun +org/search-config-headings () - "Searches USER-EMACS-DIRECTORY for org headings via counsel-rg" - (interactive) - (counsel-rg "^\\* " - (substring user-emacs-directory 0 - (- (length user-emacs-directory) 1)) - "--max-depth=1")) :general (file-leader "l" #'org-store-link "i" #'org-insert-last-stored-link) (code-leader + :keymaps 'emacs-lisp-mode-map "D" #'org-babel-detangle) - (file-leader - "p" #'+org/search-config-headings) - (search-leader - :keymaps 'org-mode-map - "I" #'+org/search-headings) - (nmmap - :keymaps 'org-mode-map - [remap imenu] #'+org/swiper-goto) (local-leader :keymaps 'org-mode-map "l" '(nil :which-key "Links") @@ -1340,14 +1317,52 @@ Some bindings for org mode. "t" #'org-table-toggle-coordinate-overlays "s" #'org-table-sum "e" #'org-table-calc-current-TBLFM - "E" #'org-table-eval-formula) - (local-leader + "E" #'org-table-eval-formula)) +#+end_src +** Searching org files +The default ~imenu~ support for Org-mode is god-awful. ~Imenu~ for +org-mode should show me a list of headings and provide a +completing-read interface to search them. + +[[file:core.org::*Counsel][Counsel]] has me covered for this as I can +just provide it a regex as an initial prompt to narrow the candidates +down to just the headings then let the user go from there. I use +~swiper~ when considering just the local file (a la ~imenu~) and +~counsel-rg~ to search multiple org-files. + +The cherry on top is ~+org/search-config-headings~ which searches the +org files in ~user-emacs-directory~ and provides the headings for +them. This allows me to search my configuration pretty quickly. +#+begin_src emacs-lisp +(use-package org + :after counsel + :config + (defun +org/swiper-goto () + (interactive) + (swiper "^\\* ")) + + (defun +org/search-headings () + "Searches directory (of buffer) for org headings via counsel-rg" + (interactive) + (counsel-rg "^\\* " (file-name-directory (buffer-file-name)))) + + (defun +org/search-config-headings () + "Searches USER-EMACS-DIRECTORY for org headings via counsel-rg" + (interactive) + (counsel-rg "^\\* " + (substring user-emacs-directory 0 + (- (length user-emacs-directory) 1)) + "--max-depth=1")) + :general + (search-leader + "C" #'+org/search-config-headings) + (search-leader :keymaps 'org-mode-map - :infix "c" - "i" #'org-clock-clock-in - "o" #'org-clock-clock-out - "c" #'org-clock-in-last - "d" #'org-clock-display)) + "I" #'+org/search-headings) + (nmmap + :keymaps 'org-mode-map + [remap imenu] #'+org/swiper-goto)) + #+end_src ** Org Agenda Org agenda provides a nice viewing for schedules. With org mode it's @@ -1432,6 +1447,7 @@ time a clock out occurs.") (local-leader :keymaps 'org-mode-map :infix "c" + "d" #'org-clock-display "c" #'org-clock-in "o" #'org-clock-out "r" #'org-clock-report -- cgit v1.2.3-13-gbd6f