欢迎使用 Nox -- 轻量级 LSP 客户端

都是玄学……

。。。。。。

GC设置是非常有效果的性能优化手段,默认配置加速Nox的性能。

Anyway我添加了一个选项,nox-optimization-p ,喜欢自己折腾的把这个选项关闭即可。

我知道gc的作用………我是说,这种通用的emacs 配置用户会写在自己的配置里,nox不必照顾到这种地步

已经加了一个选项,不喜欢的,直接禁用即可。

现在测试,如果一个LSP还是很卡的话,大概率是因为 LSP Server 太吃CPU了(比如javascript-typescript-stdio), CPU消耗太厉害以后,也会导致整个Emacs无法响应。

我使用R试用Nox,如果eval-region-or-function,代码可以正常在inferior里运行,但是并不上屏,而是在提示符(prompt)后重复提示符且不换行。

我基本沿用了之前eglot和lsp的配置,应该没有问题,Nox的部分是这样的:

(add-to-list 'nox-server-programs
		   '((ess-r-mode inferior-ess-r-mode)
		     . ("R" "--slave" "-e" "languageserver::run()")))

这是Nox有意为之还是其他方面的问题呢?

最好录个屏,看不懂你说的啥。

DeepinScreenshot_select-area_20200410105434

我一般分两屏,一边写R脚本然后执行,另一边的命令行会显示结果或图等。上图的命令行界面相当于R版本的ipython

红框里的提示符是读取数据的步骤,每执行一句就会多出现一个。原来是读取之后会在命令行显示函数和数据内容的,不仅是有>

你试过 lsp-mode 和 eglot ? 它们是好的?

最早用eglot,不过当时配置的 language server 有问题(我自己没配置对,后来找到作者的推荐配置了)。后来是lsp-mode,可以正常运行,就是太慢(大部分是R自己的锅)。如果Nox没有专门设置的话,我再多试试看是哪里的问题。

不开nox会怎样?

emacs27就不会卡了

有在Haskell下使用Nox的吗?我在使用中遇到了下面的问题。
我编译好了HIE 并添加/usr/.local/bin 到.zshenv 的PATH中。 在终端下可以发现hie 和hie-wrapper 没问题,但是Emacs的Nox老是提示发现不了hie-wrapper。
*message buffer 中的报错信息如下:

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 Lib.hs>) 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))))))))): (file-missing "Searching for program" "No such file or directory" "hie-wrapper")

平台: Mac OS Catalina 10.15.4
Emacs version:28.0.50
Emacs 配置使用的是LazyCat的配置。
注:Nox 在Python 下正常工作,HIE 在Vim下也能正常工作。

也许要需要安装 exec-path-from-shell ,而且我不确定Emacs会从 .zsh 里面去读取PATH配置。

1 个赞

果然是这个问题,加入(exec-path-from-shell-initialize) 可以正常识别环境变量了。

喜欢! 从来不用flycheck和snippet自动补全功能的我为大佬点赞!

2 个赞

@manateelazycat 猫哥,今晚在Win10下调试了Nox+ mspyls,只要修改下nox.el 2309 行加一条语句就可以完美支持Win10 系统。
(if (eq system-type 'windows-nt) ".exe" "")

有空能否更新一下,方便更多地朋友使用。

(defun nox--python-contact (interactive)
  (cond ((string-equal nox-python-server "mspyls")
         (setq-default nox-workspace-configuration
                       '((:python :autoComplete (:extraPaths nil)
                                  :analysis (:autoSearchPaths :json-false :usePYTHONPATH :json-false))))
         (cons 'nox-mspyls (list (concat nox-python-server-dir
                                         "Microsoft.Python.LanguageServer"
                                         (if (eq system-type 'windows-nt) ".exe" "")))))
        ((string-equal nox-python-server "pyls")
         (list "pyls"))
        ))
1 个赞

已经搞定了, 更新即可

1 个赞

感谢 :smile:
这样Windows 用户只要自己再设置下python路径就可以愉快地使用mspyls了。
例如: (setq nox-python-path "c:/Python38/python.exe")

2 个赞