2009-03-25 1 views
4

Допустим, вы пишете код, как это (используя рубиновый-режим, но я видел это происходит в других режимах тоже):использование Mq в Emacs не превращая весь мой код в комментариях

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

Если вы поставите пункт на первой линии и нажмите Mq, вы получите следующее:

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

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

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

  1. добавить пустую строку до и после комментария пункта
  2. Mq
  3. удалить пустой линии

Было бы намного приятнее, если бы Mq обрабатывал повторные комментарии параграфов без необходимости добавлять и удалять пустые строки. Emacs уже знает, какой текст является комментарием, поэтому должен быть способ сделать это.

+0

Какая версия Emacs? – ashawley

+0

Спасибо. Я добавил эту информацию к вопросу. – allyourcode

ответ

5

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

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

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

(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

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

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

(global-unset-key (kbd "M-q")) 
+0

Мне нравится M-q, но он ведет себя странно, когда я использую его для комментариев, которые не отделены от кода пустой строкой. – allyourcode

+0

Хех - для вас новый ответ. –

0

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

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

+0

Это происходит даже в режиме Ruby. – allyourcode

1

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

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

+0

Я пробовал то же самое в sh-mode и получил тот же результат :( – allyourcode

+0

Bummer. Я в Emacs 22.2. – ashawley

 Смежные вопросы

  • Нет связанных вопросов^_^