目前使用Nox,在Mac 和 Linux 都正常。但在Windows下有点小问题:
通过kill-this-buffer
关闭所有*Nox(xxxxx)* buffer
时会造成emacs 冻结。
虽然对使用影响不太大,但是有时不小心关闭这些nox buffer时就得重启emacs。由于冻结住了,很难debug。有用过nox的朋友遇到这个问题吗?
有个问题: java项目下不能 auto guess project root,设置 project root 开启 nox 后,只有第一个 java 文件能正常补全,打开其他的 java 文件会另起一个 nox workspace
请问有人在使用Nox实现C#的自动补全和跳转吗? 我用Nox尝试连接,总是不成功。
不知道Nox 需要什么样的参数可以连接?
经过测试,目前C#在Emacs上的语法高亮可以使用Csharp-mode, 配合omnisharp-emacs 连接omnisharp-roslyn Sever 正常工作。
Nox是Forked自eglot的,在eglot上有人通过以下配置可以成功连接omnisharp-roslyn
(use-package eglot
:commands (eglot eglot-ensure)
:hook ((python-mode . eglot-ensure)
(csharp-mode . eglot-ensure))
:config
(progn
(define-key eglot-mode-map (kbd "C-c e r") 'eglot-rename)
(define-key eglot-mode-map (kbd "C-c e f") 'eglot-format)
(define-key eglot-mode-map (kbd "C-c e h") 'eglot-help-at-point)
(add-to-list 'eglot-server-programs
`(csharp-mode . ("C:/Home/omnisharp_64/OmniSharp.exe" "-lsp")))))
系统:Windows 10,Mac
emacs 28.0.50/ 27.0.91
显然不是,我最新的电脑也卡的
楼主加油,关注中,等有空了在spacemacs中试试。
我用Nox 在 mspyls和haskell 以及ccls感觉都很好啊,没觉得卡。我只测试过Windows和mac
打开go文件 M-x nox 返回
[nox]Server reports (type=2): You are neither in a module nor in you GOPATH. If you are using modules, please open your editor at the directory containing the go.mod.
我在用module,用lsp-mode的时候没问题或者会让import project,使用nox的时候如何让它识别go项目呢。
spacemacs 中如何安装配置?
spacemacs中不知道如何使用nox
dotspacemacs-additional-packages
'(
(nox :location (recipe :fetcher github :repo "manateelazycat/nox"))
)
lsp layer是不是要删除掉,python layer默认会加载cannaoda layer, 怎么处理
lsp layer 可以去掉,cannaoda layer 是啥,不需要的 package 可以放到 dotspacemacs-excluded-packages
或者像我这样在 layer 中加 not 去掉
(c-c++ :packages (cc-mode ccls company-c-headers)
:variables
c-c++-default-mode-for-headers 'c++-mode
c++-enable-organize-includes-on-save t
;; c-c++-backend t
c-basic-offset 4
c-c++-adopt-subprojects t)
(python :packages (not yapfify live-py-mode)
:variables
python-backend 'anaconda
python-sort-imports-on-save t
python-test-runner '(pytest nose)
python-formatter 'black
python-format-on-save nil
blacken-fast-unsafe t
python-fill-column 88)
Hi, 我已经不用nox 而继续用lsp了。 在spacemacs 中,你想使用nox的话,你只需要把你想用lsp作为backend的语言那些layer中,backend 去掉lsp支持 改为默认的; 可以但不需要删除lsp (不删除的好处是,你可以随时关闭nox,随时用lsp)。如果python 你不想用默认的anaconda,你可以在进入python文件后,关闭anacoanda,有个具体的mode close,比较直接。 即使anaconda和nox一起开,应该问题也不大。
我不用nox的原因是,lsp现在速度已经比较快(没有觉得和nox有明显区别),在spacemacs 里面用起来也比较方便了。在识别根目录上,nox好像略有问题。
之前识别出现问题之后就没有补全了,现在不知道因为什么,会报错但是会出补全
其实就是最后一行配置管用,omni csharp的路径是固定的吗?
omni csharp需要自己编译或者下载预编译的。路径可以自定义的,要固定也是可以的。Omnisharp-emacs这个包是自动将预编译的版本下载到.emacs.d的一个子目录下。
~/.emacs.d/.cache/omnisharp/server/v1.34.5/OmniSharp.exe
我只试过mac和Windows。
我加了对 OmniSharp 的支持 Add support for OmniSharp. · manateelazycat/nox@6490924 · GitHub
下面这个变量的值你可以修改成你的路径
(defvar nox-omni-sharp-path "~/.emacs.d/.cache/omnisharp/server/v1.34.5/OmniSharp.exe")
设置好路径后,直接在 csharp-mode 中启用 Nox 应该就可以了。
我没有Windows,所以这个补丁是忙写的。
我加了对 OmniSharp 的支持 https://github.com/manateelazycat/nox/commit/649092413064493f7d262a596c8e334c0fd6b52c
下面这个变量的值你可以修改成你的路径
(defvar nox-omni-sharp-path "~/.emacs.d/.cache/omnisharp/server/v1.34.5/OmniSharp.exe")
设置好路径后,直接在 csharp-mode 中启用 Nox 应该就可以了。
我没有Windows,所以这个补丁是盲写的。
多谢猫哥,我晚上回家测试一下。 @manateelazycat 刚刚抽空尝试了一下,提示以下错误,不知道应该是哪方面原因?
Error in post-command-hook ((closure ((--cl-maybe-connect-- closure #1 nil (progn (remove-hook 'post-command-hook --cl-maybe-connect-- nil) (let ((G1 buffer)) (if (buffer-live-p G1) (save-current-buffer (set-buffer G1) (if nox--managed-mode nil (apply #'nox--connect (nox--guess-contact)))))))) (buffer . #<buffer testNox.cs>) nox--managed-mode t) nil (progn (remove-hook 'post-command-hook --cl-maybe-connect-- nil) (let ((G1 buffer)) (if (buffer-live-p G1) (save-current-buffer (set-buffer G1) (if nox--managed-mode nil (apply #'nox--connect (nox--guess-contact))))))))): (cl-no-applicable-method make-instance nox-omni-sharp-path :name "NOX (Csharp/csharp-mode)" :events-buffer-scrollback-size 2000000 :notification-dispatcher (closure ((fn . nox-handle-notification) (initargs :process (closure ((contact "-lsp") (autostart-inferior-process) (readable-name . "NOX (Csharp/csharp-mode)") (nickname . "Csharp") (contact "-lsp") (class . nox-omni-sharp-path) (project transient . "d:/Code/Csharp/") (managed-major-mode . csharp-mode) nox--managed-mode t) nil (let ((default-directory default-directory)) (make-process :name readable-name :command contact :connection-type 'pipe :coding 'utf-8-emacs-unix :noquery t :stderr (get-buffer-create (format "*%s stderr*" readable-name)))))) (contact "-lsp") (autostart-inferior-process) (readable-name . "NOX (Csharp/csharp-mode)") (nickname . "Csharp") (contact "-lsp") (class . nox-omni-sharp-path) (project transient . "d:/Code/Csharp/") (managed-major-mode . csharp-mode) nox--managed-mode t) (server method params) (apply fn server method (append params nil))) :request-dispatcher (closure ((fn . nox-handle-request) (initargs :process (closure ((contact "-lsp") (autostart-inferior-process) (readable-name . "NOX (Csharp/csharp-mode)") (nickname . "Csharp") (contact "-lsp") (class . nox-omni-sharp-path) (project transient . "d:/Code/Csharp/") (managed-major-mode . csharp-mode) nox--managed-mode t) nil (let ((default-directory default-directory)) (make-process :name readable-name :command contact :connection-type 'pipe :coding 'utf-8-emacs-unix :noquery t :stderr (get-buffer-create (format "*%s stderr*" readable-name)))))) (contact "-lsp") (autostart-inferior-process) (readable-name . "NOX (Csharp/csharp-mode)") (nickname . "Csharp") (contact "-lsp") (class . nox-omni-sharp-path) (project transient . "d:/Code/Csharp/") (managed-major-mode . csharp-mode) nox--managed-mode t) (server method params) (apply fn server method (append params nil))) :on-shutdown nox--on-shutdown :process (closure ((contact "-lsp") (autostart-inferior-process) (readable-name . "NOX (Csharp/csharp-mode)") (nickname . "Csharp") (contact "-lsp") (class . nox-omni-sharp-path) (project transient . "d:/Code/Csharp/") (managed-major-mode . csharp-mode) nox--managed-mode t) nil (let ((default-directory default-directory)) (make-process :name readable-name :command contact :connection-type 'pipe :coding 'utf-8-emacs-unix :noquery t :stderr (get-buffer-create (format "*%s stderr*" readable-name))))))
暂时帮不了,主要是没有用Windows没法测试。