Möglichkeit, SRC-Blocktrennzeichen auszublenden

11

Gibt es eine Möglichkeit, nur Quellcode im Quellcode zu belassen, dh # + BEGIN_SRC und # + END_SRC unsichtbar zu machen? Es ist kosmetisch, aber es macht die Dinge klarer, wenn man sich mit vielen Kurzcode-Schnipsel beschäftigen muss. Zum Beispiel:

(defun org-xor (a b)
          "Exclusive or."
          (if a (not b) b))

Anstatt von :

  #+BEGIN_SRC emacs-lisp
       (defun org-xor (a b)
          "Exclusive or."
          (if a (not b) b))
  #+END_SRC
Loukios
quelle
Mein Kommentar unter der Frage in diesem semi-verwandten Thread zeigt, wie die Kopf- / Fußzeilen des Quellblocks programmgesteuert ausgeblendet werden. emacs.stackexchange.com/q/26163/2287 - dh, (save-excursion (goto-char (point-max)) (while (re-search-backward "#\\+BEGIN_SRC\\|#\\+END_SRC" nil t) (let ((ov (make-overlay (line-beginning-position) (1+ (line-end-position))))) (overlay-put ov 'invisible t)))) um alles einzublenden, verwenden Sie (remove-overlays). Weitere Arbeiten müssen für einzelne Einträge durchgeführt werden und nur ausgewählte Überlagerungen (anstelle aller Überlagerungen) entfernt werden. Dies ist jedoch die allgemeine Idee.
Lawlist
Danke, das ist interessant ... ich werde damit herumspielen.
Loukios

Antworten:

5

Das Gesicht für alle Zeilen, die mit beginnen, #+wird aufgerufen org-meta-line.

Sie können dieses Gesicht kleiner, dunkler usw. anpassen, um es weniger sichtbar zu machen.

Juancho
quelle
Tatsächlich. Als Beispiel habe ich es mit eingerichtet (set-face-attribute 'org-meta-line nil :height 0.8 :slant 'normal). Ich finde es hilft ziemlich viel.
Harald Hanche-Olsen
Vielen Dank für Ihre Antwort, es hilft. Ich habe die Höhe übrigens geändert, aber es hat keine Auswirkung ...
Loukios
In dieser Emacs Lisp-Dokumentation finden Sie org-meta-line Informationen
salotz
4

Ich verwende den folgenden Code, der einen Teil des Weges geht. Es ist nicht perfekt. Vielleicht wird es eines minor-modeTages richtig . ( Quelle ).

Screenshot des resultierenden Codes

(with-eval-after-load 'org
  (defvar-local rasmus/org-at-src-begin -1
    "Variable that holds whether last position was a ")

  (defvar rasmus/ob-header-symbol ?☰
    "Symbol used for babel headers")

  (defun rasmus/org-prettify-src--update ()
    (let ((case-fold-search t)
          (re "^[ \t]*#\\+begin_src[ \t]+[^ \f\t\n\r\v]+[ \t]*")
          found)
      (save-excursion
        (goto-char (point-min))
        (while (re-search-forward re nil t)
          (goto-char (match-end 0))
          (let ((args (org-trim
                       (buffer-substring-no-properties (point)
                                                       (line-end-position)))))
            (when (org-string-nw-p args)
              (let ((new-cell (cons args rasmus/ob-header-symbol)))
                (cl-pushnew new-cell prettify-symbols-alist :test #'equal)
                (cl-pushnew new-cell found :test #'equal)))))
        (setq prettify-symbols-alist
              (cl-set-difference prettify-symbols-alist
                                 (cl-set-difference
                                  (cl-remove-if-not
                                   (lambda (elm)
                                     (eq (cdr elm) rasmus/ob-header-symbol))
                                   prettify-symbols-alist)
                                  found :test #'equal)))
        ;; Clean up old font-lock-keywords.
        (font-lock-remove-keywords nil prettify-symbols--keywords)
        (setq prettify-symbols--keywords (prettify-symbols--make-keywords))
        (font-lock-add-keywords nil prettify-symbols--keywords)
        (while (re-search-forward re nil t)
          (font-lock-flush (line-beginning-position) (line-end-position))))))

  (defun rasmus/org-prettify-src ()
    "Hide src options via `prettify-symbols-mode'.

  `prettify-symbols-mode' is used because it has uncollpasing. It's
  may not be efficient."
    (let* ((case-fold-search t)
           (at-src-block (save-excursion
                           (beginning-of-line)
                           (looking-at "^[ \t]*#\\+begin_src[ \t]+[^ \f\t\n\r\v]+[ \t]*"))))
      ;; Test if we moved out of a block.
      (when (or (and rasmus/org-at-src-begin
                     (not at-src-block))
                ;; File was just opened.
                (eq rasmus/org-at-src-begin -1))
        (rasmus/org-prettify-src--update))
      ;; Remove composition if at line; doesn't work properly.
      ;; (when at-src-block
      ;;   (with-silent-modifications
      ;;     (remove-text-properties (match-end 0)
      ;;                             (1+ (line-end-position))
      ;;                             '(composition))))
      (setq rasmus/org-at-src-begin at-src-block)))

  (defun rasmus/org-prettify-symbols ()
    (mapc (apply-partially 'add-to-list 'prettify-symbols-alist)
          (cl-reduce 'append
                     (mapcar (lambda (x) (list x (cons (upcase (car x)) (cdr x))))
                             `(("#+begin_src" . ?✎) ;; ➤ 🖝 ➟ ➤ ✎
                               ("#+end_src"   . ?□) ;; ⏹
                               ("#+header:" . ,rasmus/ob-header-symbol)
                               ("#+begin_quote" . ?»)
                               ("#+end_quote" . ?«)))))
    (turn-on-prettify-symbols-mode)
    (add-hook 'post-command-hook 'rasmus/org-prettify-src t t))
  (add-hook 'org-mode-hook #'rasmus/org-prettify-symbols))
Rasmus
quelle