Kuruluş modu kaynak kodu bloğu “: eval no” durumu arasında nasıl geçiş yapılır?


9

:evalÜstbilgi bağımsız değişkenini kullanarak kuruluş kipinde belirli kod bloklarının değerlendirmesini genellikle sınırlar veya sınırlandırırım .

İşte bir örnek:

#+BEGIN_SRC emacs-lisp :results value scalar :eval no
(+ 1 1)
#+END_SRC

#+RESULTS:
: 2

Kod bloklarını elle :eval nove :eval n(veya :eval notamamen sil ) arasında değiştiririm .

#+PROPERTY: eval no uygundur, ancak her kod bloğu için uygun değildir.

:evalDurumu aşağıdaki gibi kullanışlı hale getirmenin daha iyi yolları var mı?

C-c C-t     (org-todo)
Rotate the TODO state of the current item among
(unmarked) -> TODO -> DONE

Yanıtlar:


7

org-in-block-pBir göz atmanızı tavsiye ederim , fonksiyona dayanan nispeten güzel bir çözüm buldum. Aşağıdaki kodu init.eldosyaya ekleyin :

(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)

Bu işlevi tanımlar org-toggle-src-eval-nove tam olarak ne istediğinizi yapmalıdır; bir kod bloğunun içindeyseniz, varlığını değiştirir :eval no. Onu bağladım C-c t, ancak istediğiniz her şeye eşlemekten çekinmeyin. Mutlu organizasyon.


1
İnanılmaz! Gerçekten harika! Bu tam olarak istediğim şey! Çözümü bu kadar çabuk almayı beklemiyordum. Bu arada sadece önemsiz bir şey fark ettim. 2 kod bloğum olduğunda, ikinci # + BEGIN_SRC bloğunun bir satırının başında I Cc t yaparsam, ilk kod bloğu değiştirilir. Belki de (geriye doğru arama "# + BEGIN_SRC") her ikisinden önce (satır sonunu taşı nil) eklemeliyim?
RUserPassingBy

1
Mükemmel nokta. Cevabımı (end-of-line)aramadan önce dahil edeceğim şekilde güncelledim , bu da noktayı #+BEGIN_SRCondan önce olup olmadığınıza (başka bir işlevsellik sınırlamadan) sonuna kadar taşır . Hala sorun yaşıyorsanız bana bildirin.
GJStein

Kodun için teşekkür ederim! Gerçekten harika !!
RUserPassingBy

Çok teşekkürler. Uzun zamandır böyle bir işlevsellik arıyordu :)
Thomas Dehaeze
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.