使用Eclipse JDT Language Server的Emacs Java IDE。
LSP Java模式支持以下JDT功能:
complete-at-point
这里是EmacsConf2019的演示 https://www.youtube.com/watch?v=Bbjxn9yVNJ8
这里有一个涵盖设置和使用的教程 https://xpressrazor.wordpress.com/2020/11/04/java-programming-in-emacs/
lsp-java已包含在spacemacs中(目前仅在dev分支)。如果你使用的是spacemacs的开发版本,只需在dotspacemacs-configuration-layers
中添加(java :variables java-backend 'lsp)
。
推荐通过package.el
安装LSP Java,这是Emacs内置的包管理器。LSP Java可在两个主要的package.el
社区维护的仓库中找到 - MELPA Stable和MELPA。
<kbd>M-x</kbd> package-install
<kbd>[RET]</kbd> lsp-java
<kbd>[RET]</kbd>
然后在你的.emacs
文件中添加以下行,并打开指定项目中的任意文件。
(require 'lsp-java) (add-hook 'java-mode-hook #'lsp)
lsp-java会自动检测服务器是否缺失,并在首次启动前下载Eclipse JDT Language Server。服务器安装将在lsp-java-server-install-dir
中进行。它会检测是否存在dap-mode,并下载所需的服务器端插件/组件。如果你想更新服务器,可以运行lsp-java-update-server
。要运行特定版本的Eclipse JDT Language Server,请使用lsp-java-server-install-dir
。
使用company-capf、lsp-ui和dap-mode的最小配置。如果你有现有的Java项目,请设置lsp-java-workspace-dir
。现在你可以探索lsp-java-*
、dap-java-*
、dap-*
和lsp-*
下的方法。
(condition-case nil (require 'use-package) (file-error (require 'package) (add-to-list 'package-archives '("melpa" . "http://melpa.org/packages/")) (package-initialize) (package-refresh-contents) (package-install 'use-package) (setq use-package-always-ensure t) (require 'use-package))) (use-package projectile) (use-package flycheck) (use-package yasnippet :config (yas-global-mode)) (use-package lsp-mode :hook ((lsp-mode . lsp-enable-which-key-integration))) (use-package hydra) (use-package company) (use-package lsp-ui) (use-package which-key :config (which-key-mode)) (use-package lsp-java :config (add-hook 'java-mode-hook 'lsp)) (use-package dap-mode :after lsp-mode :config (dap-auto-configure-mode)) (use-package dap-java :ensure nil) (use-package helm-lsp) (use-package helm :config (helm-mode)) (use-package lsp-treemacs)
lsp-execute-code-action
- 执行代码操作。lsp-rename
- 重命名光标处的符号lsp-describe-thing-at-point
- 显示光标处事物的帮助。lsp-goto-type-definition
- 跳转到类型定义lsp-goto-implementation
- 跳转到实现lsp-restart-workspace
- 重启项目lsp-format-buffer
- 格式化当前缓冲区lsp-symbol-highlight
- 高亮光标下符号的所有相关引用。lsp-workspace-folders-add
- 添加工作区文件夹lsp-workspace-folders-remove
- 移除工作区文件夹lsp-workspace-folders-switch
- 切换工作区文件夹lsp-java-organize-imports
- 组织导入lsp-java-build-project
- 执行项目的部分或完整构建lsp-java-update-project-configuration
- 更新项目配置lsp-java-actionable-notifications
- 解决可操作的通知lsp-java-update-user-settings
- 更新用户设置(查看下表中的选项。)lsp-java-update-server
- 更新服务器安装。lsp-java-generate-to-string
- 生成toString
方法。lsp-java-generate-equals-and-hash-code
- 生成equals
和hashCode
方法。lsp-java-generate-overrides
- 生成方法重写
lsp-java-generate-getters-and-setters
- 生成getter和setter。lsp-java-type-hierarchy
- 打开类型层次结构。使用前缀参数指定层次结构类型。LSP Java通过Eclipse JDT Language Server代码操作提供丰富的重构集,其中一些绑定到Emacs命令:
lsp-java-extract-to-constant
- 提取常量重构lsp-java-add-unimplemented-methods
- 添加未实现方法重构lsp-java-create-parameter
- 创建参数重构lsp-java-create-field
- 创建字段重构lsp-java-create-local
- 创建局部变量重构lsp-java-extract-method
- 提取方法重构lsp-java-add-import
- 添加缺失的导入lsp-jt-browser
- 浏览测试并运行/调试它们。
** 使用 x
运行光标下的测试;d
调试光标下的测试。R
刷新。
** 支持GUI操作。lsp-jt-report-open
- 打开测试报告lsp-jt-lens-mode
- 测试镜头模式(需要启用 lsp-lens-mode
)lsp-java-dependency-list
- 查看Java依赖LSP Java与STS4集成,提供以下功能。
除了与Eclipse JDT Language Server集成外,lsp-java还提供了与STS4的集成,涵盖Spring Boot的application.properties
、application.yml
和.java
文件。
确保已配置JAVA_HOME
。当您调用lsp-java-update-server
时,lsp-java
将自动下载STS4。要启用STS4集成,请在配置中添加以下行:
(require 'lsp-java-boot) ;; 启用镜头 (add-hook 'lsp-mode-hook #'lsp-lens-mode) (add-hook 'java-mode-hook #'lsp-java-boot-lens-mode)
.java
文件功能轻松导航到源代码中的Spring特定元素。
lsp-workspace-symbol
- (使用helm-lsp效果更佳)
@/
显示所有定义的请求映射(映射路径、请求方法、源位置)@+
显示所有定义的bean(bean名称、bean类型、源位置)@>
显示所有函数(原型实现)@
显示代码中所有Spring注解轻松导航到运行中应用的提供的请求映射。
lsp-workspace-symbol
- (使用helm-lsp效果更佳)
//
显示所有运行中Spring Boot应用的请求映射,并为选定的端点打开浏览器STS4自动检测本地机器上运行的Boot应用的JVM进程。
对于某些类型的信息,STS 4还可能在代码镜头中显示"快速摘要"。
如果您的机器上运行多个应用实例,所有这些实例的实时数据都将显示在悬停信息中。
(add-hook 'java-mode-hook #'lsp-java-boot-lens-mode)
@Profile
:显示运行中应用的活动配置信息@Component
、@Bean
、@Autowired
:显示来自实时应用的bean及其装配的详细信息@ContidionalOn...
:显示运行时条件及其评估信息使用模板编写Spring代码,通过常规代码补全可用。
@GetMapping
@PostMapping
@PutMapping
Spring特定注解的附加代码 补全
.properties
和.yml
文件功能此扩展分析项目的类路径,解析并索引找到的任何Spring Boot属性元数据。支持Maven和Gradle项目。
索引中的数据用于在编辑.properties
或.yml
格式的Spring Boot属性时提供验证、代码补全和信息悬停。
lsp-java
为 Spring Initializr 提供了一个前端界面,通过 lsp-java-spring-initializr
可以直接在 Emacs 中简化创建 Spring Boot 项目的过程。
lsp-java-server-install-dir
- eclipse.jdt.ls-server 的安装目录。末尾需要有斜杠。lsp-java-jdt-download-url
- JDT JS 下载链接。如果想使用 Eclipse Che JDT LS,请使用 http://download.eclipse.org/che/che-ls-jdt/snapshots/che-jdt-language-server-latest.tar.gz。lsp-java-java-path
- Java 可执行文件的路径。lsp-java-progress-string
- 语言服务器报告的 Java 进度状态。lsp-java-workspace-dir
- LSP Java 工作空间目录。lsp-java-workspace-cache-dir
- LSP Java 工作空间缓存目录。lsp-java-themes-directory
- 包含主题的目录。lsp-java-theme
- 要使用的主题。lsp-java-pop-buffer-function
- 用于显示帮助窗口的函数。lsp-java-vmargs
- 指定用于启动 Java 语言服务器的额外 VM 参数。例如,使用 -noverify -Xmx1G -XX:+UseG1GC -XX:+UseStringDeduplication
可以绕过类验证,将堆大小增加到 1GB,并启用 G1 垃圾收集器的字符串重复数据删除功能。lsp-java-9-args
- 指定 Java 9 及更高版本特定的参数。lsp-java-errors-incomplete-classpath-severity
- 指定 Java 文件的类路径不完整时消息的严重程度。lsp-java-configuration-check-project-settings-exclusions
- 检查是否应从文件浏览器中排除扩展生成的项目设置文件(.project、.classpath、.factorypath、.settings/)。lsp-java-configuration-update-build-configuration
- 指定对构建文件的修改如何更新 Java 类路径/配置。lsp-java-trace-server
- 跟踪 VS Code 和 Java 语言服务器之间的通信。lsp-java-import-gradle-enabled
- 启用/禁用 Gradle 导入器。lsp-java-import-maven-enabled
- 启用/禁用 Maven 导入器。lsp-java-maven-download-sources
- 启用/禁用 Maven 源代码构件的急切下载。lsp-java-references-code-lens-enabled
- 启用/禁用引用代码镜头。lsp-java-signature-help-enabled
- 启用/禁用签名帮助。lsp-java-implementations-code-lens-enabled
- 启用/禁用实现代码镜头。lsp-java-configuration-maven-user-settings
- Maven 的 settings.xml 路径。lsp-java-format-enabled
- 启用/禁用默认 Java 格式化程序。lsp-java-save-actions-organize-imports
- 启用/禁用保存时自动整理导入。lsp-java-import-exclusions
- 配置用于排除文件夹的 glob 模式。lsp-java-content-provider-preferred
- 首选内容提供者(通常是第三方反编译器 ID)。我们支持 https://github.com/dgileadi/vscode-java-decompiler。要启用它,请添加:
(setq lsp-java-content-provider-preferred "fernflower")
lsp-java-autobuild-enabled
- 启用/禁用"自动构建"。lsp-java-max-concurrent-builds
- 最大同时进行的项目构建数。lsp-java-completion-enabled
- 启用/禁用代码完成支持。lsp-java-completion-overwrite
- 设置为 true 时,代码完成会覆盖当前文本。设置为 false 时,代码会简单地添加。lsp-java-completion-guess-method-arguments
- 设置为 true 时,从代码辅助提案列表中选择方法时会猜测方法参数。lsp-java-completion-favorite-static-members
- 定义静态成员或带有静态成员的类型列表。即使缺少导入,内容辅助也会提出这些静态成员。lsp-java-completion-import-order
- 定义导入语句的排序顺序。包或类型名称前缀(如 'org.eclipse')是有效的条目。导入总是添加到最具体的组中。lsp-java-folding-range-enabled
- 启用/禁用智能折叠范围支持。如果禁用,将使用 VS Code 提供的默认基于缩进的折叠范围。indentation-based
- [实验性] 启用/禁用服务器上后台进程的进度报告。lsp-java-progress-reports-enabled
- [实验性] 启用/禁用服务器上后台进程的进度报告。lsp-java-format-settings-url
- 指定 Eclipse 格式化程序 xml 设置 的 url 或文件路径。lsp-java-format-settings-profile
- Eclipse 格式化程序设置中的可选格式化程序配置文件名称。lsp-java-format-comments-enabled
- 在代码格式化期间包含注释。lsp-java-format-on-type-enabled
- 启用/禁用在输入 ;
、<enter>
或 }
时自动格式化代码块。lsp-java-bundles
- 将在 JDT 服务器中加载的包列表。lsp-java-code-generation-hash-code-equals-use-java7objects
- 生成 hashCode 和 equals 方法时使用 Objects.hash 和 Objects.equals。此设置仅适用于 Java 7 及更高版本。lsp-java-code-generation-hash-code-equals-use-instanceof
- 生成 hashCode 和 equals 方法时使用 'instanceof' 比较类型。lsp-java-code-generation-use-blocks
- 生成方法时在 'if' 语句中使用代码块。lsp-java-code-generation-generate-comments
- 生成方法时生成方法注释。lsp-java-code-generation-to-string-template
- 生成 toString 方法的模板。lsp-java-code-generation-to-string-code-style
- 生成 toString 方法的代码风格。lsp-java-code-generation-to-string-skip-null-values
- 生成 toString 方法时跳过空值。lsp-java-code-generation-to-string-list-array-contents
- 列出数组内容而不是使用原生 toString()。lsp-java-code-generation-to-string-limit-elements
- 限制要列出的数组/集合/映射中的项目数量,如果为 0 则列出所有项目。lsp-java-inhibit-message
- 如果非 nil,通过 inhibit-message
抑制 java 消息回显。lsp-mode
GUI 控件。(setq lsp-inhibit-message t)
(setq lsp-ui-sideline-update-mode 'point)
当特定文件不是导入项目的一部分时,Eclipse JDT Language Server 无法计算当前类路径。
查看 ~/.emacs.d/workspace/.metadata/.plugins/org.eclipse.jdt.launching/libraryInfos.xml
。如果您更新了本地 Java 路径并希望 LSP 使用新版本,请尝试删除 ~/.emacs.d/workspace/
目录并重新启动 LSP。另请参阅 #114。
如果您安装了多个 Java JDK 版本并想更改 LSP 使用的 Java 版本,还需要设置 lsp-java-configuration-runtimes
。以下是设置 lsp-java-configuration-runtimes
的示例:
(setq lsp-java-configuration-runtimes '[(:name "JavaSE-1.8" :path "/home/kyoncho/jdk1.8.0_201.jdk/") (:name "JavaSE-11" :path "/home/kyoncho/jdk-11.0.1.jdk/" :default t)])
;; 当前VSCode的默认设置 (setq lsp-java-vmargs '("-XX:+UseParallelGC" "-XX:GCTimeRatio=4" "-XX:AdaptiveSizePolicyWeight=90" "-Dsun.zip.disableMemoryMapping=true" "-Xmx2G" "-Xms100m"))
AI辅助编程,代码自动修复
Trae是一种自适应的集成开发环境(IDE),通过自动化和多元协作改变开发流程。利用Trae,团队能够更快速、精确地编写和部署代码,从 而提高编程效率和项目交付速度。Trae具备上下文感知和代码自动完成功能,是提升开发效率的理想工具。
AI小说写作助手,一站式润色、改写、扩写
蛙蛙写作—国内先进 的AI写作平台,涵盖小说、学术、社交媒体等多场景。提供续写、改写、润色等功能,助力创作者高效优化写作流程。界面简洁,功能全面,适合各类写作者提升内容品质和工作效率。
全能AI智能助手,随时解答生活与工作的多样问题
问小白,由元石科技研发的AI智能助手,快速准确地解答各种生活和工作问题,包括但不限于搜索、规划和社交互动,帮助用户在日常生活中提高效率,轻松管理个人事务。
实时语音翻译/同声传译工具
Transly是一个多场景的AI大 语言模型驱动的同声传译、专业翻译助手,它拥有超精准的音频识别翻译能力,几乎零延迟的使用体验和支持多国语言可以让你带它走遍全球,无论你是留学生、商务人士、韩剧美剧爱好者,还是出国游玩、多国会议、跨国追星等等,都可以满足你所有需要同传的场景需求,线上线下通用,扫除语言障碍,让全世界的语言交流不再有国界。
一键生成PPT和Word,让学习生活更轻松
讯飞智文是一个利用 AI 技术的项目,能够帮助用户生成 PPT 以及各类文档。无论是商业领域的市场分析报告、年度目标制定,还是学生群体的职业生涯规划、实习避坑指南,亦或是活动策划、旅游攻略等内容,它都能提供支持,帮助用户精准表达,轻松呈现各种信息。
深度推理能力全新升级,全面对标OpenAI o1
科大讯飞的星火大模型,支持语言理解、知识问答和文本创作等多功能,适用于多种文件和业务场景,提升办公和日常生活的效率。讯飞星火是一个提供丰富智能服务的平台,涵盖科技资讯、图像创作、写作辅助、编程解答、科研文献解读等功能,能为不同需求的用户提供便捷高效的帮助,助力用户轻松获取信息、解决问题,满足多样化使用场景。
一种基于大语言模型的高效单流解耦语音令牌文本到语音合成模型
Spark-TTS 是一个基于 PyTorch 的开源文本到语音合成项目,由多个知名机构联合参与。该项目提供了高效的 LLM(大语言模型)驱动的语音合成方案,支持语音克隆和语音创建功能,可通过命令行界面(CLI)和 Web UI 两种方式使用。用户可以根据需求调整语音的性别、音高、速度等参数,生成高质量的语音。该项目适用于多种场景,如有声读物制作、智能语音助手开发等。
AI助力,做PPT更简单!
咔片是一款轻量化在线演示设计工具,借助 AI 技术,实现从内容生成到智能设计的一站式 PPT 制作服务。支持多种文档格式导入生成 PPT,提供海量模板、智能美化、素材替换等功能,适用于销售、教师、学生等各类人群,能高效制作出高品质 PPT,满足不同场景演示需求。
选题、配图、成文,一站式创作,让内容运营更高效
讯飞绘文,一个AI集成平台,支持写作、选题、配图、排版和发布。高效生成适用于各类媒体的定制内容,加速品牌传播,提升内容营销效果。
专业的AI公文写作平台,公文写作神器
AI 材料星,专业的 AI 公文写作辅助平台,为体制内工作人员提供高效的公文写作解决方案。拥有海量公文文库、9 大核心 AI 功能,支持 30 + 文稿类型生成,助力快速完成领导讲话、工作总结、述职报告等材料,提升办公效率,是体制打工人的得力写作神器。
最新AI工具、AI资讯
独家AI资源、AI项目落地
微信扫一扫关注公众号