Skip to content

Instantly share code, notes, and snippets.

@DogLooksGood
Created February 12, 2021 14:51
Show Gist options
  • Save DogLooksGood/2949b3376c0bf3676501a965c71c470c to your computer and use it in GitHub Desktop.
Save DogLooksGood/2949b3376c0bf3676501a965c71c470c to your computer and use it in GitHub Desktop.
org-latex-auto-toggle.el
(require 'dash)
(defvar-local +org-last-in-latex nil)
(defun +org-post-command-hook ()
(ignore-errors
(let ((in-latex (and (derived-mode-p 'org-mode)
(or (org-inside-LaTeX-fragment-p)
(org-inside-latex-macro-p)))))
(if (and +org-last-in-latex (not in-latex))
(progn (org-latex-preview)
(setq +org-last-in-latex nil)))
(when-let ((ovs (overlays-at (point))))
(when (->> ovs
(--map (overlay-get it 'org-overlay-type))
(--filter (equal it 'org-latex-overlay)))
(org-latex-preview)
(setq +org-last-in-latex t)))
(when in-latex
(setq +org-last-in-latex t)))))
(define-minor-mode org-latex-auto-toggle
"Auto toggle latex overlay when cursor enter/leave."
nil
nil
nil
(if org-latex-auto-toggle
(add-hook 'post-command-hook '+org-post-command-hook nil t)
(remove-hook 'post-command-hook '+org-post-command-hook t)))
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment