diff options
-rw-r--r-- | lisp/init-tex.el | 46 |
1 files changed, 46 insertions, 0 deletions
diff --git a/lisp/init-tex.el b/lisp/init-tex.el index 10539c0..b2f4d0f 100644 --- a/lisp/init-tex.el +++ b/lisp/init-tex.el @@ -15,4 +15,50 @@ (setq reftex-default-bibliography '("~/refs/refs.bib")) +(defun km/latex-narrow-to-single-tag (&optional tag) + "Narrow region to LaTeX tag. +This is meant for single elements, like \"\\section\". If TAG is +not given, it is taken from the active region." + (interactive) + (save-excursion + (let* ((tag (or tag + (buffer-substring-no-properties (mark) (point)))) + (tag (if (s-starts-with? "\\" tag) + tag + (concat "\\" tag))) + (beg (progn (end-of-line) + (search-backward tag))) + (end (progn (forward-line 1) + (unless (search-forward tag nil t) + (search-forward "\\end{document}")) + (forward-line -1) + (point)))) + (narrow-to-region beg end)))) + +(defun km/latex-narrow-to-paired-tag (&optional tag) + "Narrow region to LaTeX tag. +This is meant for paired, like \"\\begin{document}\". If TAG is +not given, it is taken from the active region." + (interactive) + (save-excursion + (let* ((tag (or tag + (buffer-substring-no-properties (mark) (point)))) + (beg (progn (end-of-line) + (search-backward (format "\\begin{%s}" tag)))) + (end (progn (forward-line 1) + (search-forward (format "\\end{%s}" tag))))) + (narrow-to-region beg end)))) + +(defun km/latex-narrow-to-document () + "Narrow region to LaTeX document text. +The point should be beyond \"\\begin{document}\"." + (interactive) + (km/latex-narrow-to-paired-tag "document")) + +(defun km/latex-narrow-to-section () + "Narrow region to current LaTeX section. +The point should be beyond \"\\section\"." + (interactive) + (km/latex-narrow-to-single-tag "section")) + (provide 'init-tex) |