refactor(docs): use org-with-wide-buffer
It uses save-excursion internally and is a little safer (in case of narrowing).
This commit is contained in:
parent
839970c2de
commit
bfa90e82e9
1 changed files with 78 additions and 75 deletions
|
@ -5,7 +5,7 @@
|
||||||
|
|
||||||
(defun doom--docs-hide-meta-h ()
|
(defun doom--docs-hide-meta-h ()
|
||||||
"Hide all meta or comment lines."
|
"Hide all meta or comment lines."
|
||||||
(save-excursion
|
(org-with-wide-buffer
|
||||||
(goto-char (point-min))
|
(goto-char (point-min))
|
||||||
(let (case-fold-search)
|
(let (case-fold-search)
|
||||||
(while (re-search-forward "^[ \t]*\\#" nil t)
|
(while (re-search-forward "^[ \t]*\\#" nil t)
|
||||||
|
@ -26,7 +26,7 @@
|
||||||
|
|
||||||
(defun doom--docs-hide-drawers-h ()
|
(defun doom--docs-hide-drawers-h ()
|
||||||
"Hide all property drawers."
|
"Hide all property drawers."
|
||||||
(save-excursion
|
(org-with-wide-buffer
|
||||||
(goto-char (point-min))
|
(goto-char (point-min))
|
||||||
(while (re-search-forward org-drawer-regexp nil t)
|
(while (re-search-forward org-drawer-regexp nil t)
|
||||||
(let ((beg (1- (match-beginning 0)))
|
(let ((beg (1- (match-beginning 0)))
|
||||||
|
@ -37,6 +37,7 @@
|
||||||
|
|
||||||
(defun doom--docs-hide-tags-h ()
|
(defun doom--docs-hide-tags-h ()
|
||||||
"Hide tags in org headings."
|
"Hide tags in org headings."
|
||||||
|
(org-with-wide-buffer
|
||||||
(goto-char (point-min))
|
(goto-char (point-min))
|
||||||
(while (re-search-forward org-heading-regexp nil t)
|
(while (re-search-forward org-heading-regexp nil t)
|
||||||
(when-let (tags (org-get-tags nil t))
|
(when-let (tags (org-get-tags nil t))
|
||||||
|
@ -58,13 +59,13 @@
|
||||||
(re-search-forward " +:[^ ]" (line-end-position))
|
(re-search-forward " +:[^ ]" (line-end-position))
|
||||||
(match-beginning 0))
|
(match-beginning 0))
|
||||||
(line-end-position)
|
(line-end-position)
|
||||||
doom-docs-mode t)))))
|
doom-docs-mode t))))))
|
||||||
|
|
||||||
(defvar doom--docs-babel-cache nil)
|
(defvar doom--docs-babel-cache nil)
|
||||||
(defun doom--docs-hide-src-blocks-h ()
|
(defun doom--docs-hide-src-blocks-h ()
|
||||||
"Hide babel blocks (and/or their results) depending on their :exports arg."
|
"Hide babel blocks (and/or their results) depending on their :exports arg."
|
||||||
|
(org-with-wide-buffer
|
||||||
(let ((inhibit-read-only t))
|
(let ((inhibit-read-only t))
|
||||||
(save-excursion
|
|
||||||
(goto-char (point-min))
|
(goto-char (point-min))
|
||||||
(make-local-variable 'doom--docs-babel-cache)
|
(make-local-variable 'doom--docs-babel-cache)
|
||||||
(while (re-search-forward org-babel-src-block-regexp nil t)
|
(while (re-search-forward org-babel-src-block-regexp nil t)
|
||||||
|
@ -105,12 +106,13 @@
|
||||||
(goto-char pos)
|
(goto-char pos)
|
||||||
(org-babel-remove-result)
|
(org-babel-remove-result)
|
||||||
(org-element-cache-refresh pos))
|
(org-element-cache-refresh pos))
|
||||||
|
(kill-local-variable 'doom--docs-babel-cache)
|
||||||
(restore-buffer-modified-p nil))))))
|
(restore-buffer-modified-p nil))))))
|
||||||
|
|
||||||
(defvar doom--docs-macro-cache nil)
|
(defvar doom--docs-macro-cache nil)
|
||||||
(defun doom--docs-expand-macros-h ()
|
(defun doom--docs-expand-macros-h ()
|
||||||
"Expand {{{macros}}} with their value."
|
"Expand {{{macros}}} with their value."
|
||||||
(save-excursion
|
(org-with-wide-buffer
|
||||||
(goto-char (point-min))
|
(goto-char (point-min))
|
||||||
(make-local-variable 'doom--docs-macro-cache)
|
(make-local-variable 'doom--docs-macro-cache)
|
||||||
(while (re-search-forward "{{{[^}]+}}}" nil t)
|
(while (re-search-forward "{{{[^}]+}}}" nil t)
|
||||||
|
@ -138,7 +140,7 @@
|
||||||
("<help>" . ,(if evilp "SPC h" "C-h")))))
|
("<help>" . ,(if evilp "SPC h" "C-h")))))
|
||||||
(defun doom--docs-expand-kbd-h ()
|
(defun doom--docs-expand-kbd-h ()
|
||||||
"Replace special keywords in [[kbd:][...]] links."
|
"Replace special keywords in [[kbd:][...]] links."
|
||||||
(save-excursion
|
(org-with-wide-buffer
|
||||||
(let ((inhibit-read-only t))
|
(let ((inhibit-read-only t))
|
||||||
(goto-char (point-min))
|
(goto-char (point-min))
|
||||||
(while (re-search-forward "\\[\\[kbd:.*\\]\\[\\(.*<[^>]+>.*\\)\\]\\]" nil t)
|
(while (re-search-forward "\\[\\[kbd:.*\\]\\[\\(.*<[^>]+>.*\\)\\]\\]" nil t)
|
||||||
|
@ -156,7 +158,7 @@
|
||||||
|
|
||||||
(defun doom--docs-realign-tables-h ()
|
(defun doom--docs-realign-tables-h ()
|
||||||
"Realign tables, as they may have changed."
|
"Realign tables, as they may have changed."
|
||||||
(save-excursion
|
(org-with-wide-buffer
|
||||||
(goto-char (point-min))
|
(goto-char (point-min))
|
||||||
(while (re-search-forward org-table-line-regexp nil t)
|
(while (re-search-forward org-table-line-regexp nil t)
|
||||||
(let ((inhibit-read-only t))
|
(let ((inhibit-read-only t))
|
||||||
|
@ -324,11 +326,12 @@ Keeps track of its own IDs in `doom-docs-dir' and toggles `doom-docs-mode' when
|
||||||
"Activate `read-only-mode' if the current file exists and is non-empty."
|
"Activate `read-only-mode' if the current file exists and is non-empty."
|
||||||
;; The rationale: if it's empty or non-existant, you want to write an org
|
;; The rationale: if it's empty or non-existant, you want to write an org
|
||||||
;; file, not read it.
|
;; file, not read it.
|
||||||
(when (and buffer-file-name
|
(let ((file-name (buffer-file-name (buffer-base-buffer))))
|
||||||
|
(when (and file-name
|
||||||
(> (buffer-size) 0)
|
(> (buffer-size) 0)
|
||||||
(not (string-prefix-p "." (file-name-base buffer-file-name)))
|
(not (string-prefix-p "." (file-name-base file-name)))
|
||||||
(file-exists-p buffer-file-name))
|
(file-exists-p file-name))
|
||||||
(read-only-mode +1)))
|
(read-only-mode +1))))
|
||||||
|
|
||||||
;;;###autoload (add-hook 'doom-docs-org-mode-hook #'doom-docs-read-only-h)
|
;;;###autoload (add-hook 'doom-docs-org-mode-hook #'doom-docs-read-only-h)
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue