mirror of
https://github.com/SqrtMinusOne/dotfiles.git
synced 2025-12-10 19:23:03 +03:00
feat(emacs): source blocks navigation
This commit is contained in:
parent
586d0c9cd5
commit
9010944b8b
2 changed files with 81 additions and 0 deletions
|
|
@ -2489,6 +2489,45 @@ Returns (<buffer> . <workspace-index>) or nil."
|
|||
|
||||
(general-nmap :keymaps 'org-mode-map
|
||||
"C-x C-l" 'my/org-link-copy)
|
||||
(defun my/org-babel-next-visible-src-block (arg)
|
||||
"Move to the next visible source block.
|
||||
|
||||
With ARG, repeats or can move backward if negative."
|
||||
(interactive "p")
|
||||
(let ((regexp org-babel-src-block-regexp))
|
||||
(if (< arg 0)
|
||||
(beginning-of-line)
|
||||
(end-of-line))
|
||||
(while (and (< arg 0) (re-search-backward regexp nil :move))
|
||||
(unless (bobp)
|
||||
(while (pcase (get-char-property-and-overlay (point) 'invisible)
|
||||
(`(outline . ,o)
|
||||
(goto-char (overlay-start o))
|
||||
(re-search-backward regexp nil :move))
|
||||
(_ nil))))
|
||||
(cl-incf arg))
|
||||
(while (and (> arg 0) (re-search-forward regexp nil t))
|
||||
(while (pcase (get-char-property-and-overlay (point) 'invisible)
|
||||
(`(outline . ,o)
|
||||
(goto-char (overlay-end o))
|
||||
(re-search-forward regexp nil :move))
|
||||
(_ (end-of-line) nil)))
|
||||
(re-search-backward regexp nil :move)
|
||||
(cl-decf arg))
|
||||
(if (> arg 0) (goto-char (point-max)) (beginning-of-line))))
|
||||
|
||||
(defun my/org-babel-previous-visible-src-block (arg)
|
||||
"Move to the prevous visible source block.
|
||||
|
||||
With ARG, repeats or can move backward if negative."
|
||||
(interactive "p")
|
||||
(my/org-babel-next-visible-src-block (- arg)))
|
||||
|
||||
(general-define-key
|
||||
:keymaps 'org-mode-map
|
||||
:states '(normal emacs)
|
||||
"M-]" #'my/org-babel-next-visible-src-block
|
||||
"M-[" #'my/org-babel-previous-visible-src-block)
|
||||
(setq org-roam-directory (concat org-directory "/roam"))
|
||||
(setq org-agenda-files '("inbox.org"
|
||||
"projects/comp-stuff.org"
|
||||
|
|
|
|||
42
Emacs.org
42
Emacs.org
|
|
@ -4944,6 +4944,48 @@ Add a custom LaTeX template without default packages. Packages are indented to b
|
|||
(general-nmap :keymaps 'org-mode-map
|
||||
"C-x C-l" 'my/org-link-copy)
|
||||
#+end_src
|
||||
*** Navigating source blocks
|
||||
#+begin_src emacs-lisp :tangle no :noweb-ref org-keys-setup
|
||||
(defun my/org-babel-next-visible-src-block (arg)
|
||||
"Move to the next visible source block.
|
||||
|
||||
With ARG, repeats or can move backward if negative."
|
||||
(interactive "p")
|
||||
(let ((regexp org-babel-src-block-regexp))
|
||||
(if (< arg 0)
|
||||
(beginning-of-line)
|
||||
(end-of-line))
|
||||
(while (and (< arg 0) (re-search-backward regexp nil :move))
|
||||
(unless (bobp)
|
||||
(while (pcase (get-char-property-and-overlay (point) 'invisible)
|
||||
(`(outline . ,o)
|
||||
(goto-char (overlay-start o))
|
||||
(re-search-backward regexp nil :move))
|
||||
(_ nil))))
|
||||
(cl-incf arg))
|
||||
(while (and (> arg 0) (re-search-forward regexp nil t))
|
||||
(while (pcase (get-char-property-and-overlay (point) 'invisible)
|
||||
(`(outline . ,o)
|
||||
(goto-char (overlay-end o))
|
||||
(re-search-forward regexp nil :move))
|
||||
(_ (end-of-line) nil)))
|
||||
(re-search-backward regexp nil :move)
|
||||
(cl-decf arg))
|
||||
(if (> arg 0) (goto-char (point-max)) (beginning-of-line))))
|
||||
|
||||
(defun my/org-babel-previous-visible-src-block (arg)
|
||||
"Move to the prevous visible source block.
|
||||
|
||||
With ARG, repeats or can move backward if negative."
|
||||
(interactive "p")
|
||||
(my/org-babel-next-visible-src-block (- arg)))
|
||||
|
||||
(general-define-key
|
||||
:keymaps 'org-mode-map
|
||||
:states '(normal emacs)
|
||||
"M-]" #'my/org-babel-next-visible-src-block
|
||||
"M-[" #'my/org-babel-previous-visible-src-block)
|
||||
#+end_src
|
||||
*** Open a file from =org-directory=
|
||||
A function to open a file from =org-directory=, excluding a few directories like =roam= and =journal=.
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue