1
I unten Code haben Funktion "myfun" zu nennen elisp, wenn der Benutzer auf den Link klicken:Org-Mode - deaktivieren elisp Code ausführen Bestätigungsdialog
#+BEGIN_SRC elisp :results output raw
(defun myfun(filepath lineno)
(if (not (get-buffer bufname))
(get-buffer-create bufname)
)
(switch-to-buffer-other-window bufname)
(global-linum-mode)
(erase-buffer)
(insert-file-contents (format "%s" filepath))
(goto-char (point-min))
(forward-line lineno)
(setq start (point))
(forward-line -1)
(setq end (point))
(let ((x (make-overlay start end)))
(overlay-put x 'face '(:background "#fef0f1")))
)
(defun createSampleFile(file-name count)
(let ((c 0))
(with-temp-buffer
(while (< c (* 2 count))
(setq c (1+ c))
(insert (format "line %d\n" c))
(write-file filename)
))))
(let ((c 0)(filename nil))
(while (< c 4)
(setq c (1+ c))
(setq filename (format "./test%d.txt" c))
(createSampleFile filename c)
(princ (format "[[elisp:(myfun '%s' %d)][%s]]\n" filename c filename))
))
#+END_SRC
#+RESULTS:
[[elisp:(myfun './test1.txt' 1)][./test1.txt]]
[[elisp:(myfun './test2.txt' 2)][./test2.txt]]
[[elisp:(myfun './test3.txt' 3)][./test3.txt]]
[[elisp:(myfun './test4.txt' 4)][./test4.txt]]
Aber wenn auf den Link klicken, ich habe unten prompt Warnmeldung immer:
Können wir diesen Dialog deaktivieren?
... aber die Warnung in der doc der Variablen beachten. Die Ausführung von beliebigem Code (in elisp oder in einer anderen Sprache) ist riskant. – Nick
Vielleicht ist es besser, sie nur zur Org-Datei hinzuzufügen, aber nicht in init.el. – lucky1928
Ja - zumindest kannst du dir den Code ansehen und sicherstellen, dass er keine versteckten Bomben enthält, bevor du ihn wie oben markiert hast. Dies kann mit einer [Dateivariablen] (https://www.gnu.org/software/emacs/manual/html_node/emacs/File-Variables.html#File-Variables) erfolgen. Und du gibst keiner Datei die Erlaubnis, irgendeinen Code auszuführen. – Nick