Форматирование комментариев XCode 4 (перенос строки) - PullRequest
12 голосов
/ 08 сентября 2011

По моему мнению, в идеале многострочные комментарии должны выглядеть примерно так:

/* this is a mult-line comment, which wraps lines at some reasonable length,
 * usually approximately 80 characters. this way, comments are easy to read
 * and, with any half way capable text editor, easy to edit without having
 * to manually reshuffle lines, line breaks, and the comment leader. */

// this is a mult-line comment, which wraps lines at some reasonable length,
// usually approximately 80 characters. this way, comments are easy to read
// and, with any half way capable text editor, easy to edit without having
// to manually reshuffle lines, line breaks, and the comment leader.

/* this is a mult-line comment, which wraps lines at some reasonable length,
   usually approximately 80 characters. this way, comments are easy to read
   and, with any half way capable text editor, easy to edit without having
   to manually reshuffle lines, line breaks, and the comment leader. */

Однако XCode не поддерживает управление комментариями в этом стиле. Вы должны вручную нажать клавишу возврата в нужное время, чтобы обернуть комментарии на приличную ширину, и затем их редактирование станет полной PITA.

Или вы просто никогда не нажимаете клавишу возврата и позволяете редактору обернуть ее на краю экрана редактора. Но если вы похожи на меня, ваш редактор намного шире, чем идеальная длина строки переноса слов.

Более того, XCode насмехается над мной, предлагая функцию рендеринга руководства по переносу в 80 символов в редакторе, однако это чисто визуальная функция без механики для ее резервного копирования. Это похоже на передачу садовой лопатки тому, кто привык использовать экскаватор.

Нужна ли здесь проверка реальности - я не так думаю - или XCode крайне не хватает базового форматирования комментариев в стиле абзацев?

Что делают опытные, ответственные, профессиональные разработчики Objective-C, делая существенные комментарии в своем коде? Помоги мне увидеть свет здесь.

Примечание: для XCode 3 я написал скрипт, свернутый вручную, который переформатировал текст и связал его с горячей клавишей. Я еще не понял, как это сделать в XCode 4. Но то, как писать сценарий для XCode 4, немного ортогонально этой проблеме: плохо пахнуть необходимостью дополнения IDE такими основами, мой вопрос - о стиле и культурных ожиданиях разработчиков XCode.

Спасибо за ваш совет.

Ответы [ 4 ]

14 голосов
/ 24 июля 2012

Я согласен, он должен быть встроен в Xcode.Но в любом случае, вот как быстро добавить его в Xcode4, создав элемент службы, который вызывает скрипт и назначив ему сочетание клавиш:

  1. Открыть Automator.Создайте службу.
  2. Установите службу, чтобы выходные данные заменяли выделенный текст и получали выбранный текст в выбранной копии Xcode.
  3. Перетащите в действие «Выполнить сценарий оболочки»как единственное действие в вашем сервисе.
  4. Замените сценарий оболочки по умолчанию "cat" на "fmt -n -s -p -w80".Это вызывает утилиту fmt для переформатирования вашего текста, позволяя строкам начинаться с точки, сворачивая пробелы внутри строк, допуская отступы абзацев, перенос строк в 80-символьные столбцы.Проверьте справочную страницу для fmt для других вариантов.Очевидно, что вы можете сойти с ума здесь, пропустив текст через emacs или уценку или что-то еще.
  5. Сохраните сервис с разумным именем, например «Reformat-to-80»

Теперь,если у вас выделен текст в Xcode, вы сможете переформатировать его до 80 символов, выбрав службу через строку меню: Xcode / Services / Reformat-to-80.

Теперь давайте назначим сочетание клавиш дляit:

  1. Откройте Панель настроек клавиатуры , перейдите на вкладку Сочетания клавиш .
  2. Выберите Сочетания клавиш на левой панели.
  3. На правой панели с помощью кнопки добавления (+) добавьте новый ярлык для копии Xcode, которую вы выбрали ранее.Введите точное имя, которое вы использовали для службы, и добавьте сочетание клавиш по вашему выбору.

Теперь в Xcode вы можете использовать это сочетание клавиш, чтобы заменить выбранный текст выводом оболочкискрипт, который будет переформатировать текст в

2 голосов
/ 05 марта 2013

Очевидно, что вы можете сойти с ума здесь, пропустив текст через emacs

После многих лет ожидания продвинутых идиосинкразий Emacs при переформатировании комментариев, я это сделал.Предполагая, что вы можете преодолеть грубость обращения Xcode к Emacs для сценариев, сохраните следующий сценарий как fill-region (или что-то подобное) и сделайте его исполняемым.

#!/usr/bin/env emacs --script
(with-temp-buffer
  ;; Would like to implement --help but Emacs eats that before I can
  ;; process it here.
  (let ((param (nth 0 command-line-args-left)))
    (if param (funcall (intern param))))

  (condition-case nil
      (while t
        (insert (read-from-minibuffer ""))
        (insert "\n"))
    (error nil))
  (fill-region (point-min) (point-max))
  (princ (buffer-string)))

Затем создайте службу Automator, которая выполняетэтот скрипт с соответствующим аргументом языка (например, fill-region c++-mode для C / C ++ / Objective-C) и заменяет выделенный текст.

Даже если вы не используете Emacs, это замена для вставкииспользование fmt выше, что значительно лучше при форматировании комментариев.

1 голос
/ 10 января 2015

Добавление к ответа пользователя797758 : Чтобы настроить столбец, в котором его сценарий emacs переносит ваш текст, добавьте вызов set-fill-column перед вызовом fill-region.Например, приведенный ниже скрипт будет заключен в 100 символов.

#!/usr/bin/env emacs --script
(with-temp-buffer
  (let ((param (nth 0 command-line-args-left)))
    (if param (funcall (intern param))))

  (condition-case nil
      (while t
        (insert (read-from-minibuffer ""))
        (insert "\n"))
    (error nil))
  (set-fill-column 100)
  (fill-region (point-min) (point-max))
  (princ (buffer-string)))
0 голосов
/ 01 ноября 2011

Ну, для меня никогда не было большого значения, как все отформатировано (лично, и у меня никогда не было большого количества прокомментированного текста), но вот кое-что, я думаю, вы найдете очень полезным.Чтобы закомментировать блок кода, вы можете быстро закомментировать блок кода следующим образом:

Select one or more lines of code to comment
    Command-/
...