slime vs. русская локализация системы
У меня в системе утилиты пишут по-русски - при их вызове это рушит Slime. То есть, если написать:
Что с этим можно сделать? Может нужно как-то привести в соответствие кодировку SLIME и системную?
(sb-ext:process-exit-code
(sb-ext:run-program "/bin/sh" '("-c" "wget http://google.ru") :input nil :output *standard-output*))
в консоли, то всё хорошо, а если в Slime - он отваливается. Причём если вызвать что-нибудь, что не будет писать по-русски, например:(sb-ext:run-program "/bin/sh" '("-c" "wget http://google.ru") :input nil :output *standard-output*))
(sb-ext:run-program "/bin/sh" '("-c" "ls") :input nil :output *standard-output*)
то всё хорошо и там и там.Что с этим можно сделать? Может нужно как-то привести в соответствие кодировку SLIME и системную?
[#]
(setq slime-net-coding-system 'utf-8-unix) стоит в ~/.emacsrc?
Во вторых, может дело в том, что там wget со своим прогресбаром и repl'овские настройки терминала не дружат?
Во вторых, может дело в том, что там wget со своим прогресбаром и repl'овские настройки терминала не дружат?
[#] Ответ на комментарий от marsijanin 26.05.2010 08:28
>> (setq slime-net-coding-system 'utf-8-unix) стоит в ~/.emacsrc?
Сейчас посмотрю.
>> Во вторых, может дело в том, что там wget со своим прогресбаром и repl'овские настройки терминала не дружат?
Если запускать из баша - то всё ок, wget использует *standard-output* интерактивно, потом отдаёт управление REPL-у. А вот в емакс не получается.
Сейчас посмотрю.
>> Во вторых, может дело в том, что там wget со своим прогресбаром и repl'овские настройки терминала не дружат?
Если запускать из баша - то всё ок, wget использует *standard-output* интерактивно, потом отдаёт управление REPL-у. А вот в емакс не получается.
[#] Ответ на комментарий от treep 26.05.2010 08:36
>> (setq slime-net-coding-system 'utf-8-unix)
Я его зачем-то закомментировал. Теперь всё здорово, спасибо!
Я его зачем-то закомментировал. Теперь всё здорово, спасибо!
[#] Ответ на комментарий от marsijanin 26.05.2010 08:28
У меня на тему локализации стоит такое:
(set-language-environment "utf-8")
(setq slime-net-coding-system 'utf-8-unix)
В итоге Емакс кириллицу отображает, а в Слайме - квадратики. Куда копать?
(set-language-environment "utf-8")
(setq slime-net-coding-system 'utf-8-unix)
В итоге Емакс кириллицу отображает, а в Слайме - квадратики. Куда копать?
[#] Ответ на комментарий от condemetrius 26.05.2010 13:50
какая версия emacs?
должна быть 23, тогда
можно не писать
(set-language-environment "utf-8")
так тоже лучше не писать:
(setq slime-net-coding-system 'utf-8-unix)
это работает не для всех лиспов
лучше примерно так:
(setq slime-lisp-implementations
'((cmucl ("lisp" "-quiet"))
(lw ("~/LispWorksPersonal/lispworks-personal-5-1-1-x86-linux"))
(sbcl ("sbcl") :coding-system utf-8-unix)))
т.е указывается путь к образу и параметры запуска
для дефолта нужно написать:
(setq slime-default-lisp 'sbcl)
а для запуска с возможностью выбора:
C-u - M-x slime
должна быть 23, тогда
можно не писать
(set-language-environment "utf-8")
так тоже лучше не писать:
(setq slime-net-coding-system 'utf-8-unix)
это работает не для всех лиспов
лучше примерно так:
(setq slime-lisp-implementations
'((cmucl ("lisp" "-quiet"))
(lw ("~/LispWorksPersonal/lispworks-personal-5-1-1-x86-linux"))
(sbcl ("sbcl") :coding-system utf-8-unix)))
т.е указывается путь к образу и параметры запуска
для дефолта нужно написать:
(setq slime-default-lisp 'sbcl)
а для запуска с возможностью выбора:
C-u - M-x slime
[#] Ответ на комментарий от h1t 26.05.2010 15:10
Мне так кажется очень не удобным, у себя сделал так:
(defmacro define-slime-lisp (lisp path &optional coding)
(let ((funname (intern (format "%s-slime" lisp))))
`(defun ,funname ()
(interactive)
(let ((inferior-lisp-program ,path)
(slime-net-coding-system (or ,coding 'utf-8-unix)))
(slime)))))
(define-slime-lisp sbcl "/usr/bin/sbcl")
(define-slime-lisp clisp "/usr/bin/clisp -K full")
(define-slime-lisp clozure "/usr/bin/ccl")
(define-slime-lisp ecl "/usr/bin/ecl" 'iso-latin-1-unix)
(let ((funname (intern (format "%s-slime" lisp))))
`(defun ,funname ()
(interactive)
(let ((inferior-lisp-program ,path)
(slime-net-coding-system (or ,coding 'utf-8-unix)))
(slime)))))
(define-slime-lisp sbcl "/usr/bin/sbcl")
(define-slime-lisp clisp "/usr/bin/clisp -K full")
(define-slime-lisp clozure "/usr/bin/ccl")
(define-slime-lisp ecl "/usr/bin/ecl" 'iso-latin-1-unix)
Теперь в Emacs доступны команды: sbcl-slime, clisp-slime, clozure-slime и т.п.
[#] Ответ на комментарий от h1t 26.05.2010 15:10
А ты что почему возможность вставки кода в нормальном виде не пользуешься?
[#] Ответ на комментарий от archimag 26.05.2010 15:29
за ней далеко ходить нужно
и такая расцветка кода мне
не нравиться.
поэтому использую дефолтную :-)
и такая расцветка кода мне
не нравиться.
поэтому использую дефолтную :-)
[#] Ответ на комментарий от h1t 26.05.2010 15:44
> за ней далеко ходить нужно
Куда это далеко? Крайняя правая кнопка на панели инструментов. Так можно не указывать язык и тогда будет просто блок pre, с границами и фоном, но без какого-либо подсвечивания.
[#] Ответ на комментарий от archimag 26.05.2010 15:48
тест:
(setq slime-lisp-implementations
'((cmucl ("lisp" "-quiet"))
(lw ("/LispWorksPersonal/lispworksh-personal-5-1-1-x86-linux"))
(sbcl ("sbcl") :coding-system utf-8-unix)))
'((cmucl ("lisp" "-quiet"))
(lw ("/LispWorksPersonal/lispworksh-personal-5-1-1-x86-linux"))
(sbcl ("sbcl") :coding-system utf-8-unix)))
функционал тот же что и у тебя.
твой подход мне пригодился бы
только в случае использования этих
функций в коде.
[#]
Подскажите, пожалуйста, есть почти аналогичная проблема, как у автора:
1. Используется Sublime с билдом для запуска:
{
"shell_cmd": "/usr/local/bin/rlwrap sbcl --load $file",
"working_dir": "$file_path"
}
2. Нормально запускаются из Sublime только файлы без кириллицы к пути и в коде.
3. Emacs, по всей видимости, у меня не используется, на создание ~/.emacsrc с указанными конфигурациями - ни холодно, ни жарко.
Есть ли способы привести в чувства Sublime с использованием кириллических символов?
[#] Ответ на комментарий от andrew_21_12 09.10.2015 08:40
Разобрался. Проблема решается добавлением в билд строчки:
"env": {"LANG": "en_US.UTF-8"}