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


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.