java - 如何强制 Eclipse 换行?

标签 java eclipse coding-style formatter

<分区>

有没有办法让 Eclipse 将带有 b 的行换行到每行 120 的长度? 我无法配置代码格式化程序来换行。这真的让我发疯......

public class Position {
    public static void i() {
        error("bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb");

    }

    private static void error(String string) {
        // TODO Auto-generated method stub

    }
}

最佳答案

我测试了 user714695 的建议:通过在字符串中间按回车,加号、引号和缩进会自动正确放置。

此帖Eclipse Shortcut to Split Long Strings对这个问题有更多的讨论。

另一方面,据我所知,没有内置的方法可以做到这一点:您想要突出显示一个字符串并自动格式化它以适本地放置换行符和 +。

我最近想解决一个类似的问题,其目标是在行中的字符数 >= 78 个字符(类似于 Vim 中的 'gq' 功能)时突出显示段落并换行。由于我无法立即找到在线执行此操作的方法,因此我决定看看编写插件是多么容易。事实证明它比我想象的要容易得多,所以我想如果您对此感兴趣,我会发布一些基本说明。

  1. 创建一个新的插件项目
  2. 选择 Hello World,命令一开始
  3. 将必要的 eclipse 库添加到插件依赖项中。右键单击该项目,转到 PDE 工具,然后“打开 list ”,其中有一个依赖项选项卡。这是项目概览页面(如果它尚未为您打开)。我添加了 org.eclipse.jface.text 和 org.eclipse.ui.workbench.texteditor。
  4. 编辑 SampleHandler.java 文件以处理突出显示的文本并将其替换到文档中。
  5. 如果您单击项目概览按钮中的“播放”按钮,将启动一个新的 eclipse 实例,以便您可以对其进行测试和交互。
  6. 编辑“plugins.xml”(也可从项目概览页面访问)
  7. 一旦您对插件感到满意,请按照项目概览页面中的导出说明进行操作。如果您选择“目录”选项,将在其中放置一个 jar 。将此 jar 添加到您的 workspace/.metadata/.plugins/目录或 Eclipse 查找插件的任何其他路径。

下面是一些非常基本的示例代码,用于在 Scala 中执行自动换行,这是我用来编写 SampleHandler 的语言。关键在于“执行”功能:

def execute(event: ExecutionEvent ): Object = {
  val window = HandlerUtil.getActiveWorkbenchWindowChecked(event)
  val editorPart = window.getActivePage().getActiveEditor()
  var offset = 0
  var length = 0
  var selectedText = ""

  val iSelection = editorPart.getEditorSite().getSelectionProvider().getSelection()
  val selection = iSelection.asInstanceOf[ITextSelection]
  offset = selection.getOffset()

  if (!iSelection.isEmpty()) {
    selectedText = selection.getText()
  }

  length = selection.getLength()

  val editor = editorPart.asInstanceOf[ITextEditor]
  val dp = editor.getDocumentProvider()
  val doc = dp.getDocument(editor.getEditorInput())
  val words = selectedText.split("""\s+""")
  var wrapped = ""
  var linesize = 0

  words.foreach{ w => 

    if(linesize+w.size >= 78) { 
      wrapped += "\n" 
      linesize = 0  
    }

    wrapped += w + " "
    linesize += w.size + 1
  }

  doc.replace(offset,length,wrapped)

  return null;
}

希望对你有帮助

关于java - 如何强制 Eclipse 换行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9665560/

相关文章:

java - 在java中以矩阵形式操作彩色图像

eclipse - 在特定端口和 ssl 上的 eclipse 中运行 jsp

algorithm - 你什么时候会在不使用第三个变量的情况下交换两个数字?

python - 字典键的Javascript样式点符号unpythonic?

java - Android String Edit和Array的值定位

java - 清除 OpenGL Shader 中的属性位置

java - 如何仅在登录成功后连接到另一个JFrame

java - 是否可以动态加载包中包含的所有属性文件?即 MyClass.class.getResource ('*.properties' );

java - 未绑定(bind)的类路径变量java android eclipse

java - 计算方法复杂度的原理是什么?