如何强制Eclipse包装那一行?

时间:2012-03-12 10:41:04

标签: 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

    }
}

4 个答案:

答案 0 :(得分:4)

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

这篇文章Eclipse Shortcut to Split Long Strings对此问题进行了更多讨论。

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

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

  1. 创建新的插件项目
  2. 选择Hello World,命令一开始
  3. 将必要的eclipse库添加到插件依赖项中。右键单击项目,转到PDE Tools,然后“Open Manifest”有一个依赖项选项卡。这是项目概述页面(如果它尚未打开)。我添加了org.eclipse.jface.text和org.eclipse.ui.workbench.texteditor。
  4. 编辑SampleHandler.java文件以处理突出显示的文本并将其替换为文档。
  5. 如果单击项目概述按钮上的“播放”按钮,将启动一个新的eclipse实例,以便您可以测试并与之交互。
  6. 编辑'plugins.xml'(也可从项目概述页面访问)
  7. 对插件感到满意后,请按照项目概述页面中的导出说明进行操作。如果选择“目录”选项,则会在其中放置一个jar。将此jar添加到您的workspace / .metadata / .plugins /目录或Eclipse查找插件的任何其他路径。
  8. 下面是一些非常基本的示例代码,它在Scala中执行自动换行,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;
    }
    

    希望这有帮助

答案 1 :(得分:3)

不,eclipse不会拆分String。如果您将光标放在字符串中的某个位置并按Enter键,则可能是您想要的。

答案 2 :(得分:0)

似乎格式化程序或清理不会解决这个问题,但是首选字符串“自动换行”可以在插入字符串时使用...只需在顶部输入类似“字符串”的关键字首选项窗口。

答案 3 :(得分:0)

您可以使用正则表达式使用“搜索/替换”( Ctrl + f )执行所需操作。应该有一些方法可以捕获字符串的前N个字符以及单独捕获组中字符串的其余部分,然后在Replace字段中的这些组之间插入"+"。我不是一个正则表达的大师,所以不幸的是我无法提供神奇的公式......

一旦你有字符串常量分割,你可以使用代码格式( Ctrl + Shift + F )来修复换行符。