используйте M-q в Emacs, не превращая весь мой код в комментарии - PullRequest
4 голосов
/ 26 марта 2009

Скажем, вы пишете такой код (используя режим ruby, но я видел, что это происходит и в других режимах):

# This is a comment.
def foo
    puts "foo!"
end

Если вы поместите точку в первую строку и нажмете M-q, вы получите это:

# This is a comment. def foo puts "foo!" end

Как мне этого избежать? Я использую версию 21.3.

Уточнение: этого не происходит, когда я добавляю пустую строку между комментарием и кодом. В качестве обходного пути, когда я хочу пополнить свои комментарии, я прошёл раздражающий трехэтапный процесс:

  1. Я добавляю пустую строку до и после абзац комментария
  2. M-д
  3. удалить пустые строки

Было бы намного лучше, если бы M-q обрабатывал повторные абзацы комментариев без необходимости добавлять и удалять пустые строки. Emacs уже знает, что такое текст комментария, поэтому должен быть способ сделать это.

Ответы [ 4 ]

5 голосов
/ 26 марта 2009

filladapt.el делает свое дело. Это с последней версией RubyMode .

Использование этих двух пакетов решает проблему M-q, которую вы видите. (Использование GNU Emacs 22.1)

Глядя на код для режима ruby, похоже, что он настроил переменные для управления заполнением абзаца следующим образом:

(make-local-variable 'paragraph-start)
(setq paragraph-start (concat "$\\|" page-delimiter))
(make-local-variable 'paragraph-separate)
(setq paragraph-separate paragraph-start)
(make-local-variable 'paragraph-ignore-fill-prefix)
(setq paragraph-ignore-fill-prefix t)

Который может быть добавлен в пользовательский хук для вашего текущего рубина или в любой основной режим, в котором вы хотите, чтобы поведение заливки действовало так, как вы описали - при условии, что вы используете filladapt.el.

1 голос
/ 26 марта 2009

Заполнение комментариев работает в sh-mode.

Возможно, вам следует сообщить об ошибке сопровождающему ruby-mode?

1 голос
/ 26 марта 2009

M-q обязан заполнить абзац, то, что он пытается сделать, это интеллектуально превратить текст в абзац. В нем есть функции, которые пытаются угадать «префикс заполнения», который, по-видимому, и происходит с вами.

Вы можете отменить привязку M-q, если вам это не нравится.

(global-unset-key (kbd "M-q"))
0 голосов
/ 26 марта 2009

Вы должны быть в режиме Ruby, чтобы Emacs понял, что «# This is a comment.» - это комментарий. Если вы находитесь в базовом режиме, он просто будет воспринимать все как текстовый абзац, что заставляет думать, что текст на следующей строке является частью того же абзаца.

Вот некоторые инструкции по установке режима Ruby, если у вас его еще нет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...