Я обычно использую Geany или Hi-Tide под Debian (GNU/Linux) для микропрограммной разработки, главным образом C (но также и чтение старого ассемблера). Я документирую код с помощью однострочных комментариев, и меня действительно раздражает, когда я перепечатываю что-то и должен вручную повторно повредить каждый после строки для хранения ее в поле с 80 символами.
Существует ли текстовый редактор, который может повторно перенести последовательные однострочные комментарии (и сделать это автоматически, в то время как я ввожу)? Таким образом, данный:
/// This is a really long line that should have been wrapped at "that" but was not.
/// This sentence is in the same
/// paragraph as the last.
... Я хочу редактора, который повторно перенесет это к
/// This is a really long line that
/// should have been wrapped at "that"
/// but was not. This sentence is in
/// the same paragraph as the last.
... предпочтительно делая это разумно, в то время как я ввожу.
Я попробовал:
//should have been
... вместо /// should have been
...Обновление: только для разработки мой принятый ответ - я пошел со снимком emacs, и дополнительный filladapt режим также требовался
В Emacs, чтобы начать автоматическое обертывание, введите режим автозаполнения . Чтобы установить ширину линии, выполните C-u ⟨ columns ⟩ C-x f . Emacs, или на самом деле CC Mode, будет предвосхищать вашу структуру комментариев, так что ввод /// Это очень длинная строка, которая приведет к в результате
/// This is a really long line that /// shoul‸
И вы можете заполнить абзац в любое время с помощью M-q .
Если вы хотите выполнять пополнение автоматически при каждом нажатии клавиши, возможно, есть какая-то внутренняя команда или сторонняя библиотека, но вы можете использовать этот код elisp вне руки:
;;; Can't advise SELF-INSERT-COMMAND, so create a wrapper procedure. (defun self-insert-refill (n) (interactive "p") (self-insert-command n)) ;;; Advise SELF-INSERT-REFILL to execute FILL-PARAGRAPH after every ;;; keypress, but *only* if we're inside a comment (defadvice self-insert-refill (after refill-paragraph) (let ((face (or (get-char-property (point) 'read-face-name) (get-char-property (point) 'face))) ) (if (and (eq face 'font-lock-comment-face) (not (string= " " (this-command-keys)))) ; Spaces would get deleted on refill. (fill-paragraph)))) (ad-activate 'self-insert-refill) (add-hook 'c-mode-hook ;; Remap SELF-INSERT-COMMAND to be SELF-INSERT-REFILL. (local-set-key [remap self-insert-command] 'self-insert-refill) ))
Это, вероятно, не очень надежно или в соответствии с передовой практикой и, вероятно, не полностью удовлетворительно, поскольку он не будет работать для общего редактирования, например C-d и backspace , и это несколько замедляет работу редактора, но это только начало.
Вим, скорее всего, может сделать это.
Сначала нужно сказать Виму, что "///" - это префикс комментария (это не по умолчанию):
:set comments^=:///
Если вы хотите, чтобы обертывание происходило по вашему типу, установите желаемую ширину текста:
:set textwidth=80
Чтобы отформатировать существующие параграфы, используйте любое изменение команды gq. Например, можно: