← Архив: SLIME

.emacs

Author: · 16.11.2011 13:57
· original author: Jay S Jay
Добрый день.Вчера решил программировать в Lisp.
У меня очень простой вопрос: как создать файл C:/.emacs в windows? 
PS. Пожалуйста не рекомендуйте мне бросить это занятие.
· original author: lithp
Запускаешь емакс, потом нажимая и удерживая Control нажимаешь х. Потом тоже самое c Control+f. Эта комбинация обозначается как: C-x C-f.
Вводишь имя файла и жмешь Enter.
· original author: lithp
А лучше начать с встроенного в емакс туторила. Запускать как: C-h t
· original author: lithp
На виндовсе емакс вряд ли будет читать пользовательскую конфигурацию из C:/.emacs. 
Если только не экспортировать HOME=c:/
Лучше при открытии файла конфигурации набрать: ~/.emacs
· original author: power
Вот годная статья по настройке slime в виндовсе: http://habrahabr.ru/blogs/lisp/131418/
· original author: bach74
В папке  emacs/site-lisp/
создаешь файл site-start.el, куда
пишешь строчку
(setenv "HOME" "c:/home/").
В этом случае папка home станет домашней и в ней можно заводить файл .emacs с конфигурацией.
Если будешь использовать http://habrahabr.ru/blogs/lisp/131418/,
то не советую ставить cua-mode.
можно сделать также локальную копию HypesSpec
If you already use the hyperspec.el utility (included with SLIME and ILISP distributions, but usable on its own), the Emacs browse-hyperdoc command will automatically defer to the Common Lisp HyperSpec when given a non-GBBopen entity. You can also download and install a local copy of the Common Lisp HyperSpec for use without a network connection. In this case, set the value of common-lisp-hyperspec-root in your .emacs initialization file to point to your local copy of the HyperSpec. For example:
(setf common-lisp-hyperspec-root "file:/usr/local/CLHS/") взято отсюда http://gbbopen.org/hyperdoc/index.html
· original author: bach74
(setf common-lisp-hyperspec-root "file:/usr/local/CLHS/")
setf надо на setq заменить
· original author: Jay S Jay
Ого! Спасибо за ответы. Активное сообщество уже аргумент для продолжения изучения среды разработки. Оказывается я начинал не с той стороны. Прочитаю мануал и попробую всё настроить.
· original author: Jay S Jay
Здравствуйте ещё раз.Всё настроил по статье с хабра, только конфигурационный файл создал по инструкциям lithp, убрал cua-mode, так что все посты помогли, спасибо ещё раз.
Единственная проблема, quicklisp установился в нормально (ставлю его из Emacs сразу) но вот прописываться в конфигурации ((ql:add-to-init-file)) он отказывается. Никаких ошибок после ввода этой строки не возвращает, но и приглашения для след. команды не появляется.
В общем это не критично пока и не мешает изучать язык.
· original author: power
(ql:add-to-init-file) дописывает в файл ~/.sbclrc строки:
;;; The following lines added by ql:add-to-init-file:
#-quicklisp
(let ((quicklisp-init (merge-pathnames "quicklisp/setup.lisp"
(user-homedir-pathname))))
(when (probe-file quicklisp-init)
(load quicklisp-init)))
можешь это вручную сделать. Но вообще странно что он у тебя не выполнился :/
Как ты запускаешь эту фунцию?
· original author: Jay S Jay
Пробовал так:
(load "quicklisp.lisp")
пишет что всё ок
(quicklisp-quickstart:install)

пишет что установлен
(ql:add-to-init_file)
на этой операции просто зависает
Странно, нашёл у себя ~/.sbсlrc но не в той директории, там уже были прописаны эти строки (возможно когда я из REPL его ставил прописалось) Проблема в том что даже если вручную каждый раз подгружать библиотеки, скрипт:
(load "quicklisp.lisp")
(load "messagebox.lisp") - это он ниже:
(ql:quickload :cffi) (cffi:load-foreign-library "user32.dll") (defun main () (cffi:foreign-funcall "MessageBoxW" :pointer (cffi:null-pointer) (:string :encoding :utf-16le) "SBCL на Windows это просто!" (:string :encoding :utf-16le) "Сообщение" :int #x40 :boolean)) (sb-ext:save-lisp-and-die "my-program.exe" :executable t :toplevel #'main)
Возвращает:

READ failure in COMPILE-FILE: package "QL" not found Line: 1, Column: 11, File-Position: 11 Stream: #<SB-SYS:FD-STREAM for "file c:\\messagebox.lisp" {2408BC69}> [Condition of type SB-C::INPUT-ERROR-IN-COMPILE-FILE]
· original author: Jay S Jay
Да что ж такое. Создал вручную ~/.sbclrc теперь при попытке запуска messagebox.lisp получаю:Cannot save core with multiple threads running.
   [Condition of type SIMPLE-ERROR]
· original author: power
У тебя quicklisp не установился, либо по какой-то причине не загружается.
(load "quicklisp.lisp") - так ты его не загрузишь. Сама библиотека должна лежать в ~/quicklisp.
В файле quicklisp.lisp просто функции для скачивания и установки пакета. Отсюда и ошибка package "QL" not found.
· original author: power
Запускай из командной строки sbcl --load messagebox.lisp, либо закомментируй последнюю строчку с sb-ext:save-lisp-and-die. Ее в slime нет смысла запускать :)
· original author: power
В общем, если следовать инструкциям в статье love5an по порядку, все должно работать.
· original author: bach74
А какая сборка sbcl? И ставь sbcl в какую-нибудь папку типа c:/sbcl/
· original author: Jay S Jay
Из командной строки всё запускается.Заново попробую, думаю всё получится, энивей на ноут ставить.
Сорри за тупые вопросы, после других IDE привык что всё разворачивается за тебя и думать не надо.
· original author: Jay S Jay
Сборка 1.0.53.31.Ставил именно туда.
· original author: bach74
я ставлю многопоточную исключительно отсюда http://www.siftsoft.com/inprogress/sbcl-notes.html
В общем-то только сначала будет сложно, а потом повторно все устанавливаешь без каких-либо проблем, когда знаешь.
· original author: Love5an
Если остались какие-то проблемы с ненайденными .sbclrc или init.el - см. вот этот коммент к той статье на хабре:http://habrahabr.ru/blogs/lisp/131418/#comment_4446659
Дело в том, что я забыл указать одну важную вещь  - для правильной работы Emacs и SLIME нужно установить переменную среды HOME в значение пути к своей домашней директории пользователя.
· original author: Jay S Jay
Добавлю свои 5 коп.:Для того чтобы не было неразберихи с домашними папками в windows, и дефолтная директория для поиска файлов совпадала с Emacs home не только при указании "~". Нужно сделать одно из 3 изменений:
- если вы выбрали установить emacs через addpm, укажите в св-вах ярлыка Рабочую папку совпадающую с Emacs home.
- (cd "C:/EmacsHome/") в .emacs или init.el
- (setq default-directory "C:/EmacsHome/" ) в .emacs или init.el
· original author: Jay S Jay
т.е. например c:/users/username/emacshome в environment variable HOME и то же самое, но в виндоус формате (c:\users\username\ emacshome)  в поле "Рабочая папка" ярлыка emacs в меню пуск после установки.
· original author: Jay S Jay
Только при установке quicklisp (quicklisp-quickstart:install) не забудьте указать тот же путь в качестве аргумента :path. У меня  по умолчанию всегда устанавливался в С:/users/username и файл .sbclrc.
· original author: Jay S Jay
...приходилось в ручную переносить.