lang/org: minor refactor/reformatting
Also reduce internal use of map! (toward eventual switch to general)
This commit is contained in:
parent
ae86498a41
commit
f9be8887fb
2 changed files with 76 additions and 76 deletions
|
@ -313,12 +313,6 @@ wrong places)."
|
||||||
(if org-table-may-need-update (org-table-align)))
|
(if org-table-may-need-update (org-table-align)))
|
||||||
(goto-char pt))))
|
(goto-char pt))))
|
||||||
|
|
||||||
;;;###autoload
|
|
||||||
(defun +org*realign-table-maybe (&rest _)
|
|
||||||
"Auto-align table under cursor and re-calculate formulas."
|
|
||||||
(when (eq major-mode 'org-mode)
|
|
||||||
(+org|realign-table-maybe)))
|
|
||||||
|
|
||||||
;;;###autoload
|
;;;###autoload
|
||||||
(defun +org|update-cookies ()
|
(defun +org|update-cookies ()
|
||||||
"Update counts in headlines (aka \"cookies\")."
|
"Update counts in headlines (aka \"cookies\")."
|
||||||
|
@ -329,9 +323,8 @@ wrong places)."
|
||||||
(defun +org|yas-expand-maybe ()
|
(defun +org|yas-expand-maybe ()
|
||||||
"Tries to expand a yasnippet snippet, if one is available. Made for
|
"Tries to expand a yasnippet snippet, if one is available. Made for
|
||||||
`org-tab-first-hook'."
|
`org-tab-first-hook'."
|
||||||
(when (and (if (bound-and-true-p evil-mode)
|
(when (and (or (not (bound-and-true-p evil-mode))
|
||||||
(eq evil-state 'insert)
|
(eq evil-state 'insert))
|
||||||
t)
|
|
||||||
(bound-and-true-p yas-minor-mode)
|
(bound-and-true-p yas-minor-mode)
|
||||||
(yas--templates-for-key-at-point))
|
(yas--templates-for-key-at-point))
|
||||||
(call-interactively #'yas-expand)
|
(call-interactively #'yas-expand)
|
||||||
|
@ -354,6 +347,13 @@ with `org-cycle')."
|
||||||
;;;###autoload
|
;;;###autoload
|
||||||
(defalias #'+org/toggle-fold #'+org|toggle-only-current-fold)
|
(defalias #'+org/toggle-fold #'+org|toggle-only-current-fold)
|
||||||
|
|
||||||
|
;;;###autoload
|
||||||
|
(defun +org|remove-occur-highlights ()
|
||||||
|
"Remove org occur highlights on ESC in normal mode."
|
||||||
|
(when org-occur-highlights
|
||||||
|
(org-remove-occur-highlights)
|
||||||
|
t))
|
||||||
|
|
||||||
|
|
||||||
;;
|
;;
|
||||||
;; Advice
|
;; Advice
|
||||||
|
@ -365,3 +365,9 @@ with `org-cycle')."
|
||||||
(when (org-in-src-block-p t)
|
(when (org-in-src-block-p t)
|
||||||
(org-babel-do-in-edit-buffer
|
(org-babel-do-in-edit-buffer
|
||||||
(call-interactively #'indent-for-tab-command))))
|
(call-interactively #'indent-for-tab-command))))
|
||||||
|
|
||||||
|
;;;###autoload
|
||||||
|
(defun +org*realign-table-maybe (&rest _)
|
||||||
|
"Auto-align table under cursor and re-calculate formulas."
|
||||||
|
(when (eq major-mode 'org-mode)
|
||||||
|
(+org|realign-table-maybe)))
|
||||||
|
|
|
@ -245,84 +245,80 @@ unfold to point on startup."
|
||||||
(defun +org|setup-keybinds ()
|
(defun +org|setup-keybinds ()
|
||||||
"Sets up org-mode and evil keybindings. Tries to fix the idiosyncrasies
|
"Sets up org-mode and evil keybindings. Tries to fix the idiosyncrasies
|
||||||
between the two."
|
between the two."
|
||||||
(defun +org|remove-occur-highlights ()
|
|
||||||
"Remove org occur highlights on ESC in normal mode."
|
|
||||||
(when org-occur-highlights
|
|
||||||
(org-remove-occur-highlights)
|
|
||||||
t))
|
|
||||||
(add-hook 'doom-escape-hook #'+org|remove-occur-highlights)
|
(add-hook 'doom-escape-hook #'+org|remove-occur-highlights)
|
||||||
|
|
||||||
;; C-a & C-e act like `doom/backward-to-bol-or-indent' and
|
;; C-a & C-e act like `doom/backward-to-bol-or-indent' and
|
||||||
;; `doom/forward-to-last-non-comment-or-eol', but with more org awareness.
|
;; `doom/forward-to-last-non-comment-or-eol', but with more org awareness.
|
||||||
(setq org-special-ctrl-a/e t)
|
(setq org-special-ctrl-a/e t)
|
||||||
|
;; Try indenting normally or expanding snippets on TAB
|
||||||
(add-hook! 'org-tab-first-hook #'(+org|indent-maybe +org|yas-expand-maybe))
|
(add-hook! 'org-tab-first-hook #'(+org|indent-maybe +org|yas-expand-maybe))
|
||||||
|
|
||||||
;; Tell `doom/delete-backward-char' to respect org tables
|
;; Tell `doom/delete-backward-char' to respect org tables
|
||||||
(add-hook 'doom-delete-backward-functions #'+org|delete-backward-char)
|
(add-hook 'doom-delete-backward-functions #'+org|delete-backward-char)
|
||||||
|
;; Custom keybinds
|
||||||
(map! :map org-mode-map
|
(define-key! org-mode-map
|
||||||
"C-c C-S-l" #'+org/remove-link
|
(kbd "C-c C-S-l") #'+org/remove-link
|
||||||
"C-c C-i" #'org-toggle-inline-images
|
(kbd "C-c C-i") #'org-toggle-inline-images
|
||||||
[remap doom/backward-to-bol-or-indent] #'org-beginning-of-line
|
[remap doom/backward-to-bol-or-indent] #'org-beginning-of-line
|
||||||
[remap doom/forward-to-last-non-comment-or-eol] #'org-end-of-line))
|
[remap doom/forward-to-last-non-comment-or-eol] #'org-end-of-line))
|
||||||
|
|
||||||
(defun +org|setup-evil ()
|
(defun +org|setup-evil ()
|
||||||
(require 'evil-org)
|
(require 'evil-org)
|
||||||
|
;; By default, TAB cycles the visibility of all children under the current
|
||||||
|
;; tree between three states. I want to toggle the tree between two states,
|
||||||
|
;; without affecting its children.
|
||||||
(add-hook 'org-tab-first-hook #'+org|toggle-only-current-fold t)
|
(add-hook 'org-tab-first-hook #'+org|toggle-only-current-fold t)
|
||||||
|
|
||||||
;; Fix newline-and-indent behavior in src blocks
|
;; Fix newline-and-indent behavior in src blocks
|
||||||
(advice-add #'org-return-indent :after #'+org*return-indent-in-src-blocks)
|
(advice-add #'org-return-indent :after #'+org*return-indent-in-src-blocks)
|
||||||
|
;; Undo `evil-collection-outline'
|
||||||
(map! :map outline-mode-map
|
(evil-define-key* 'normal outline-mode-map
|
||||||
:n "^" nil
|
"^" nil
|
||||||
:n [backtab] nil
|
[backtab] nil
|
||||||
:n "C-j" nil
|
"\C-j" nil "\C-k" nil
|
||||||
:n "C-k" nil
|
"]" nil "[" nil)
|
||||||
:n "]" nil
|
(evil-define-key* 'insert evil-org-mode-map
|
||||||
:n "[" nil
|
;; dedent with shift-tab in insert mode
|
||||||
|
[backtab] #'+org/dedent
|
||||||
:map evil-org-mode-map
|
;; navigate table cells (from insert-mode)
|
||||||
:i [backtab] #'+org/dedent
|
"\C-l" #'+org/table-next-field
|
||||||
;; navigate table cells (from insert-mode)
|
"\C-h" #'+org/table-previous-field
|
||||||
:i "C-l" #'+org/table-next-field
|
"\C-k" #'+org/table-previous-row
|
||||||
:i "C-h" #'+org/table-previous-field
|
"\C-j" #'+org/table-next-row)
|
||||||
:i "C-k" #'+org/table-previous-row
|
;; expand tables or move fields
|
||||||
:i "C-j" #'+org/table-next-row
|
(evil-define-key* '(insert normal) evil-org-mode-map
|
||||||
;; expand tables (or shiftmeta move)
|
(kbd "C-S-l") #'+org/table-append-field-or-shift-right
|
||||||
:ni "C-S-l" #'+org/table-append-field-or-shift-right
|
(kbd "C-S-h") #'+org/table-prepend-field-or-shift-left
|
||||||
:ni "C-S-h" #'+org/table-prepend-field-or-shift-left
|
(kbd "C-S-k") #'org-metaup
|
||||||
:ni "C-S-k" #'org-metaup
|
(kbd "C-S-j") #'org-metadown)
|
||||||
:ni "C-S-j" #'org-metadown
|
;; more intuitive RET keybinds
|
||||||
;; more intuitive RET keybinds
|
(evil-define-key* 'insert evil-org-mode-map
|
||||||
:i "RET" #'org-return-indent
|
[return] #'org-return-indent)
|
||||||
:n "RET" #'+org/dwim-at-point
|
(evil-define-key* '(insert normal) evil-org-mode-map
|
||||||
:ni [M-return] (λ! (+org/insert-item 'below))
|
[M-return] (λ! (+org/insert-item 'below))
|
||||||
:ni [S-M-return] (λ! (+org/insert-item 'above))
|
[S-M-return] (λ! (+org/insert-item 'above)))
|
||||||
;; more org-ish vim motion keys
|
;; more vim-esque org motion keys
|
||||||
:m "]]" (λ! (org-forward-heading-same-level nil) (org-beginning-of-line))
|
(evil-define-key* 'motion evil-org-mode-map
|
||||||
:m "[[" (λ! (org-backward-heading-same-level nil) (org-beginning-of-line))
|
"]]" (λ! (org-forward-heading-same-level nil) (org-beginning-of-line))
|
||||||
:m "]h" #'org-next-visible-heading
|
"[[" (λ! (org-backward-heading-same-level nil) (org-beginning-of-line))
|
||||||
:m "[h" #'org-previous-visible-heading
|
"]h" #'org-next-visible-heading
|
||||||
:m "]l" #'org-next-link
|
"[h" #'org-previous-visible-heading
|
||||||
:m "[l" #'org-previous-link
|
"]l" #'org-next-link
|
||||||
:m "]s" #'org-babel-next-src-block
|
"[l" #'org-previous-link
|
||||||
:m "[s" #'org-babel-previous-src-block
|
"]s" #'org-babel-next-src-block
|
||||||
:m "^" #'evil-org-beginning-of-line
|
"[s" #'org-babel-previous-src-block
|
||||||
:m "0" (λ! (let ((visual-line-mode)) (org-beginning-of-line)))
|
"^" #'evil-org-beginning-of-line
|
||||||
:n "gQ" #'org-fill-paragraph
|
"0" (λ! (let (visual-line-mode) (org-beginning-of-line))))
|
||||||
;; sensible code-folding vim keybinds
|
;; sensible vim-esque folding keybinds
|
||||||
:n "za" #'+org/toggle-fold
|
(evil-define-key* 'normal evil-org-mode-map
|
||||||
:n "zA" #'org-shifttab
|
"za" #'+org/toggle-fold
|
||||||
:n "zc" #'outline-hide-subtree
|
"zA" #'org-shifttab
|
||||||
:n "zC" (λ! (outline-hide-sublevels 1))
|
"zc" #'outline-hide-subtree
|
||||||
:n "zd" (lambda (&optional arg) (interactive "p") (outline-hide-sublevels (or arg 3)))
|
"zC" (λ! (outline-hide-sublevels 1))
|
||||||
:n "zm" (λ! (outline-hide-sublevels 1))
|
"zd" (lambda (&optional arg) (interactive "p") (outline-hide-sublevels (or arg 3)))
|
||||||
:n "zo" #'outline-show-subtree
|
"zm" (λ! (outline-hide-sublevels 1))
|
||||||
:n "zO" #'outline-show-all
|
"zo" #'outline-show-subtree
|
||||||
:n "zr" #'outline-show-all
|
"zO" #'outline-show-all
|
||||||
|
"zr" #'outline-show-all)
|
||||||
|
;; <localleader>
|
||||||
|
(map! :map evil-org-mode-map
|
||||||
:localleader
|
:localleader
|
||||||
:n "d" #'org-deadline
|
:n "d" #'org-deadline
|
||||||
:n "t" #'org-todo
|
:n "t" #'org-todo
|
||||||
|
@ -337,7 +333,6 @@ between the two."
|
||||||
"Getting org to behave."
|
"Getting org to behave."
|
||||||
;; Don't open separate windows
|
;; Don't open separate windows
|
||||||
(map-put org-link-frame-setup 'file #'find-file)
|
(map-put org-link-frame-setup 'file #'find-file)
|
||||||
|
|
||||||
;; Let OS decide what to do with files when opened
|
;; Let OS decide what to do with files when opened
|
||||||
(setq org-file-apps
|
(setq org-file-apps
|
||||||
`(("pdf" . default)
|
`(("pdf" . default)
|
||||||
|
@ -346,7 +341,6 @@ between the two."
|
||||||
(directory . emacs)
|
(directory . emacs)
|
||||||
(t . ,(cond (IS-MAC "open -R \"%s\"")
|
(t . ,(cond (IS-MAC "open -R \"%s\"")
|
||||||
(IS-LINUX "xdg-open \"%s\"")))))
|
(IS-LINUX "xdg-open \"%s\"")))))
|
||||||
|
|
||||||
;; Don't clobber recentf or current workspace with agenda files
|
;; Don't clobber recentf or current workspace with agenda files
|
||||||
(defun +org|exclude-agenda-buffers-from-workspace ()
|
(defun +org|exclude-agenda-buffers-from-workspace ()
|
||||||
(let (persp-autokill-buffer-on-remove)
|
(let (persp-autokill-buffer-on-remove)
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue