【问题标题】:XCode 4 comment formatting (line wrapping)XCode 4 注释格式(换行)
【发布时间】:2011-09-08 19:00:10
【问题描述】:

我认为多行 cmets 理想情况下应该是这样的:

/* 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 不支持以这种方式管理 cmets。您必须在正确的时间手动按回车键以适当的宽度包裹 cmets,然后编辑它们成为完整的 PITA。

或者,您永远不会按回车键并让编辑器将其包装在编辑器屏幕的边缘。但如果你像我一样,你的编辑器比理想的自动换行行长度要宽得多。

此外,XCode 通过提供一个在编辑器中以 80 个字符呈现包装指南的功能来嘲讽我,但这纯粹是一个视觉功能,没有任何机制来支持它。这感觉就像把一把花园铲子交给习惯使用反铲的人。

我是否需要在这里进行实际检查 - 我的想法是否错误 - 还是 XCode 极度缺乏基本的段落式注释格式?

经验丰富、负责任、专业的 Objective-C 开发人员在他们的代码中制作大量 cmets 时会做什么?帮我看看这里的光。

注意:对于 XCode 3,我编写了一个手卷脚本,它重新格式化文本并将其绑定到一个热键。我还没有弄清楚如何在 XCode 4 中做到这一点。但是如何编写 XCode 4 脚本与这个问题有点正交:必须用这些基础知识来扩充 IDE 听起来很糟糕,我的问题是关于 XCode 开发人员的风格和文化期望。

感谢您的建议。

【问题讨论】:

    标签: xcode4 formatting comments


    【解决方案1】:

    我同意它应该内置在 Xcode 中。但无论如何,这里是如何通过创建一个调用脚本的服务项并为其分配键盘快捷键来快速将其添加到 Xcode4:

    1. 打开自动机。创建服务。
    2. 设置服务以让输出替换所选文本,并在您选择的 Xcode 副本中接收所选文本。
    3. 将“运行 Shell 脚本”操作拖入您的服务中作为唯一操作。
    4. 用“fmt -n -s -p -w80”替换默认的shell脚本“cat”。这会调用fmt 实用程序来重新格式化您的文本,允许行以句点开头,折叠行内的空格,允许缩进段落,在 80 个字符列处换行。查看fmt 的手册页以获取其他选项。显然,您可以在这里通过 emacs 或 markdown 或其他方式传递文本来发疯。
    5. 使用合理的名称保存服务,例如“Reformat-to-80”

    现在,当您在 Xcode 中选择文本后,您可以通过菜单栏选择服务将其重新格式化为 80 个字符:Xcode / Services / Reformat-to-80。

    现在让我们为其分配一个键盘快捷键:

    1. 打开键盘首选项窗格,转到键盘快捷键选项卡。
    2. 在左侧窗格中选择应用程序快捷方式
    3. 在右侧窗格中,使用添加按钮(+)为您之前选择的 Xcode 副本添加新的快捷方式。输入您用于服务的确切名称并添加您选择的键盘快捷键。

    现在,在 Xcode 中,您可以使用该键盘快捷键将所选文本替换为 shell 脚本的输出,这会将文本重新格式化为

    【讨论】:

    • 天哪,谢谢。我以为这个问题会永远无人回答。
    • 很高兴有帮助。现在我们只需要一些命令行 Jedis 来堆砌,以便重新格式化脚本可以智能地处理像 appledoc 这样的文档语法。
    • @user577888 它适用于appledoc段落,我认为这将是主要用例。
    • 另外,-s 会折叠行内的空格,但也会在句子后强制使用双空格。
    • 在最新的 macOS (Monteray) 中,它不再被称为“服务”。您应该创建的 Automator 文档类型称为“快速操作”
    【解决方案2】:

    显然,您可以在这里通过 emacs 管道传输文本来发疯

    在回流 cmets 时期待 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 的替代品,它在注释格式方面要好得多。

    【讨论】:

    • 谢谢,不错的脚本。不过,它似乎包含大约 70 个字符而不是 80 个字符。有没有办法修改这种行为?我一点也不熟悉 Emacs 脚本。
    • 我相信您需要将其设置为 emacs 首选项,这是另一个 S.O.关于如何做到这一点的文章:stackoverflow.com/questions/3566727/…
    【解决方案3】:

    添加到user797758's answer:要自定义他的 emacs 脚本包装您的文本的列,请在填充区域调用之前添加一个 set-fill-column 调用。例如,下面的脚本将在 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)))
    

    【讨论】:

      【解决方案4】:

      嗯,对我来说,如何格式化对我来说从来都不是什么大事,(就我个人而言,我从来没有评论过大量的文本),但我认为这里有一些东西对你很有用。 注释掉一段代码,可以快速注释掉一段代码,如下:

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

      【讨论】:

      • “我从来没有评论过大量的文本”——我认为这是这里的操作问题。 XCode 开发人员都必须接受过编写杂乱无章的 cmets 的培训,因为编辑器无法处理长的 cmets! :) 感谢您的提示,它在某些情况下很有帮助。不过,仍在寻找 XCode 中勤奋/丰富的评论风格的解决方案!
      猜你喜欢
      • 2020-02-26
      • 2018-10-09
      • 2010-12-03
      • 1970-01-01
      • 2019-07-15
      • 2017-01-23
      • 2010-10-07
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多