Как заставить ensime работать в windows?

Я новичок в emacs и хочу использовать ensime в Windows. У меня была попытка, но она не работает. Кажется, что это не работает, потому что есть файл формата *nix с именем "\ensime\bin\server.sh" . Очень признателен, если кто-нибудь даст мне несколько советов.

РЕДАКТИРОВАТЬ: Я следую предложению VonC, но он не работает идеально. Я уверен, что что-то пропустил.альтернативный текстЯ установил emacs23.1 в dir D:\Dev\emacs-23.1,scala-mode в D:\Dev\emacs-23.1\scala-mode и ensime в D:\Dev\emacs-23.1\ensime.

Вот мой файл.emacs:

;;禁用工具栏
(tool-bar-mode nil)

;;显示行号
(global-linum-mode t)

;;使用scala mode
(add-to-list 'load-path "D:/Dev/emacs-23.1/scala-mode/")
(require 'scala-mode)

(add-to-list 'auto-mode-alist '("\\.scala$" . scala-mode))
(add-to-list 'load-path "D:/Dev/emacs-23.1/ensime/src/elisp/")
(require 'ensime)
(add-hook 'scala-mode-hook 'ensime-scala-mode-hook)

и вот мое содержимое файла D:\Dev\emacs-23.1\ensime.ensime:

(
:server-root "D:/Dev/emacs-23.1/ensime/"
:server-cmd  "D:/Dev/emacs-23.1/ensime/bin/server.bat"
:server-host "localhost"
:server-env ()

:project-package "com.ensime"
:source ("src")
:exclude-source ()
:classpath ("lib/jnotify/jnotify-0.93.jar"
        "lib/scala/scala-library.jar"
        "lib/scala/scala-compiler.jar")
)

и вот мое содержимое файла D:\Dev\emacs-23.1\ensime\bin\server.bat:

@echo off
set PORT_FILE=%1
set CLASSPATH=D:\Dev\emacs-23.1\ensime\lib\jnotify\jnotify-0.93.jar;D:\Dev\emacs-23.1\ensime\lib\scala\scala-library.jar;D:\Dev\emacs-23.1\ensime\lib\scala\scala-compiler.jar;D:\Dev\emacs-23.1\ensime\dist\ensime.jar
java -classpath %CLASSPATH% -Djava.library.path=D:\Dev\emacs-23.1\ensime\lib\jnotify com.ensime.server.Server %PORT_FILE%

http://www.turboimagehost.com/p/3350328/3769883.PNG.html

3 ответа

Решение

Это должен быть простой вопрос переноса сценария оболочки в DOS в server.bat:

@echo off
set PORT_FILE=%1
set CLASSPATH=lib\scala\scala-library.jar;lib\scala\scala-compiler.jar;dist\ensime.jar
java -classpath %CLASSPATH% -Djava.library.path=lib\jnotify com.ensime.server.Server %PORT_FILE%

быть выполненным из каталога ensime.

более независимая версия (исполняемая из любого каталога) будет:

@echo off
set t=%~dp0
set adp0=%t::\=:\"%"
cd %adp0%..
set CLASSPATH=lib\scala\scala-library.jar;lib\scala\scala-compiler.jar;dist\ensime.jar
java -classpath %CLASSPATH% -Djava.library.path=lib\jnotify com.ensime.server.Server %PORT_FILE%

Даже если ensime находится в пути с пробелами в нем, это должно работать.

  • %~dp0 полный путь к server.bat (путь с потенциальными пробелами в нем)
  • set adp0=%t::\=:\"%" добавит двойные кавычки вокруг этого пути
  • %adp0%.. будет ссылаться на ensime каталог

Недавно мы объединили несколько изменений, которые помогают с поддержкой окон. ENSIME теперь включает в себя файл bin/server.bat. Кроме того, конструкция classpath теперь использует подходящий для платформы разделитель пути.

Обратите внимание, что если вы собираете из git clone в Windows, вам нужно изменить server.bat и удалить. \ Dist \ перед каждым файлом jar. Кроме того, вы получите сообщение об ошибке при удалении каталога dist. Это можно игнорировать. ensime - активный проект, и Aemon Cannon выпускает обновления почти ежедневно. Последняя версия значительно улучшилась по сравнению с месяцем назад. Так что это хорошая идея для установки из git clone. См. Инструкции в http://aemon.com/file_dump/ensime_manual.html Чтобы создать вызов

обновление SBT

Sbt Dist

Игнорировать ошибки tar. Исправьте server.bat, как упомянуто выше. Хотя есть некоторые серьезные ошибки, это находка для людей, которые любят emacs и scala. Вам не нужно затмение. А Aemon быстро исправляет ошибки. Он отлично работает для проектов Android. Все, что мне нужно было сделать, это добавить:compile-jars ("d:/software/android-sdk-windows/platforms/android-4/android.jar") в.ensime.

Другие вопросы по тегам