এসআরসি ব্লক ডিলিমিটারগুলিকে আড়াল করার উপায়


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)। পৃথক এন্ট্রিগুলির জন্য আরও কাজ করা দরকার, এবং কেবলমাত্র ওভারলেগুলি নির্বাচন করুন (সমস্ত ওভারলেগুলির পরিবর্তে), তবে এটি সাধারণ ধারণা।
আইনজীবি

ধন্যবাদ, এটি আকর্ষণীয় ... আমি এটি নিয়ে খেলা করব।
loukios

উত্তর:


5

সমস্ত লাইনের সাথে শুরু হওয়া মুখটিকে #+বলা হয় org-meta-line

আপনি এই চেহারাটি আরও কম দৃশ্যমান করতে আরও ছোট, গাer় ইত্যাদি পছন্দসই করতে পারেন।


প্রকৃতপক্ষে. উদাহরণ হিসাবে, আমি এটি ব্যবহার করে সেট আপ করেছি (set-face-attribute 'org-meta-line nil :height 0.8 :slant 'normal)। আমি এটি বেশ কিছুটা সাহায্য করে দেখি।
হ্যারাল্ড হানচে-ওলসেন

আপনার উত্তরের জন্য ধন্যবাদ, এটি সাহায্য করে। আমি উচ্চতা
বিটিডব্লিউ বদলেছি তবে এর


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))
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.