2017-07-28 5 views
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: enter image description here

Können wir diesen Dialog deaktivieren?

Antwort

2

hinzufügen unterhalb der Linie init.el:

(setq org-confirm-elisp-link-function nil) 
+0

... 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

+0

Vielleicht ist es besser, sie nur zur Org-Datei hinzuzufügen, aber nicht in init.el. – lucky1928

+0

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