Tag: emacs

如何模块化处理Ja​​va文件的两个Lisp函数的通用function?

我使用一个Lisp函数来编译当前的Java文件,另一个用于运行它。 这两个函数使用相同的function来获取包名称和编译/运行的相应目录(此function作为另一个问题的答案发布)。 我想模块化这些函数的常用function,即从(let*到但不包括(cd 。我怎么能这样做?) 作为奖励,我想撤消目录的更改( cd :ing),因为这些function是为了避免意外行为,例如从parten目录中查找文件( Cx Cf )。 有人建议这可以通过unwind-protect来实现 。 (add-hook ‘java-mode-hook (lambda () (defun java-compile-current-file () “Compiles the current file with javac” (interactive) (let* ((package (save-excursion (goto-char (point-min)) (when (re-search-forward “^\\s *package\\s +\\(.*\\);” (point-max) t) (match-string 1)))) (directory (file-name-directory (buffer-file-name))) sub-dirs) (if directory (setq directory (file-truename directory)) (error “Current buffer is not […]

如何让Lisp函数在知道包时调用java?

在Emacs中使用Lisp函数来运行当前文件对应的Java程序。 (defun java-run-current-file () “Runs the java program the current file correspond to” (interactive) (shell-command (concat “java ” (file-name-sans-extension (file-name-nondirectory (buffer-file-name)))))) 它的工作原理是剥离其路径和扩展名的当前文件名,并将其用作java的参数,该文件位于文件所在的路径上。 这种方法的问题是如果当前文件是包的一部分那么 java的参数必须以包名和点为前缀,并且 必须从包含该包的目录运行java 。 因此,例如,如果文件是file.java且包名称是pkg, java pkg.file包含目录pkg(放置file.java的目录的父目录)的目录中将java调用为java pkg.file 。 如何修改函数以了解包并相应地构造java的参数? 我想有人可以通过在当前文件中搜索包声明来解决这个问题,例如 package pkg; 如果它找到一个,它使用该包名称来适当地调用java 。

如何配置jdee`find-class-source-file`以使用Cassandra源代码树?

我正在尝试为即将开始的Java项目设置Emacs + JDEE,但是我无法让JDEE正常工作。 第一个认为我想解决的问题是能够跳转到给定类名的源文件。 我正在使用Cassandra源作为我与JDEE合作的游乐场。 我用Emacs 23.3.1设置了一个新的Ubuntu 12.04 VM作为我的测试环境。 我在默认的Ubuntu存储库中使用openjdk-1.6 ,JDEE似乎正在使用它。 我下载了jdee tar球并将其解压缩到~/.emacs.d 。 Cassandra源代码树结帐到~/cassandra 。 我的~/.emacs.d/init.el包含以下内容: (setq jde-sourcepath ‘(“~/cassandra/src/java”)) (add-to-list ‘load-path “~/.emacs.d/jdee-2.4.1/lisp”) (load “jde”) 当我打开~/cassandra/src/java/org/apache/cassandra/db/ColumnFamily.java我希望能够跳转到类org.apache.cassandra.config.CFMetaData 。 当我在该类名上运行jde-open-class-at-point时,我收到以下错误: Cannot determine the class of “CFMetaData”. 同样,如果我跑 (jde-find-class-source “org.apache.cassandra.config.CFMetaData”) 我收到此错误: jde-read-class: No match for CFMetaData 我需要做些什么才能让JDEE找到源文件?

跳转到emacs中的java方法

我想通过方法跳过我的java文件,例如,当我到处都是,单个键盘快捷键跳转到方法的下一端或方法的开头。 Emacs使用CMa和CMe“通过默认运动”对C来说非常有用,并且完全符合我的要求。 但显然在Java中,defun是一个完整的类。 通过defuns移动: http ://www.gnu.org/software/emacs/manual/html_node/emacs/Moving-by-Defuns.html 我发现我可以强迫CMf和CMb做我想做的事。 他们在任何括号平衡的表达式上前后移动。 问题是,当他们从方法定义的开头或右边括号外调用时,他们只有我正在寻找的function,这是非常有限的。 平衡括号的表达式: http : //www.delorie.com/gnu/docs/emacs/emacs_282.html 任何想法都会受到欢迎!

Java编码样式和Emacs cc模式配置

我在GNU / Linux Debian机器上使用GNU / Emacs HEAD和附带的cc-mode(c-version 5.32.2)。 我正在尝试定义自定义样式来管理Java编程语言的代码约定 , Android的贡献者代码样式指南和一些自定义规则。 作为一个lisp初学者,从头开始似乎并不明智。 因此,我使用google-c-style作为起点,我设法获得最缩进规则的预期行为,嵌套条件有例外(请参阅下面的代码片段)。 从那篇 文章中 ,我已经在我的自定义样式中定义了(arglist-cont-nonempty . ++) (完整代码: custom-java-style.el )。 不幸的是,虽然大多数情况按预期缩进: if ((condition1 && condition2) || (condition3 && condition4) ||!(condition5 && condition6)) { doSomethingAboutIt(); someMethod(longExpression1, longExpression2, longExpression3, longExpression4, longExpression5); } 嵌套条件错误地缩进: if (!(deviceRegistred.getAddress().equalsIgnoreCase(deviceAdress) && deviceRegistred.getName().equalsIgnoreCase(deviceName))) { doSomethingAboutIt(); } Ctrl-c Ctrl + s报告Syntactic analysis: ((arglist-cont-nonempty […]

如何在emacs中为Java类实现’generate getter / setter’?

有时我会想念使用IDE的懒惰,让我只需编写Java类的属性,然后让IDE生成所需的getter / setter。 Emacs可以这样做吗? 目前我只是复制粘贴前一行的一对getter / setter,然后复制粘贴并修改它。 这很简单,但是,编码有点有趣:)

如何在emacs语义中包含标准的jdk库?

我正在使用Emacs 23.2。 这是我加载语义的方式: (setq semantic-default-submodes ‘(global-semantic-idle-scheduler-mode global-semanticdb-minor-mode global-semantic-idle-summary-mode global-semantic-mru-bookmark-mode)) (semantic-mode 1) 因此,如果我创建一个简单的java文件并访问它,我将获得本地定义的方法和类的代码完成。 但我无法弄清楚如何使语义识别jdk库。 例如,如果我在String变量上尝试使用semantic-ia-complete-symbol ,我就会Cannot find types for ‘String blah’ 。 有谁知道如何将jdk库加载到semanticdb中,因此可以使用像String这样的标准对象类型的代码完成?

如何在java模式下配置emacs,以便它不会自动对齐方法参数

在emacs中,当我输入: public void foo(String one, String two) { 它如下所示: public void foo(String one, String two) { 我宁愿它没有,只是像其他线延续一样对齐参数。 如何配置它不要这样做?

在Emacs中进行Java开发的最佳方法是什么?

哪种模式最好? 以及使emacs中的java开发更好的任何提示或技巧。