将emacs连接到远程ensime服务器

Rea*_*onk 10 emacs scala ensime

如何连接到远程主机上的ensime服务器?对于那种东西,我的上网本有点慢.我复制了数据并使用tramp远程编辑文件.我跑去bin/server创建服务器和ssh转发,以便能够连接到它.我ensime-connect用来连接localhost上的端口.远程服务器上的ensime服务器回答Got connection, creating handler...,但就是这样.Ensime处于[ENSIME: wtf]emacs状态行的模式.我该如何解决?

whu*_*nmr 3

问题是 ensime 找不到连接的“配置”(通过 ensime-connect 进行)。

然后下面的行将抛出错误:

(if (and loose (ensime-file-in-directory-p file project-root))
Run Code Online (Sandbox Code Playgroud)

因为项目根为零。

通过将连接设置为ensime-buffer-connection,可以解决该问题。尝试将以下功能添加到您的 ensime.el

并使用ensime-stackoverflow-connect进行连接。

(defun ensime-stackoverflow-connect (host port)
  (interactive (list
        (read-from-minibuffer "Host: " ensime-default-server-host)
        (read-from-minibuffer "Port: " (format "%d" ensime-default-port)
                      nil t)))
  (let ((c (ensime-connect host port))
    (config (ensime-config-load "/Users/whunmr/lab/scala/.ensime")))
    (ensime-set-config c config)
    (setq ensime-buffer-connection c))
  )
Run Code Online (Sandbox Code Playgroud)

记得更改代码中的配置路径:“/Users/whummr/lab/scala/.ensime”

EDIT1: “.ensime”文件是由 Mx ensime 命令在您的 scala 项目文件夹中创建的。实际上,只需对配置进行硬编码,您就可以忽略该文件。

(defun ensime-my-connection (host port)
      (interactive (list
            (read-from-minibuffer "Host: " ensime-default-server-host)
            (read-from-minibuffer "Port: " (format "%d" ensime-default-port)
                          nil t)))
      (let ((c (ensime-connect host port))
        (config '(:project-name "test" :project-package "com.whunmr" :sources ("./src") :compile-jars ("./" "../../apps/scala/lib/") :target "./bin" :root-dir "/Users/twer/lab/scala/")))
        (ensime-set-config c config)
        (setq ensime-buffer-connection c))
      )
Run Code Online (Sandbox Code Playgroud)