lsp-java

  • jdtls 安装

    1. lsp-install-server 命令
    2. 手动安装

  • eglot 配置

    • M-x eglot
    • 输入 jdtls 项目根目录

      • eg: e:/programs/jdtls/
    • 我的配置

      • 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-actions
    • helm-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))

项目添加删除(workspacer)

  • 删除项目:lsp-workspace-folders-remove
  • 黑名单删除:lsp-workspace-blacklist-remove
  • 添加

    • lsp-workspace-folders-add

c++/c

编译数据库创建 bear

注意: 不支持 windows

命令:

1
bear -- <your compile command>

eg:

  • cmake 程序

    1
    
    bear -- cmake --build build
    • 解释:

      • cmake build 目录在 ./build

编译数据库创建 cmake 手动

方法:

  1. 设置 cmake 选项

    • 手动添加方法: 添加 cmake 参数 cmake -DCMAKE_EXPORT_COMPILE_COMMANDS=ON
    • 配置 CMakeLists.txt

      1
      
      set(CMAKE_EXPORT_COMPILE_COMMANDS 1)
  2. 使用 genrator, Ninja 或 Makefile

    • eg:

      1
      
       cmake -S . -B build -DCMAKE_EXPORT_COMPILE_COMMANDS=ON -G Ninja

使用步骤

  1. 创建项目

    • 代码 project-root/hello.cpp
  2. 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)
  3. cmake 初始化

    1
    
    cmake -S <source-code-dir> -B <build-dir>
    • eg:

      1
      
      cmake -S . -B build
  4. bear 创建 compilation database

    • eg:

      1
      
      bear -- cmake --build build
  5. lsp 启动

    • M-x lsp or M-x lsp-bridge-mode

vscode 中创建项目方法(cmake)

参考:

插件 extensions:

  • cmake tools

功能和方法:

  1. 创建 CMakeLists.txt

    • C-S-p cmake quickstart
    • 输入 target, eg: main
    • 选择 target 类型, library or executable (库或可执行文件)
  2. 通用 Debug (验证无效)

    1. 聚焦到执行的文件(含 main 的文件或目标文件)
    2. 点击 vscode 左侧的 debug 按钮
    3. 点击 Run and Debug 按钮
  3. 使用 cmake tools Debug

    1. 移动到最左侧 cmake tools 图标
    2. 初始化配置

      • 点击 Configure All project 图标
    3. 聚焦到 target 图标上

      • eg: main
    4. 点击右键

      • Build
      • Debug
      • Run in terminal

*

pyright

问题

pyright import 检查找不到 editable package

参考:

解决方法:

  1. 在 project-root 下,创建 pyrightconfig.json 文件

    1
    2
    3
    
    {
        "extraPaths": ["/Users/fakedrake/Projects/editable-package-root"]
    }