lsp -- Emacs lsp client usage
文章目录
lsp-java
jdtls 安装
lsp-install-server命令手动安装
下载 source code
maven 安装
1 2 3mvnw clean verify mvnw clean verify -DskipTests=true # 避免单元测试错误生成 jdtls 命令
放置位置
./org.eclipse.jdt.ls.product/target/repository
eglot 配置
M-x eglot输入 jdtls 项目根目录
- eg:
e:/programs/jdtls/
- eg:
我的配置
eg:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23(use-package eglot :ensure t :config (defconst my/jdtls-project-root (expand-file-name (concat user-emacs-directory ".cache/lsp/eclipse.jdt.ls/"))) (defconst my/jdtls-jar-file-pattern "^org\.eclipse\.equinox\.launcher_[1-9].*\.jar$") (defun my/jdtls-find-executable-jar-file (dir file-pattern) (car (directory-files-recursively dir file-pattern))) (defun my/eclipse-jdt-contact (interactive) (let ((cp (getenv "CLASSPATH")) (path_seprator ":")) (if (eq system-type 'windows-nt) (setq path_seprator ";")) (setenv "CLASSPATH" (concat cp path_seprator (my/jdtls-find-executable-jar-file my/jdtls-project-root my/jdtls-jar-file-pattern))) (message (getenv "CLASSPATH")) (unwind-protect (eglot--eclipse-jdt-contact nil) (setenv "CLASSPATH" cp)))) (setcdr (assq 'java-mode eglot-server-programs) #'my/eclipse-jdt-contact) (add-hook 'java-mode-hook 'eglot-ensure) )
lsp-mode 配置
jdtls 默认存放路径
(conat user-emacs-directory "/.cache/lsp/eclipse.jdt.ls")
Code Actions
lsp-mode
lsp-execute-code-actionshelm-lsp-code-actions
eglot-mode
eglot-code-actions
Lombok 支持
参考
配置
1 2 3 4 5 6 7 8 9 10(setq lsp-java-vmargs (list "-noverify" "-Xmx1G" "-XX:+UseG1GC" "-XX:+UseStringDeduplication" "-javaagent:/path/to/lombok-1.18.6.jar")) (setq my/lsp-java-lombok-jar-path "~/programs/lombok/") (add-to-list lsp-java-vmargs (concat "-javaagent:" my/lsp-java-lombok-jar-path))
Java Emacs 项目创建
项目添加删除(workspacer)
- 删除项目:lsp-workspace-folders-remove
- 黑名单删除:lsp-workspace-blacklist-remove
添加
- lsp-workspace-folders-add
c++/c
编译数据库创建 bear
注意: 不支持 windows
命令:
| |
eg:
cmake 程序
1bear -- cmake --build build解释:
- cmake build 目录在
./build
- cmake build 目录在
编译数据库创建 cmake 手动
方法:
设置 cmake 选项
- 手动添加方法: 添加 cmake 参数
cmake -DCMAKE_EXPORT_COMPILE_COMMANDS=ON 配置 CMakeLists.txt
1set(CMAKE_EXPORT_COMPILE_COMMANDS 1)
- 手动添加方法: 添加 cmake 参数
使用 genrator, Ninja 或 Makefile
eg:
1cmake -S . -B build -DCMAKE_EXPORT_COMPILE_COMMANDS=ON -G Ninja
使用步骤
创建项目
- 代码 project-root/hello.cpp
cmake 配置
- 配置
project-root/CMakeLists.txt eg:
1 2 3 4 5 6# CMake 最低版本号要求 cmake_minimum_required (VERSION 2.8) # 项目信息 project (Demo1) # 指定生成目标 add_executable(main hello.cpp)
- 配置
cmake 初始化
1cmake -S <source-code-dir> -B <build-dir>eg:
1cmake -S . -B build
bear 创建 compilation database
eg:
1bear -- cmake --build build
lsp 启动
M-x lsporM-x lsp-bridge-mode
vscode 中创建项目方法(cmake)
参考:
插件 extensions:
- cmake tools
功能和方法:
创建 CMakeLists.txt
C-S-p cmake quickstart- 输入 target, eg: main
- 选择 target 类型, library or executable (库或可执行文件)
通用 Debug (验证无效)
- 聚焦到执行的文件(含 main 的文件或目标文件)
- 点击 vscode 左侧的 debug 按钮
- 点击 Run and Debug 按钮
使用 cmake tools Debug
- 移动到最左侧 cmake tools 图标
初始化配置
- 点击 Configure All project 图标
聚焦到 target 图标上
- eg: main
点击右键
- Build
- Debug
- Run in terminal
*
pyright
问题
pyright import 检查找不到 editable package
参考:
- https://github.com/microsoft/pyright/issues/1473#issuecomment-1296312100
- pyrightconfig.json 官方文档:https://github.com/microsoft/pyright/blob/main/docs/configuration.md
解决方法:
在 project-root 下,创建 pyrightconfig.json 文件
1 2 3{ "extraPaths": ["/Users/fakedrake/Projects/editable-package-root"] }
文章作者
上次更新 2024-01-05 (5c92d1c)