Fix narrow-or-widen-dwim by improved error handling
This commit is contained in:
parent
2a122fcdf6
commit
6b22c96e64
28
README.org
28
README.org
@ -3685,46 +3685,50 @@ focussing out on the whole buffer. This allows to concentrate temporarily on
|
||||
for instance a particular function or paragraph by removing clutter. The "Do
|
||||
What I Mean" [[https://endlessparentheses.com/emacs-narrow-or-widen-dwim.html][narrow-or-widen-dwim]] function allows to toggle between narrowed and
|
||||
widened buffer states. Here, the function =narrow-or-widen-dwim= operates also
|
||||
on tables by means of =org-narrow-to-table=.
|
||||
on any Org table, Org source block, Org block, or Org subtree.
|
||||
|
||||
#+caption[Configure =narrow-or-widen-dwim=]:
|
||||
#+caption: Configure =narrow-or-widen-dwim=.
|
||||
#+name: lst:configure-narrow-or-widen-dwim
|
||||
#+begin_src emacs-lisp
|
||||
(with-eval-after-load 'emacs
|
||||
(autoload 'org-at-table "org-table")
|
||||
(autoload 'org-at-table-p "org-table")
|
||||
|
||||
(defun org-narrow-to-table ()
|
||||
"Narrow buffer to current table."
|
||||
"Narrow buffer to table at point."
|
||||
(interactive)
|
||||
(if (org-at-table-p)
|
||||
(narrow-to-region (org-table-begin) (org-table-end))
|
||||
(user-error "Not in a table")))
|
||||
|
||||
(defun narrow-or-widen-dwim (p)
|
||||
"Widen if buffer is narrowed, narrow-dwim otherwise.
|
||||
Dwim means: region, org-src-block, org-table, org-subtree, LaTeX
|
||||
environment, TeX group, or defun, whichever applies first.
|
||||
Narrowing to org-src-block actually calls `org-edit-src-code'.
|
||||
"Widen if buffer is narrowed, narrow \"Do What I Mean\" otherwise.
|
||||
DWIM means: region, Org table, Org source block, Org block, Org
|
||||
subtree, LaTeX environment, TeX group, or defun, whichever
|
||||
applies first. Narrowing to org-src-block actually calls
|
||||
`org-edit-src-code'.
|
||||
|
||||
With prefix P, don't widen, just narrow even if buffer is already
|
||||
narrowed."
|
||||
(interactive "P")
|
||||
(declare (interactive-only))
|
||||
(cond ((and (buffer-narrowed-p) (not p)) (widen))
|
||||
(cond ((and (buffer-narrowed-p) (not p))
|
||||
(widen))
|
||||
((and (bound-and-true-p org-src-mode) (not p))
|
||||
(org-edit-src-exit))
|
||||
((region-active-p)
|
||||
(narrow-to-region (region-beginning) (region-end)))
|
||||
((derived-mode-p 'org-mode)
|
||||
(or (ignore-errors (org-edit-src-code))
|
||||
(ignore-errors (org-narrow-to-block))
|
||||
(ignore-errors (org-narrow-to-table))
|
||||
(or (with-demoted-errors "DWIM: %S" (org-narrow-to-table) t)
|
||||
(with-demoted-errors "DWIM: %S" (org-edit-src-code) t)
|
||||
(with-demoted-errors "DWIM: %S" (org-narrow-to-block) t)
|
||||
(org-narrow-to-subtree)))
|
||||
((derived-mode-p 'latex-mode)
|
||||
(LaTeX-narrow-to-environment))
|
||||
((derived-mode-p 'tex-mode)
|
||||
(TeX-narrow-to-group))
|
||||
(t (narrow-to-defun))))
|
||||
(t
|
||||
(narrow-to-defun))))
|
||||
|
||||
(define-key ctl-x-map (kbd "n t") #'org-narrow-to-table)
|
||||
(define-key ctl-x-map (kbd "C-n") #'narrow-or-widen-dwim))
|
||||
|
Loading…
Reference in New Issue
Block a user