Chế độ thụt lề khối trích dẫn (tô sáng)


8

Có thể cấu hình thụt lề của khối trích dẫn chế độ Org? Tôi muốn làm nổi bật các khối trích dẫn với lề thụt lề, cả trái và phải nếu có thể:

nhập mô tả hình ảnh ở đây

Ví dụ trên thể hiện các thuộc tính org-quote khuôn mặt (ví dụ : :height :foreground, v.v.) được sửa đổi trong chủ đề của tôi. Tuy nhiên, lề trái và phải được hiển thị trong khối trích dẫn được làm giả bằng khoảng trắng. Có lẽ thụt đầu dòng được đặt bởi wrap-prefix, đó là một thuộc tính văn bản đặc biệt ? Nếu đây là hướng đi đúng, làm thế nào tôi có thể thiết lập một tùy chỉnh wrap-prefixcho các khối trích dẫn org?

Câu trả lời:


1

Nó có thể được thực hiện khá dễ dàng trong quá trình khóa phông chữ bằng cách thêm một chức năng tùy chỉnh vào org-font-lock-hook. Điều này hoạt động tốt trừ khi bạn sử dụng org-indent-mode, tính toán lại và ghi đè line-prefixwrap-prefixsau khi thay đổi bộ đệm.

(add-hook 'org-font-lock-hook #'aj/org-indent-quotes)

(defun aj/org-indent-quotes (limit)
  (let ((case-fold-search t))
    (while (search-forward-regexp "^[ \t]*#\\+begin_quote" limit t)
      (let ((beg (1+ (match-end 0))))
        ;; on purpose, we look further than LIMIT
        (when (search-forward-regexp "^[ \t]*#\\+end_quote" nil t)
          (let ((end (1- (match-beginning 0)))
                (indent (propertize "    " 'face 'org-hide)))
            (add-text-properties beg end (list 'line-prefix indent
                                               'wrap-prefix indent))))))))

Tôi không nghĩ rằng có một cách dễ dàng để làm cho nó được bọc sớm hơn ở cuối dòng, tức là thụt lề phải (không có thuộc wrap-suffixtính Điên).


0

Tôi nghĩ rằng tính năng bạn muốn chưa tồn tại. Hơn nữa tôi nghĩ rằng câu trả lời của Anders Johansson là tuyệt vời.

Đây là một ansatz hơi khác và chỉ bắt đầu sử dụng phần tử org api:

(defun mw-org-left-margin-for-quote-blocks ()
"Insert a tab as left margin for every org quote block."
(interactive)
(let ((data (org-element-parse-buffer)))
    (org-element-map data 'quote-block
      (lambda (ele)
        (put-text-property
         (save-excursion
           (goto-char (org-element-property :begin ele))
           (beginning-of-line 2)
           (point))
         (save-excursion
           (goto-char (org-element-property :end ele))
           (end-of-line -1)
           (point))
         'line-prefix "\t")))))
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.