Регистрация | Войти
Lisp — программируемый язык программирования
RSS
Завершение строки CRLF
ciril - 16.03.2018 18:12, Сообщений - 14
Подскажите, пожалуйста, как добиться того, чтобы связка Win7-x64 + Emacs 25.3.1 + SBCL 1.4.0 + Slime 2.20  читала и писала с DOS завершением строки.
Как пример:
(let ((o-file (open (make-pathname :defaults *default-pathname-defaults* :name "tst" :type "txt")
                :direction :output :if-does-not-exist :create :if-exists :supersede :external-format :windows-1250)))
         (write-line "Test line" o-file)
         (format o-file "~%~s~%" o-file)
         (close o-file))
в завершение строки 0x0a

Часть .emacs, имеющая отношения к кодировке:
(setq slime-lisp-implementations '((sbcl ("C:/sbcl/sbcl") :coding-system binary))
      slime-net-coding-system 'binary)

(set-language-environment "Cyrillic-ISO")
(setq default-input-method 'russian-computer
      locale-coding-system 'utf-8-dos
      default-process-coding-system '(utf-8-dos . utf-8-dos)
      default-enable-multibyte-characters t)
(set-selection-coding-system 'utf-8-dos)
(set-default-coding-systems 'utf-8-dos)
(prefer-coding-system 'utf-8-dos)
(set-terminal-coding-system 'utf-8-dos)

Уже не знаю,что и куда добавить.
[#]
Имеется ввиду буфер в Emacs (т.е. исходники) или запись программой чего-то в файл?
В буферах не указано значение default-buffer-file-coding-system.
Если речь про запись в файл, то можно попробовать использовать ~C вместо ~% в шаблоне format'а по мотивам https://stackoverflow.com/questions/2619172/common-lisps-equivalent-of-r-inside-the-format-function и посмотреть, что дают return и linefeed вместо newline.
EO - 16.03.2018 23:17
[#] Ответ на комментарий от EO 16.03.2018 23:17
https://bugs.launchpad.net/sbcl/+bug/310185

den73 - 17.03.2018 01:15
[#]
Речь была про запись в файл, обходное решение, оно, конечно, да, только уж совсем обходное, в сложных format добавлять \newline - ... ... и ..., да и при чтении из файла тоже лишние телодвижения.
Ну баг, так баг, когда-нибудь исправят.
ciril - 17.03.2018 11:53
[#] Ответ на комментарий от ciril 17.03.2018 11:53
Сапсибо!
ciril - 17.03.2018 11:53
[#]
Для этого есть де-факто стандартная библиотека - flexi-streams
flexi-streams:*default-eol-style*
flyamt - 17.03.2018 19:17
[#] Ответ на комментарий от flyamt 17.03.2018 19:17
Спасибо!
ciril - 20.03.2018 10:22
[#] Ответ на комментарий от flyamt 17.03.2018 19:17
Круто, не знал! А как её воткнуть в SLIME? 
den73 - 20.03.2018 11:27
[#] Ответ на комментарий от den73 20.03.2018 11:27
Посмотри в rpc.lisp из состава swank-а. Там преобразование текста в последовательность байтов делается аналогично flexi.
flyamt - 20.03.2018 13:18
[#] Ответ на комментарий от ciril 17.03.2018 11:53

Ну баг, так баг, когда-нибудь исправят.
Не исправят. Sbcl изначально создавался как реализация для сообщества в котором уже есть и будут несколько других реализаций. И по сложившейся практике поддержка функциональности в  внешней переносимой библиотеке предпочтительнее  дублирования этого кода внутри самого Sbcl.
flyamt - 20.03.2018 15:10
[#] Ответ на комментарий от flyamt 20.03.2018 15:10
Slime и CFFI, например, демонстрируют тот же подход.
flyamt - 20.03.2018 15:16
[#] Ответ на комментарий от flyamt 20.03.2018 15:10
Тогда неплохо бы убрать его с вершины списка, что ли. В противном случае возникает мысль, что всем просто пофиг :) 
Но я примерно понял, спасибо!
den73 - 20.03.2018 18:31
[#] Ответ на комментарий от den73 20.03.2018 18:31
Список формируется неясными внутреностями lauchpad-а.
Непофиг это статус
Critical: We don't want a release where this isn't fixed. Typically reserved for bugs that would Critical: We don't want a release where this isn't fixed. Typically reserved for bugs that would
такие все закрыты
А то что мы обсуждаем озаглавдено

wanted: newline policies in external formats
Importance:High

Что согласно схеме кодирования имени Nikodimus
- Features: tag with "feature", use a subject line starting with "wanted: ...", classify Importance according to the guidelines below.
High: Not new a new feature, but a missing one. Something we should have had ages ago.

а остальном всем яcное дело пофиг. Даже не сомневайся:)
flyamt - 20.03.2018 19:53
[#] Ответ на комментарий от flyamt 20.03.2018 19:53
Why? Even if we don't fix items in order of importance, it is good to be able to signal to users how important we consider something.
For example, missing newline policies on external formats would classify as High. It's something we should have, but don't.
flyamt - 20.03.2018 19:57
[#] Ответ на комментарий от flyamt 20.03.2018 19:53
Поправка Critical: We don't want a release where this isn't fixed. Typically reserved for bugs that would otherwise be classified as High, but are regressions to boot.
flyamt - 20.03.2018 20:18
@2009-2013 lisper.ru