組織モードの引用ブロックのインデント(強調表示)


8

Orgモードの引用ブロックのインデントを構成できますか?可能な場合は左右にインデントされたマージンのある引用ブロックを強調表示したいと思います。

ここに画像の説明を入力してください

上記の例は、テーマで変更されたorg-quote 顔のプロパティ(例::height :foregroundなど)を示しています。ただし、引用ブロックに表示される左マージンと右マージンはスペースを使用して偽造されています。おそらく、インデントは特別なテキストプロパティwrap-prefixであるによって設定されます。これが正しい方向である場合、どのようにwrap-prefixして組織引用ブロックのみのカスタムを設定できますか?

回答:


1

にカスタム関数を追加することで、フォントロック中に非常に簡単に行うことができますorg-font-lock-hook。これは、あなたが使用しない限りうまく機能しorg-indent-mode、再計算してオーバーライドたline-prefixwrap-prefixバッファが変更された後。

(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))))))))

行末で早く折り返す簡単な方法、つまり右インデント(「wrap-suffix」プロパティがない)はないと思います。


0

必要な機能はまだ存在しないと思います。さらに、アンダース・ヨハンソンの答えは素晴らしいと思います。

これは少し異なる仮説であり、組織要素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")))))
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.