Подскажите (намекните) как в Emacs установить (настроить?) SLIME mode.
Спасибо!
Михаил
У меня так:
;; lisp
(require 'slime)
(setq inferior-lisp-program "/usr/local/bin/sbcl --noinform")
(setq common-lisp-hyperspec-root
"file:///Users/rk/Documents/books/tech/HyperSpec/")
(slime-setup)
(setq slime-startup-animation nil)
--
rk
в файл инициализации (C-x-f .emacs, если у тебя конкретно Emacs) пишешь
что-то такое:
(add-to-list 'load-path "/путь/куда/распаковал/slime/")
(add-to-list 'load-path "/путь/куда/распаковал/slime/contrib")
(require 'slime)
(slime-setup)
вариации:
* если ставил SLIME из пакета (к примеру, в Debian), пути писать не нужно
* в slime-setup можно указать какие дополнительные возможность загружать,
например:
(slime-setup '(slime-fancy))
загрузит основные модули вроде автодополнения и т.д.
* указать какой лисп запускать можно так:
(setq inferior-lisp-program "sbcl")
* полезные настройки:
(paren-set-mode 'blink-paren) ; подсвечивание скобок
;; правильная индентация
(setq lisp-indent-function 'common-lisp-indent-function)
* локальная документация:
(setq common-lisp-hyperspec-root "file:///C:/TEXTS/hyperspec/HyperSpec/")
(setq common-lisp-hyperspec-symbol-table
"C:/TEXTS/hyperspec/HyperSpec/Data/Map_Sym.txt")
;; иначе будет ссылаться на интернет
* поддержка не-английских символов -- не знаю, может в Emacs работает из
коробки, в XEmacs нужно настраивать..
* автодополнение может быть по-умолчанию повешено на какие-то не совсем
адекватные
кнопки (к тому же ещё и разные в редакторе и REPL). можно перевесить на
более адекватные,
к примеру caps-lock или f12. как-то так:
(add-hook 'slime-mode-hook
'(lambda ()
(define-key slime-repl-mode-map [f12] 'slime-complete-symbol)))
(add-hook 'slime-repl-mode-hook
'(lambda ()
(define-key slime-repl-mode-map [f12] 'slime-complete-symbol)))
кстати, ещё насчёт сочетаний кнопок -- мне было трудно привыкнуть к
комбинациям для выделения/
копирования/удаления и т.д. в Emacs, т.к. я привык к редакторам Windows.
вместо того чтобы настроить
всё под себя, оказалось проще установить XEmacs -- там прямо из коробки
работает всё что надо.
(под виндой вообще всё, под линуксом пришлось пару сочетаний переназначить).
и вообще чуток
поприятнее некоторые вещи сделаны, по моему субъективному мнению. так что
если не получается с Emacs,
стоит попробовать XEmacs.
Долго не мог понять, в каком формате указывать path, в * Messages *
после старта прочитал ("D:\\Program Files\\emacs-22.2\\bin\\emacs.exe")
Потом в * scratch * (print load-path) C-x C-e - и исправил формат.
Долго искал, где init-file .emacs
Воспользовался советом на
http://www.gnu.org/software/emacs/windows/Installing-Emacs.html#Installing-Emacs
(insert (getenv "HOME")) - нашел в C:\Documents and
Settings\UserName\Application Data\.emacs.d\init.el
Пробовал разные варианты init.el, работает вот этот:
(add-to-list 'load-path "D:/Program Files/emacs-22.2/slime")
(add-to-list 'load-path "D:/Program Files/emacs-22.2/slime/contrib")
(add-to-list 'load-path "D:/Program Files/emacs-22.2/slime/doc")
(require 'slime)
(slime-setup)
Hо приходится вручную M-x slime-mode
Как бы автоматизировать запуск slime-mode?
Если набрать M-x slime, то
"apply: Searching for program: no such file or directory, lisp"
Что ей не нравится?
Repl запускаю так: M-x slime-repl-mode
Если набрать M-x slime-repl, то "slime-connection: Not connected"
Появляются меню SLIME и REPL, но REPL-приглашения нет.
Правильно ли я делаю?
Где подкрутить?
Михаил
Alex Mizrahi пишет:
> MNK> Подскажите (намекните) как в Emacs установить (настроить?) SLIME mode.
>
> в файл инициализации (C-x-f .emacs, если у тебя конкретно Emacs) пишешь
> что-то такое:
>
> (add-to-list 'load-path "/путь/куда/распаковал/slime/")
...
Михаил
а вот был бы у тебя линукс, всё работало бы из коробки :)
MNK> Hо приходится вручную M-x slime-mode
MNK> Как бы автоматизировать запуск slime-mode?
вообще-то slime-setup и так автоматизирует включение slime-mode для всех
файлов .lisp и т.д.:
(add-hook 'lisp-mode-hook 'slime-lisp-mode-hook)
у тебя файл изначально определяется в lisp-mode?
в общем, покажи какой режим оно пишет изначально и какой после slime-mode
MNK> Если набрать M-x slime, то
MNK> "apply: Searching for program: no such file or directory, lisp"
MNK> Что ей не нравится?
* указать какой лисп запускать можно так:
(setq inferior-lisp-program "sbcl")
там должен быть путь к реализации лиспа которую ты собираешься использовать
(CLISP?), такой чтобы оно его нашло -- т.е., возможно, полный путь.
> а вот был бы у тебя линукс, всё работало бы из коробки :)
Да уж, у меня помимо много претензий к выне. 1с не идет, жаль, а то б, а
я б... :)
...
> у тебя файл изначально определяется в lisp-mode?
Какой? .el?
Когда открываю init.el, появляется пункт меню Emacs-Lisp
(При переходе в *scratch* пункта меню Emacs-Lisp нет.)
M-x slime - не находит Lisp:
apply: Searching for program: no such file or directory, lisp"
(print inferior-lisp-program) C-x C-e
"lisp"
"lisp"
Пробовал поставить SBCL - дома запускается, на работе, на более мощном
компе - нет:
> VirtualAlloc: 0x1e7.
> ensure_space: failed to validate 536870912 bytes at 0x09000000
> (hint: Try "ulimit -a"; maybe you should increase memory limits.)
Пробовал sbcl.exe ulimit -a - то же сообщение.
> в общем, покажи какой режим оно пишет изначально и какой после slime-mode
>
>
> MNK> Если набрать M-x slime, то
> MNK> "apply: Searching for program: no such file or directory, lisp"
> MNK> Что ей не нравится?
>
> * указать какой лисп запускать можно так:
> (setq inferior-lisp-program "sbcl")
>
> там должен быть путь к реализации лиспа которую ты собираешься использовать
> (CLISP?), такой чтобы оно его нашло -- т.е., возможно, полный путь.
См. выше, по умолчанию:
(print inferior-lisp-program) C-x C-e
"lisp"
Я никакого Lisp'а, наивный, не ставил больше, понадеялся на Emacs Lisp.
А что, нужно?
Куда, в какую папку?
Какую папку этого Lisp'а указать в (setq inferior-lisp-program "папка")?
(setq inferior-lisp-program "папка") прописать в init.el?
Какой помимо можно использовать для Win XP?
Михаил
ЗЫ. Удивительно наблюдать, как в Emacs можно менять функциональность на
лету, без перекомпиляции.
Как настроить копи-пасте через С-с, С-v (С-м в русском регистре)
намекните, плз!
МК
дак никто не мешает использовать одновременно -- установи vmware server,
скачай готовую вирт. машину с линуксом и пользуй, я так работаю, к примеру.
только на компе желательно памяти хотя бы 1 GB, на 512 уже будет не совсем
комфортно.
??>> у тебя файл изначально определяется в lisp-mode?
MNK> Какой? .el?
MNK> Когда открываю init.el, появляется пункт меню Emacs-Lisp
нет, .el как раз именно Emacs-Lisp и должно писать.
файлы Common Lisp обычно называют .lisp или .cl, slime-mode для
них должен автоматически устанавливаться.
MNK> Пробовал поставить SBCL - дома запускается, на работе, на более мощном
MNK> компе - нет:
SBCL под виндой работает не надёжно -- запустится он или нет зависит от
фрагментации адресного пространства, что в свою очередь зависит от того, что
установлено на компьютере (какие dll как загружаются). это не считая
множества мелких недоработок..
под виндой из бесплатных реализаций рекомендуется CLISP или ECL. CLISP
популярнее, в ECL есть поддержка многопоточности и возможность лёгкой
интеграции с C.
??>> VirtualAlloc: 0x1e7.
??>> ensure_space: failed to validate 536870912 bytes at 0x09000000
??>> (hint: Try "ulimit -a"; maybe you should increase memory limits.)
MNK> Пробовал sbcl.exe ulimit -a - то же сообщение.
он по-умолчанию пытается выделить себе непрерывный кусок памяти в 512 MB.
можно попробовать умерить аппетит опцией dynamic-space-size, например:
sbcl --dynamic-space-size 256
это будет 256 MB. можно уменьшить до 64.
MNK> См. выше, по умолчанию:
MNK> (print inferior-lisp-program) C-x C-e
MNK> "lisp"
MNK> Я никакого Lisp'а, наивный, не ставил больше, понадеялся на Emacs
MNK> Lisp. А что, нужно?
ну как бы да. Emacs Lisp радикально отличается от Common Lisp (например,
отсутствием лексических замыканий и ОО) и присутствует в Emacs без всякого
SLIME.
хотя если тебя интересует программирование расширений к текстовому
редактору, и не смущает остутсвие мегакульных фич, можно ограничиться Emacs
Lisp
MNK> Куда, в какую папку?
в любую, только желательно чтобы в названии не было
пробелов и русских букв :)
MNK> Какую папку этого Lisp'а указать в (setq inferior-lisp-program
MNK> "папка")? (setq inferior-lisp-program "папка") прописать в init.el?
угу, только не папку, а путь к исполняемому файлу.
если он у тебя прописан в PATH, то просто clisp, sbcl или что там.
если нет (а так скорее всего и будет), что-то такое:
(setq inferior-lisp-program "h:\\lisp\\ecl\\ecl.exe")
в общем, попробуй его в консоли по абсолютному пути запустить, как
получится -- то и в inferior-lisp-program пиши.
MNK> Какой помимо можно использовать для Win XP?
CLISP, ECL, SBCL (через жопу), GCL (не рекомендуется),
ABCL (на любителя -- работает через Java).
есть также урезанные версии комерческих реализаций:
Lispworks, Allegro CL, Corman Lisp. они идут со своим IDE,
но можно и через Emacs запустить.
MNK> Как настроить копи-пасте через С-с, С-v (С-м в русском регистре)
MNK> намекните, плз!
http://www.emacswiki.org/cgi-bin/wiki/CuaMode
AM> http://www.emacswiki.org/cgi-bin/wiki/CuaMode
это не поможет в случае с русскими буквами, надо либо ремаппить клавиши,
либо пользоваться встроенной емаксовой переключалкой
для ремаппинга был хак, посмотрите вот тут -
http://web.archive.org/web/20070220070449/xtalk.msk.su/~ott/ru/emacs/xemacs-russification.html
и прочие ссылки с
http://web.archive.org/web/20070220070449/xtalk.msk.su/~ott/ru/emacs/
--
With best wishes, Alex Ott, MBA
http://alexott.blogspot.com/ http://xtalk.msk.su/~ott/
http://alexott-ru.blogspot.com/
Alex Mizrahi пишет:
...
> в общем, попробуй его в консоли по абсолютному пути запустить, как
> получится -- то и в inferior-lisp-program пиши.
>
В консоли
*Messages* при старте:
=========================================================
("D:\\Program Files\\emacs-22.2\\bin\\emacs.exe")
Loading encoded-kb...done
Loading cl-macs...done
Loading cl-seq...done
Loading easy-mmode...done
An error has occurred while loading `c:/Documents and
Settings/1A/Application Data/.emacs.d/init.el':
error: Not connected.
=========================================================
"D:\\Program Files\\clisp-2.46\\clisp.exe" в консоли запускает CLISP.
Пробовал также (setq inferior-lisp-program "D:\\clisp\\clisp.exe")
.emacs.d/init.el':
=========================================================
(setq inferior-lisp-program "D:\\Program Files\\clisp-2.46\\clisp.exe")
(add-to-list 'load-path "D:/Program Files/emacs-22.2/slime")
(add-to-list 'load-path "D:/Program Files/emacs-22.2/slime/contrib")
(add-to-list 'load-path "D:/Program Files/emacs-22.2/slime/doc")
(require 'slime)
(slime-setup)
(slime-repl)
(print inferior-lisp-program)
=========================================================
=======Сообщение отладчика (запускал Emacs с параметром
--debug-init===========
Debugger entered--Lisp error: (error "Not connected.")
signal(error ("Not connected."))
error("Not connected.")
slime-connection()
slime-connection-output-buffer()
slime-output-buffer()
slime-switch-to-output-buffer()
slime-repl()
eval-buffer(#<buffer *load*> nil "c:/Documents and
Settings/1A/Application Data/.emacs.d/init.el" nil t) ; Reading at
buffer position 1850
load-with-code-conversion("c:/Documents and Settings/1A/Application
Data/.emacs.d/init.el" "c:/Documents and Settings/1A/Application
Data/.emacs.d/init.el" t t)
load("c:/Documents and Settings/1A/Application Data/.emacs.d/init" t t)
#[nil "(далее символы, которые не переносятся сюда через буфер ,
вроде "^Q^H \311 fv")
command-line()
normal-top-level()
===================конец цитаты================================
Из http://common-lisp.net/project/slime/doc/html/Platforms.html#Platforms
> SLIME supports a wide range of operating systems and Lisp implementations. SLIME runs on Unix systems, Mac OSX, and Microsoft Windows. GNU Emacs versions 20 and 21 and XEmacs version 21 are supported.
У меня GNU Emacs 22.2.1 (i386-mingw-nt5.1.2600) of 2008-03-26 on RELEASE
Может, несовместимость?
load-with-code-conversion(...) из D:\Program
Files\emacs-22.2\lisp\international\mule.el
Читал
http://www.pchristensen.com/blog/articles/installing-clisp-emacs-and-slime-on-windows-xp/,
никаких идей...
Установил еще (custom-set-variables
'(current-language-environment "Russian"))
Михаил
Михаил
Во-первых, ничего тогда не получилось, т.к.
SLIME должен запускаться по M-x slime,
а я получал сообщение об ошибке
apply: Spawning child process: invalid argument
Погуглил по этом сообщению.
В одном месте
(http://common-lisp.net/pipermail/slime-devel/2008-May/007331.html)
нашел ссылку
GNU Emacs 23.0.60.1 (i386-mingw-nt5.1.2600)
of 2008-05-12 on LENNART-69DE564 (patched)
Emacsw32 patched from available:
http://ourcomments.org/Emacs/DL/EmacsW32/EmacsCVS/ptch/Emacs-23-CvsP080512-EmacsW32-1.58.exe
Скачал, установил - то же самое.
Еще
http://groups.google.com/group/comp.lang.lisp/browse_thread/thread/bd134ae7a422404f
Try Progra~1 instaed of "Program Files"
"Tried" - получилось!
Hаконец увидел REPL в Emacs! :)
Alex был прав -
> в любую, только желательно чтобы в названии не было
> пробелов и русских букв
В консоли-то "D:/Program Files/clisp-2.46/clisp.exe" запускался, правда,
только в кавычках.
Странно, я, кажется, пробовал и (setq inferior-lisp-program
"D:/clisp/clisp.exe") - так slime запускается, впрочем, не помню точно.
Hиже на
http://groups.google.com/group/comp.lang.lisp/browse_thread/thread/bd134ae7a422404f
комментарий
> The emacs reader is seeing eveything after Program as the next command
> line argument.
> So it can't find file "C:\Program".
> On the Bash command line I could write C:/Program\ Files/... but this
> doesn't seem to work in Emacs.
> Thus I used the DOS 8.3 long name conversion instead. This is really a
> anacronism since no-one uses DOS anymore but it still works.
> Basically if the name is larger than 8 charactes use the first six
> charactes and add ~ and then numbers 1 - 9 to distiguish entries.
> I assumed you only had one directory entry starting with Program..
>
> --------------
> John Thingstad
...
> Note the:
> (let ((cmdlist (split-string cmd)))
> (set-buffer (apply (function make-comint)
> "inferior-lisp" (car cmdlist) nil (cdr cmdlist)))
>
> split-string here works on "[ \f\t\n\r\v]+"
>
> So the problem is not Emacs Windows file handeling.
> It is that (defcustom inferior-lisp-program has :type 'string rather than
> 'file and that string-split is used to seperate the arguments.
>
> --------------
> John Thingstad
Пойду дальше. Вы уж не оставляйте меня без помощи, хотя бы мысленной... :)
Михаил
P.S.
*Messages* после M-x slime RET:
> Polling "c:/DOCUME~1/1A/LOCALS~1/Temp/slime.2096".. (Abort with `M-x slime-abort-connection'.) [4 times]
> Connecting to Swank on port 1751.. [2 times]
> Loading cl-indent...done
> Connected. Let the hacking commence!
МК
Спасибо за советы.
Как оказалось, в GNU Emacs 22.2.1 (i386-mingw-nt5.1.2600) уже есть
CUA-опции. Внимательнее надо быть мне.
И он понимает команды С-ч, С-я и т.п. с русскими буквами.
Михаил
Alex Ott пишет:
>>>>>> "AM" == Alex Mizrahi writes:
...
Alex Mizrahi пишет:
> > ??>> а вот был бы у тебя линукс, всё работало бы из коробки :)
> > MNK> Да уж, у меня помимо много претензий к выне.
> > MNK> 1с не идет, жаль, а то б, а я б... :)
> >
> > дак никто не мешает использовать одновременно -- установи vmware
server,
> > скачай готовую вирт. машину с линуксом и пользуй, я так работаю, к
примеру.
> > только на компе желательно памяти хотя бы 1 GB, на 512 уже будет не
совсем
> > комфортно.
....
каким образом? Где взять, что (VMware Workstations или Server (бесплатный!?)
(Антиофтопик: для установки emacs, slime, sbcl в GNU/Linux и работы в
этой среде)
Основная ОС Win XP, на том же винчестере установлен дистрибутив ALT
Linux Desktop 4.0
Пробовал сегодня установить emacs, отметил все пакеты, названия которых
начинаются на 'emacs' - получил такую кашу, что emacs запускается с ошибкой.
Оставить только основные, добавляя по меренеобходимости?
Михаил
я пользуюсь vmware server -- бесплатный, и есть возможность чтобы
виртуальная машина была запущена "в фоне", мне так удобнее.
скачать готовую машину можно здесь: http://www.vmware.com/appliances/
можно, конечно, и самому установить из обычного дистрибутива.
пользоваться можно либо непосредствено наблюдая рабочий стол линукса
в консоли vmware, либо установить X window server в Windows и им
пользоваться
-- тогда можно приложения запускаемые на линуксе выводить в отдельных
окнах,
так что их "инородное" происхождение мало чем заметно. мне больше нравится
второй вариант -- работает быстро, удобно, не нужно переключаться, можно
пользоваться
буфером обмена венды. с другой стороны, графика в консоли Vmware IMHO
чуток тормозит, даже если установить драйверы vmware tools..
MNK> (Антиофтопик: для установки emacs, slime, sbcl в GNU/Linux и работы в
MNK> этой среде)
в дистрибутивах debian и ubuntu можно всё поставить через менеджер пакетов:
apt-get install emacs slime sbcl
потом настроить emacs (require 'slime, slime-setup, inferior-lisp) -- и
должно
работать..
MNK> Пробовал сегодня установить emacs, отметил все пакеты, названия
MNK> которых начинаются на 'emacs' - получил такую кашу, что emacs
MNK> запускается с ошибкой.
MNK> Оставить только основные, добавляя по меренеобходимости?
видимо да, в debian, в принципе, хватает установить один пакет "emacs"
-- там всё необходимое.