Я придумав відносно приємне рішення, яке покладається на org-in-block-p
функцію, яку я рекомендую поглянути. Додайте у init.el
файл такий код :
(defun org-toggle-src-eval-no ()
"Will toggle ':eval no' on the src block begin line"
(defun in-src-block-p ()
"Returns t when the point is inside a source code block"
(string= "src" (org-in-block-p '("src"))))
(defun beginning-src ()
"Find the beginning of the src block"
(let ((case-fold-search t)) (search-backward "#+BEGIN_SRC")))
(defun toggle-eval-no ()
"Handles the toggling of ' :eval no'"
(save-excursion
(end-of-line)
(let ((case-fold-search t)) (search-backward "#+BEGIN_SRC")
(if (search-forward " :eval no" (line-end-position) "f")
(replace-match "")
(insert " :eval no")
))))
(if (in-src-block-p) (toggle-eval-no)))
(defun add-org-toggle-src-key ()
(local-set-key (kbd "C-c t") (lambda () (interactive) (org-toggle-src-eval-no))))
(add-hook 'org-mode-hook 'add-org-toggle-src-key)
Це визначає функцію, org-toggle-src-eval-no
і вона повинна робити саме те, що ви хочете; у будь-який час ви знаходитесь у блоці коду, він перемикає присутність :eval no
. Я зв'язав це C-c t
, але не соромтеся нанести його на все, що завгодно. Щасливі орг.