fix(eval): warnings after eval error

This addresses the warning emitted when evaluating elisp in org-mode:

  Warning (org-element): ‘org-element-at-point’ cannot be used in
  non-Org buffer #<buffer debug.org> (emacs-lisp-mode)

Close: #7753
Fix: #7752
Co-authored-by: pysnow530 <pysnow530@users.noreply.github.com>
This commit is contained in:
Henrik Lissner 2024-04-08 19:05:19 -04:00 committed by Yann Esposito (Yogsototh)
parent a629fb9e98
commit 377dffba38
Signed by untrusted user who does not match committer: yogsototh
GPG key ID: 7B19A4C650D59646
2 changed files with 34 additions and 27 deletions

View file

@ -23,8 +23,7 @@
(cond ((and (string-prefix-p "jupyter-" lang)
(require 'jupyter nil t))
(jupyter-eval-region beg end))
((let ((major-mode (org-src-get-lang-mode lang)))
(+eval/region beg end))))))))
((+eval-region-as-major-mode beg end (org-src-get-lang-mode lang))))))))
;;;###autoload

View file

@ -72,6 +72,38 @@
output source-buffer)
output)
;;;###autoload
(defun +eval-region-as-major-mode (beg end &optional runner-major-mode)
"Evaluate a region between BEG and END and display the output.
Evaluate as in RUNNER-MAJOR-MODE. If RUNNER-MAJOR-MODE is nil, use major-mode
of the buffer instead."
(let ((load-file-name buffer-file-name)
(load-true-file-name
(or buffer-file-truename
(if buffer-file-name
(file-truename buffer-file-name))))
(runner-major-mode (or runner-major-mode major-mode)))
(cond ((if (fboundp '+eval--ensure-in-repl-buffer)
(ignore-errors
(get-buffer-window (or (+eval--ensure-in-repl-buffer)
t))))
(funcall (or (plist-get (cdr (alist-get runner-major-mode +eval-repls)) :send-region)
#'+eval/send-region-to-repl)
beg end))
((let (lang)
(if-let ((runner
(or (alist-get runner-major-mode +eval-runners)
(and (require 'quickrun nil t)
(equal (setq
lang (quickrun--command-key
(buffer-file-name (buffer-base-buffer))))
"emacs")
(alist-get 'emacs-lisp-mode +eval-runners)))))
(funcall runner beg end)
(let ((quickrun-option-cmdkey lang))
(quickrun-region beg end))))))))
;;
;;; Commands
@ -103,31 +135,7 @@
(defun +eval/region (beg end)
"Evaluate a region between BEG and END and display the output."
(interactive "r")
(let ((load-file-name buffer-file-name)
(load-true-file-name
(or buffer-file-truename
(if buffer-file-name
(file-truename buffer-file-name)))))
(cond ((and (fboundp '+eval--ensure-in-repl-buffer)
(ignore-errors
(get-buffer-window (or (+eval--ensure-in-repl-buffer)
t))))
(funcall (or (plist-get (cdr (alist-get major-mode +eval-repls)) :send-region)
#'+eval/send-region-to-repl)
beg end))
((let ((runner
(or (alist-get major-mode +eval-runners)
(and (require 'quickrun nil t)
(equal (setq
lang (quickrun--command-key
(buffer-file-name (buffer-base-buffer))))
"emacs")
(alist-get 'emacs-lisp-mode +eval-runners))))
lang)
(if runner
(funcall runner beg end)
(let ((quickrun-option-cmdkey lang))
(quickrun-region beg end))))))))
(+eval-region-as-major-mode beg end))
;;;###autoload
(defun +eval/line-or-region ()