Изменить определение абзаца (например, в режиме org) - PullRequest
5 голосов
/ 29 марта 2012

Я бы хотел использовать mark-paragraph (также для перемещения с абзацем вперед / назад) в буферах режима org так же, как и в других основных режимах, то есть, чтобы отметить непрерывную область, ограниченную пустыми строками. Это должно относиться также к заголовкам, элементам списка, строкам, начинающимся с «#» и т. Д., Т. Е. Для целей редактирования абзаца мне бы хотелось, чтобы все воспринималось как обычный текст.

Возможно ли это?

Ответы [ 2 ]

5 голосов
/ 29 марта 2012

См. Переменные paragraph-start и paragraph-separate, а также, возможно, также функцию use-hard-newlines, которая связана (но, вероятно, не имеет отношения к делу в данном случае).

(defun use-default-paragraph-delimiters ()
  (setq paragraph-start (default-value 'paragraph-start)
        paragraph-separate (default-value 'paragraph-separate)))

(add-hook 'org-mode-hook 'use-default-paragraph-delimiters)

Редактировать: По общему признанию, режим org может зависеть от определений своих абзацев не только от интерактивной маркировки и перемещения, поэтому здесь более целенаправленный подход к настройке определений абзацев для этих команд только при интерактивном вызове с использованием их привязок клавиш.

(defmacro with-default-paragraph-definition (&rest body)
  "Evaluate body forms using the default definition of a paragraph."
  `(let ((paragraph-start (default-value 'paragraph-start))
         (paragraph-separate (default-value 'paragraph-separate)))
     ,@body))

(defalias 'my-org-mark-paragraph 'mark-paragraph)
(defadvice my-org-mark-paragraph 
  (around my-org-mark-paragraph-advice activate)
  (with-default-paragraph-definition ad-do-it))

(defalias 'my-org-forward-paragraph 'forward-paragraph)
(defadvice my-org-forward-paragraph
  (around my-org-forward-paragraph-advice activate)
  (with-default-paragraph-definition ad-do-it))

(defalias 'my-org-backward-paragraph 'backward-paragraph)
(defadvice my-org-backward-paragraph
  (around my-org-backward-paragraph-advice activate)
  (with-default-paragraph-definition ad-do-it))

(defun my-org-paragraph-overrides ()
  "Use the default paragraph definitions in org-mode
        when marking or moving by paragraph."
  (local-set-key [remap mark-paragraph] 'my-org-mark-paragraph)
  (local-set-key [remap forward-paragraph] 'my-org-forward-paragraph)
  (local-set-key [remap backward-paragraph] 'my-org-backward-paragraph))

(add-hook 'org-mode-hook 'my-org-paragraph-overrides)
1 голос
/ 29 марта 2012

Вы можете попробовать настроить переменную paragraph-start. Я не уверен что здесь уместно, org устанавливает что-то очень сложное как вы видите в приведенной ниже строке документации. Установка по умолчанию может сработать, или вы можете попробовать use-hard-newlines, как указано в цитате ниже.

абзац-начало - это переменная, определенная в `paras.el '.

Его значение "\ f \ | [] $ \ | \ + \ | [] # \ | \ ([] \ ([- +] \ | \ (\ ([0- 9] + \) [.)] \) \) \ | [] + \ * \) \ ([] + \ | $ \) \ | [] * [: |] \ | \ $ \ $ \ | \ \\ (начало \ | конец \ | [] [] \) "

Исходное значение было "\ f \ | [] * $"

Локально в буфере coding.org; глобальное значение равно "\ f \ | [] * $"

Эта переменная безопасна как локальная переменная файла, если ее значение удовлетворяет предикату `stringp '.

Документация: Регулярное выражение для начала строки, которая начинается ИЛИ разделяет абзацы. Это регулярное выражение должно соответствовать строкам, которые разделяют абзацы а также должны соответствовать строки, которые начинаются с абзаца (и являются частью этого параграфа).

Это сопоставляется с текстом на левом поле, что не обязательно начало строки, поэтому он никогда не должен использовать «^» в качестве якоря. это гарантирует, что функции абзаца будут одинаково хорошо работать в пределах региона текста с отступом в настройках поля.

Переменная `абзац-отдельный 'указывает, как различать строки, начинающие абзацы со строк, разделяющих их.

Если переменная `use-hard-newlines 'не равна нулю, то только строки, следующие за Жесткий перевод строки считается совпадающим.

...