(setq slime-net-coding-system 'utf-8-unix)(quail-define-package
"cyrillic-jcuken" "Cyrillic" "RU" nil
"ЙЦУКЕH keyboard layout widely used in Russia (ISO 8859-5 encoding)"
nil t t t t nil nil nil nil nil t)
(quail-define-rules
("1" ?1) ("2" ?2) ("3" ?3) ("4" ?4) ("5" ?5) ("6" ?6) ("7" ?7) ("8" ?8)
("9" ?9) ("0" ?0) ("-" ?-) ("=" ?=) ("`" ?ё) ("q" ?й) ("w" ?ц) ("e" ?у)
("r" ?к) ("t" ?е) ("y" ?н) ("u" ?г) ("i" ?ш) ("o" ?щ) ("p" ?з) ("[" ?х)
("]" ?ъ) ("a" ?ф) ("s" ?ы) ("d" ?в) ("f" ?а) ("g" ?п) ("h" ?р) ("j" ?о)
("k" ?л) ("l" ?д) (";" ?ж) ("'" ?э) ("\\" ?\\) ("z" ?я) ("x" ?ч) ("c" ?с)
("v" ?м) ("b" ?и) ("n" ?т) ("m" ?ь) ("," ?б) ("." ?ю) ("/" ?.) ("!" ?!)
("@" ?\") ("#" ?#) ("$" ?\;) ("%" ?%) ("^" ?:) ("&" ??) ("*" ?*) ("(" ?()
(")" ?)) ("_" ?_) ("+" ?+) ("~" ?Ё)
("Q" ?Й) ("W" ?Ц) ("E" ?У) ("R" ?К) ("T" ?Е) ("Y" ?Н) ("U" ?Г) ("I" ?Ш)
("O" ?Щ) ("P" ?З) ("{" ?Х) ("}" ?Ъ) ("A" ?Ф) ("S" ?Ы) ("D" ?В) ("F" ?А)
("G" ?П) ("H" ?Р) ("J" ?О) ("K" ?Л) ("L" ?Д) (":" ?Ж) ("\"" ?Э) ("|" ?/)
("Z" ?Я) ("X" ?Ч) ("C" ?С) ("V" ?М) ("B" ?И) ("N" ?Т) ("M" ?Ь) ("<" ?Б)
(">" ?Ю) ("?" ?,))
> Толи в Lisp in Box Emacs старинный,
Угу, "21ый" там emacs. А сейчас уже "23ий" официальный стабильный. :)
Под windows:
1. Скачиваем emacs от сюда: http://ftp.gnu.org/pub/gnu/emacs/windows/emacs-23.1-bin-i386.zip
2. SLIME от сюда http://common-lisp.net/project/slime/snapshots/slime-current.tgz
3. Директорию /slime из пункта два помещаем в директорию /site-lisp emacs'а (который скачали и разпаковали в пункте 1)
Далее на примере CLISP (так как именно его я "прикручивал" к emacs).
4. Берем CLISP тут https://sourceforge.net/project/platformdownload.php?group_id=1355&sel_platform=8418
5. Создаем файл C:/.emacs ("точка" перед словом emacs) и в него помещаем такое
(setq inferior-lisp-program "d:/lang/clisp/full/lisp.exe -B d:/lang/clisp/full -M d:/lang/clisp/full/lispinit.mem -ansi -q")
(require 'slime)
(slime-setup '(slime-repl))
Пути к clisp прописать свои.
Все. Запускаем emacs, делаем "M+x slime" и должно работать =)
Скорее всего (другого не знаю) в .emacs в этой строке
(setq inferior-lisp-program "d:/lang/clisp/full/lisp.exe -B d:/lang/clisp/full -M d:/lang/clisp/full/lispinit.mem -ansi -q")
пути к clisp не так прописаны, как нужно. Что там сейчас значится? И куда поставился clisp в системе?
(require 'slime)
(slime-setup '(slime-repl))
Идеи закончились. Я попробывал все поставить на диске C: как вы описали, у меня все работает...
Где я проблему вижу -- прописать правильно параметры вызова к clisp. У меня тоже были ошибки "Process inferior-lisp exited abnormally". Исправил как раз тем, что прописал переменную inferior-lisp-program так как я выше описал...
Как вариант, запустить из командной строки (с терминала) в Windows CLISP через
"c:/emacs/clisp-2.48/full/lisp.exe -B c:/emacs/clisp-2.48/full -M c:/emacs/clisp-2.48/full/lispinit.mem -ansi -q"
и посмортеть что будет
У меня всё работает: emacs-23.1-bin-i386, slime-current, clisp-2.48.
Картинка вот:
(add-to-list 'load-path "~/lisp/clisp/")
(load "clisp-coding.el");; Добавляет utf8
(require 'clisp-indent)
(setq inferior-lisp-program "C://Program Files//clisp-2.48//clisp.exe") ; Lisp system
(setf slime-lisp-implementations '((clisp ("C://Program Files//clisp-2.48//clisp.exe" "-L russian") :coding-system utf-8-unix )));
(add-to-list 'load-path "~/lisp/slime-2009-11-18/") ; SLIME directory
(require 'slime-autoloads)
(slime-setup '(slime-fancy))
(setq initial-frame-alist '((top . 0) (left . 20) (width . 120) (height . 47) (font . "-*-DejaVu LGC Sans mono-normal-r-*-*-16-*-*-*-c-*-iso10646-1")))
(setq default-frame-alist '((top . 10) (left . 20) (width . 120) (height . 47) (font . "-*-DejaVu LGC Sans mono-normal-r-*-*-16-*-*-*-c-*-iso10646-1")))
(setq frame-title-format 'buffer-file-name) ; set file name as frame title
(set-language-environment 'UTF-8)
(setq default-input-method 'russian-computer)
(set-selection-coding-system 'utf-16le-dos)
(set-default-coding-systems 'windows-1251)
(prefer-coding-system 'windows-1251)
(setq default-process-coding-system '(cp866 . cp866))
(set-terminal-coding-system 'cp866)
Вот ссылка на картинку: http://picasaweb.google.com/lh/photo/QmzEJE0dwTYZTCKWZeVsNA?feat=directlink
И что особенно важно для начинающих, сообщения об ошибке тоже печатаются по русски(пока не все, конечно):
EVAL: функция ЕУЕ не определена
[Condition of type SYSTEM::SIMPLE-UNDEFINED-FUNCTION]
Restarts:
0: [USE-VALUE] Input a value to be used instead of (FDEFINITION 'ЕУЕ).
1: [RETRY] Еще раз
2: [STORE-VALUE] Input a new value for (FDEFINITION 'ЕУЕ).
3: [RETRY] Retry SLIME REPL evaluation request.
4: [ABORT] Return to SLIME's top level.
5: [ABORT] Abort
--more--
Backtrace:
0: [467] переменные связанные во фрейме (~ = динамически):
| ~ SWANK::*SWANK-STATE-STACK* <--> NIL
1: [464] переменные связанные во фрейме (~ = динамически):
| ~ SWANK::*SLDB-STEPPING-P* <--> NIL
2: [461] переменные связанные во фрейме (~ = динамически):
| ~ SWANK::*SLDB-LEVEL* <--> 0
3: [458] переменные связанные во фрейме (~ = динамически):
| ~ *PACKAGE* <--> #<PACKAGE COMMON-LISP-USER>
4: <1/451> #<COMPILED-FUNCTION SWANK::DEBUG-IN-EMACS>
[450] переменные связанные во фрейме (~ = динамически):
| ~ SWANK::*SLIME-INTERRUPTS-ENABLED* <--> T
5: <1/444> #<COMPILED-FUNCTION SWANK:INVOKE-SLIME-DEBUGGER>
- #<COMPILED-FUNCTION SWANK::SWANK-DEBUGGER-HOOK-2-1>
6: <1/442> #<COMPILED-FUNCTION SWANK::SWANK-DEBUGGER-HOOK-2-1>
- #<COMPILED-FUNCTION SWANK::SWANK-DEBUGGER-HOOK-2-1>
7: [441] переменные связанные во фрейме (~ = динамически):
| ~ *DEBUGGER-HOOK* <--> NIL
Цветные строки, я думаю, можно сделать если в .emacs вместо
(slime-setup '(slime-repl))
указать
(slime-setup '(slime-fancy))
:-)
Pirr я же привёл свой конфиг.
Вот так включается русский в clisp:
(setf slime-lisp-implementations '((clisp ("C://Program Files//clisp-2.48//clisp.exe" "-L russian") :coding-system utf-8-unix ))).
То, что написал Artem, я не делал, пока не понял, зачем это надо, раз у меня и так работает:
(setq inferior-lisp-program "C://Program Files//clisp-2.48//clisp.exe").
И ещё, все параметры для запуска можно писать как раз в slime-lisp-implementations, там где у меня только "-L russian" прописано.
> Только не получилось сделать автозагрузку Slime.
В конце файла .emacs добавить строку
(slime)
Только это "автозапуск" скорее :)
Pirr, а путь к slime прописали? (add-to-list 'load-path "~/lisp/slime-2009-11-18/") ; SLIME directory
должен стоять до вызова (require 'slime-autoloads).
> Если в конце конфига записать (slime) то SLIME запускается, но окно Emasc делится пополам и SLIME грузится в нижнем окне, что не совсем удобно.
Я ведь не знаю ваш изначальный .emacs конфиг и ваши познания в emacs. Чтобы не "делилось" пополам, в самом начале .emacs файла добавьте такую строку
(setq inhibit-splash-screen t)
:-)
Polling "c:/Users/A4F7~1/AppData/Local/Temp/slime.3940".. (Abort with `M-x slime-abort-connection'.) [5 times]
Connecting to Swank on port 49160.. [2 times]
Lisp connection closed unexpectedly: connection broken by remote peer
В буфер "*inferior-lisp*" среди всего прочего выводятся несколько WARNING:..., все завершается примерно так:
WARNING: These Swank interfaces are unimplemented: ..тут всякое.....
;; Swank started at port: 54776.
CL-USER>
;; swank:close-connection:
WRITE-STRING: Character #\u0410 cannot be represented in the character set CHARSET:ISO-8859-1
потом начинается блок
;; Event history start: ....тут всякое.... ;; Event history end:
потом идет блок ::backtrace, который завершается этим:
;; Connection to Emacs lost. [
;; condition: WRITE-STRING: Character #\u0410 cannot be represented in the character set CHARSET:ISO-8859-1
;; type: SIMPLE-CHARSET-TYPE-ERROR
;; encoding: #<ENCODING ISO-8859-1 UNIX> style: NIL dedicated: NIL]
;; swank:close-connection: NIL
54776
после чего приглашение, в которое можно вводить лисп:
[2]>
файл .emacs такой:
(setq inferior-lisp-program "d:/clisp/full/lisp.exe -B d:/clisp/full -M d:/clisp/full/lispinit.mem -ansi -q")
(require 'slime)
(slime-setup '(slime-fancy))
(tool-bar-mode 0)
вот содержимое буфера: http://narod.ru/disk/17499998000/inferior-lisp.txt.html
2optimistic:
С кодировками проблема при конвертации из unicode в iso-8859-1. Я в emacs'е русским языком не пользуюсь вообще (никогда не было необходимости еще), поэтому подсказать ничего не могу. У меня тоже "вылетает" так же как и у вас, если я попробую русские буквы ввести в приглашение REPL'а.
Поэтому на мои инструкции выше нужно сделать замечание -- русский язык в такой конфигурации не работает, нужны для этого дополнительные действия. :)
(setq slime-net-coding-system 'utf-8-unix)
Вычитал в мануале к slime.
Можно ли будет задавать вопросы по emacs в этот форум?
Странно, вроде и конфиг выложил в этом треде, и скриншот в подтверждение, и всё равно народ не читает и снова спрашивает про кодировки.
Кстати, конфиг artem'а вреден для новичков под виндой, тк запутывает только. Новичку нафиг не нужно указывать образ(достаточно запустить clisp.exe, он сам всё знает), увеличивать ansi cl compliance и подавлять сообщения компиляции.