एसआरसी ब्लॉक सीमांकक को छिपाने का तरीका


13

क्या स्रोत कोड के अंदर केवल स्रोत कोड रखने का एक तरीका है, जो # + BEGIN_SRC और # + END_SRC अदृश्य है? यह कॉस्मेटिक है लेकिन यह चीजों को स्पष्ट करता है जब किसी को बहुत सारे शॉर्ट कोड स्निपेट्स से निपटना पड़ता है। उदाहरण के तौर पर:

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

के बजाय :

  #+BEGIN_SRC emacs-lisp
       (defun org-xor (a b)
          "Exclusive or."
          (if a (not b) b))
  #+END_SRC

इस अर्ध-संबंधित धागे में प्रश्न के नीचे मेरी टिप्पणी से पता चलता है कि कैसे प्रोग्राम को स्रोत ब्लॉक हेडर / फ़ुटर्स को छिपाना है। emacs.stackexchange.com/q/26163/2287 - यानी, (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)))) सब कुछ अनहाइड करने के लिए (remove-overlays)। व्यक्तिगत प्रविष्टियों के लिए और काम करने की जरूरत है, और केवल ओवरले (सभी ओवरले के बजाय) को हटा दिया जाना चाहिए, लेकिन यह सामान्य विचार है।
कानून

धन्यवाद, यह दिलचस्प है ... मैं इसके साथ खेलूंगा।
18

जवाबों:


5

से शुरू होने वाली सभी लाइनों के लिए चेहरे #+को कहा जाता है org-meta-line

आप इस चेहरे को छोटा, गहरा, इत्यादि अनुकूलित कर सकते हैं ताकि यह कम दिखाई दे।


वास्तव में। एक उदाहरण के रूप में, मैंने इसका उपयोग किया है (set-face-attribute 'org-meta-line nil :height 0.8 :slant 'normal)। मुझे लगता है कि यह काफी मदद करता है।
१३:३ 13: में हैराल्ड हैन्च-ऑलसेन

आपके उत्तर के लिए धन्यवाद, यह मदद करता है। मैंने ऊंचाई btw बदल दी है, लेकिन इसका कोई प्रभाव नहीं है ...
loukios

इस Emacs Lisp प्रलेखन को उन विकल्पों पर देखें जिन्हें आप org-meta-line gnu.org/software/emacs/manual/html_node/elisp/…
salotz

4

मैं निम्नलिखित कोड के कोड का उपयोग करता हूं जो कुछ रास्ते पर जाता है। यह सही नहीं है। शायद यह minor-modeकिसी दिन उचित हो जाएगा । ( स्रोत )।

परिणामी कोड का स्क्रीनशॉट

(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))
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.