Less wonky toggle latex fragment

Using the raw `org-toggle-latex-fragment` function creates some havoc
with the overlays, resulting in nonfunctional notebooks.  Add some
custom logic to improve behaviour.
This commit is contained in:
dickmao 2019-01-01 21:16:34 -05:00
parent 624e9549ef
commit 1a32c5f832
2 changed files with 17 additions and 6 deletions

1
Cask
View file

@ -19,5 +19,6 @@
(depends-on "auto-complete")
(depends-on "company")
(depends-on "smartrep")
(depends-on "px")
(depends-on "f")
(depends-on "s"))

View file

@ -39,6 +39,7 @@
(require 'ewoc)
(require 'mumamo nil t)
(require 'company nil t)
(require 'px nil t)
(require 'ein-core)
(require 'ein-classes)
@ -211,9 +212,10 @@ Current buffer for these functions is set to the notebook buffer.")
(ein:deflocal ein:%notebook% nil
"Buffer local variable to store an instance of `ein:$notebook'.")
(ein:deflocal ein:%notebook-latex-p% nil
"Is latex preview toggled")
(define-obsolete-variable-alias 'ein:notebook 'ein:%notebook% "0.1.2")
;;; Constructor
@ -511,10 +513,18 @@ notebook buffer."
'ein:notebook-show-in-shared-output
'ein:shared-output-show-code-cell-at-point "0.1.2")
(autoload 'org-toggle-latex-fragment "org")
(defalias 'ein:notebook-toggle-latex-fragment 'org-toggle-latex-fragment
"Borrow from org-mode the rendering of latex overlays")
(defsubst ein:notebook-toggle-latex-fragment ()
(interactive)
(if (featurep 'px)
(cl-letf (((symbol-function 'delete-all-overlays) #'ignore)
((symbol-function 'org-remove-latex-fragment-image-overlays) #'ignore))
(if ein:%notebook-latex-p%
(progn
(ein:worksheet-render (ein:worksheet--get-ws-or-error))
(setq ein:%notebook-latex-p% nil))
(px-preview)
(setq ein:%notebook-latex-p% t)))
(ein:display-warning "px package not found")))
;;; Kernel related things