Регистрация | Войти
Lisp — программируемый язык программирования
RSS
slime vs. русская локализация системы
treep - 26.05.2010 08:17, Сообщений - 12
У меня в системе утилиты пишут по-русски - при их вызове это рушит 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" "ls") :input nil :output *standard-output*)
то всё хорошо и там и там.

Что с этим можно сделать? Может нужно как-то привести в соответствие кодировку SLIME и системную?
[#]
(setq slime-net-coding-system 'utf-8-unix) стоит в ~/.emacsrc?

Во вторых, может дело в том, что там wget со своим прогресбаром и repl'овские настройки терминала не дружат?
marsijanin - 26.05.2010 08:28
[#] Ответ на комментарий от marsijanin 26.05.2010 08:28
>> (setq slime-net-coding-system 'utf-8-unix) стоит в ~/.emacsrc?

Сейчас посмотрю.

>> Во вторых, может дело в том, что там wget со своим прогресбаром и repl'овские настройки терминала не дружат?


Если запускать из баша - то всё ок, wget использует *standard-output* интерактивно, потом отдаёт управление REPL-у. А вот в емакс не получается.
treep - 26.05.2010 08:36
[#] Ответ на комментарий от treep 26.05.2010 08:36
>> (setq slime-net-coding-system 'utf-8-unix)

Я его зачем-то закомментировал. Теперь всё здорово, спасибо!
treep - 26.05.2010 08:39
[#] Ответ на комментарий от marsijanin 26.05.2010 08:28
У меня на тему локализации стоит такое:

(set-language-environment "utf-8")
(setq slime-net-coding-system 'utf-8-unix)

В итоге Емакс кириллицу отображает, а в Слайме - квадратики. Куда копать?
condemetrius - 26.05.2010 13:50
[#] Ответ на комментарий от 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
h1t - 26.05.2010 15:10
[#] Ответ на комментарий от 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)

Теперь в Emacs доступны команды: sbcl-slime, clisp-slime, clozure-slime и т.п.
archimag - 26.05.2010 15:28
[#] Ответ на комментарий от h1t 26.05.2010 15:10
А ты что почему возможность вставки кода в нормальном виде не пользуешься?
archimag - 26.05.2010 15:29
[#] Ответ на комментарий от archimag 26.05.2010 15:29
за ней далеко ходить нужно
и такая расцветка кода мне
не нравиться.
поэтому использую дефолтную :-)
h1t - 26.05.2010 15:44
[#] Ответ на комментарий от h1t 26.05.2010 15:44
> за ней далеко ходить нужно

Куда это далеко? Крайняя правая кнопка на панели инструментов. Так можно не указывать язык и тогда будет просто блок pre, с границами и фоном, но без какого-либо подсвечивания.
archimag - 26.05.2010 15:48
[#] Ответ на комментарий от 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)
)
)

функционал тот же что и у тебя.
твой подход мне пригодился бы
только в случае использования этих
функций в коде.

h1t - 26.05.2010 16:00
[#]
Подскажите, пожалуйста, есть почти аналогичная проблема, как у автора:
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
[#] Ответ на комментарий от andrew_21_12 09.10.2015 08:40
Разобрался. Проблема решается добавлением в билд строчки:

"env": {"LANG": "en_US.UTF-8"}
andrew_21_12 - 09.10.2015 12:24
@2009-2013 lisper.ru