1

谁能指导我学习为 Jedit 编写插件的教程?我有一个使用 Jedit 作为 SAS 编辑器的梦想。目前,它会进行语法高亮,但我觉得通过更好地充实这些想法,它已经或可以变得更好。

几个问题:

  1. 你可以在 Jedit 中启用制表符补全吗?
  2. 你能指定以某种语法开始和结束的“环境”吗?(例如,“保持”这个词在两​​行之间有意义data xxx;run;但在proc sort data=xxx;和之间没有意义。run;因此,突出显示它对没有经验的编码人员会产生反指导作用。
  3. 您能否将变量存储在工作场所并从下拉菜单中引用它们(例如数据集中的变量名称)
  4. 您可以从 shell/终端执行代码并将 .log 文件返回到 Jedit 消息窗口吗?
4

1 回答 1

1
  1. 您是在谈论微软的智能感知或自动完成功能吗?如果是这样,一个穷人对自动完成的近似是在输入部分单词后使用键盘快捷键ctrl+ 。b它将根据所有打开的缓冲区中的所有单词完成单词。 有关自动完成的更多信息,请参阅此问题。

  2. 在语法高亮中,您可以为不同的代码块创建委托语法,以便根据不同的规则突出显示。grep 在您的 jeditmode目录中查找“委托”。

  3. 不完全确定您想要什么,但 jedit 确实会跟踪您从文本中获取的一堆最新副本。Emacs 将其称为“kill ring”。对于我的jedit设置,我必须Paste Previous...绑定到ctrl++ 。我相信这是默认的快捷方式绑定。这将显示您最近的约 20 个文本块副本,您可以选择要使用的副本文本块。e ctrlv

  4. 是的,您可以在 shell 中执行任务并将它们传送回 jedit。 看到这个问题。 以下是我如何执行bk edit并重新加载缓冲区。它不会从 shell 获得输出,但会执行 shell 命令:

    import javax.swing.JOptionPane;
    import java.io.File;
    File f = new File(buffer.getPath());
    String SCCS_path = f.getParent()+"/SCCS";
    String bk_path =  "/usr/local/bin/bk";
    if ( !new File(SCCS_path).exists()) {
        bk_path = "/usr/bin/bk";
    }
    Runtime.getRuntime().exec(
        bk_path+ " edit "+
        buffer.getPath());
    Thread.currentThread().sleep(2000);
    buffer.reload(view);
    

顺便说一句,宏在 jedit 中非常强大。Macros您可以使用->记录您在 jedit 中所做的事情,Record Macro...它将生成等效的脚本。

于 2013-01-22T20:12:12.773 回答