Регистрация | Войти
Lisp — программируемый язык программирования
.emacs
Jay S Jay - 16.11.2011 17:57, Сообщений - 23
Добрый день.
Вчера решил программировать в Lisp.
У меня очень простой вопрос: как создать файл C:/.emacs в windows? 
PS. Пожалуйста не рекомендуйте мне бросить это занятие.
[#]
Запускаешь емакс, потом нажимая и удерживая Control нажимаешь х. Потом тоже самое c Control+f. Эта комбинация обозначается как: C-x C-f.

Вводишь имя файла и жмешь Enter.
lithp - 16.11.2011 18:54
[#]
А лучше начать с встроенного в емакс туторила. Запускать как: C-h t
lithp - 16.11.2011 18:56
[#]
На виндовсе емакс вряд ли будет читать пользовательскую конфигурацию из C:/.emacs. 

Если только не экспортировать HOME=c:/

Лучше при открытии файла конфигурации набрать: ~/.emacs
lithp - 16.11.2011 18:59
[#]
Вот годная статья по настройке slime в виндовсе: http://habrahabr.ru/blogs/lisp/131418/
power - 16.11.2011 19:04
[#]
В папке  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
bach74 - 16.11.2011 20:02
[#] Ответ на комментарий от bach74 16.11.2011 20:02
(setf common-lisp-hyperspec-root "file:/usr/local/CLHS/")

setf надо на setq заменить
bach74 - 16.11.2011 20:04
[#]
Ого! Спасибо за ответы. Активное сообщество уже аргумент для продолжения изучения среды разработки. Оказывается я начинал не с той стороны. Прочитаю мануал и попробую всё настроить.
Jay S Jay - 17.11.2011 10:26
[#]
Здравствуйте ещё раз.
Всё настроил по статье с хабра, только конфигурационный файл создал по инструкциям lithp, убрал cua-mode, так что все посты помогли, спасибо ещё раз.
Единственная проблема, quicklisp установился в нормально (ставлю его из Emacs сразу) но вот прописываться в конфигурации ((ql:add-to-init-file)) он отказывается. Никаких ошибок после ввода этой строки не возвращает, но и приглашения для след. команды не появляется.
В общем это не критично пока и не мешает изучать язык.
Jay S Jay - 18.11.2011 13:10
[#] Ответ на комментарий от Jay S Jay 18.11.2011 13:10
(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)))

можешь это вручную сделать. Но вообще странно что он у тебя не выполнился :/
Как ты запускаешь эту фунцию?
power - 18.11.2011 13:44
[#] Ответ на комментарий от power 18.11.2011 13:44
Пробовал так:
(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]
Jay S Jay - 18.11.2011 14:27
[#] Ответ на комментарий от Jay S Jay 18.11.2011 14:27
Да что ж такое. Создал вручную ~/.sbclrc теперь при попытке запуска messagebox.lisp получаю:
Cannot save core with multiple threads running.
   [Condition of type SIMPLE-ERROR]
Jay S Jay - 18.11.2011 14:36
[#] Ответ на комментарий от Jay S Jay 18.11.2011 14:27
У тебя quicklisp не установился, либо по какой-то причине не загружается.
(load "quicklisp.lisp") - так ты его не загрузишь. Сама библиотека должна лежать в ~/quicklisp.
В файле quicklisp.lisp просто функции для скачивания и установки пакета. Отсюда и ошибка package "QL" not found.
power - 18.11.2011 15:50
[#] Ответ на комментарий от Jay S Jay 18.11.2011 14:36
Запускай из командной строки sbcl --load messagebox.lisp, либо закомментируй последнюю строчку с sb-ext:save-lisp-and-die. Ее в slime нет смысла запускать :)
power - 18.11.2011 15:55
[#] Ответ на комментарий от power 18.11.2011 15:55
В общем, если следовать инструкциям в статье love5an по порядку, все должно работать.
power - 18.11.2011 15:58
[#] Ответ на комментарий от Jay S Jay 18.11.2011 14:36
А какая сборка sbcl? И ставь sbcl в какую-нибудь папку типа c:/sbcl/
bach74 - 18.11.2011 21:56
[#] Ответ на комментарий от power 18.11.2011 15:58
Из командной строки всё запускается.
Заново попробую, думаю всё получится, энивей на ноут ставить.
Сорри за тупые вопросы, после других IDE привык что всё разворачивается за тебя и думать не надо.
Jay S Jay - 18.11.2011 23:18
[#] Ответ на комментарий от bach74 18.11.2011 21:56
Сборка 1.0.53.31.
Ставил именно туда.
Jay S Jay - 18.11.2011 23:19
[#] Ответ на комментарий от Jay S Jay 18.11.2011 23:19
я ставлю многопоточную исключительно отсюда http://www.siftsoft.com/inprogress/sbcl-notes.html

В общем-то только сначала будет сложно, а потом повторно все устанавливаешь без каких-либо проблем, когда знаешь.
bach74 - 21.11.2011 12:37
[#]
Если остались какие-то проблемы с ненайденными .sbclrc или init.el - см. вот этот коммент к той статье на хабре:
http://habrahabr.ru/blogs/lisp/131418/#comment_4446659

Дело в том, что я забыл указать одну важную вещь  - для правильной работы Emacs и SLIME нужно установить переменную среды HOME в значение пути к своей домашней директории пользователя.
Love5an - 04.12.2011 04:09
[#] Ответ на комментарий от Love5an 04.12.2011 04:09
Добавлю свои 5 коп.:
Для того чтобы не было неразберихи с домашними папками в windows, и дефолтная директория для поиска файлов совпадала с Emacs home не только при указании "~". Нужно сделать одно из 3 изменений:
- если вы выбрали установить emacs через addpm, укажите в св-вах ярлыка Рабочую папку совпадающую с Emacs home.
- (cd "C:/EmacsHome/") в .emacs или init.el
- (setq default-directory "C:/EmacsHome/" ) в .emacs или init.el
Jay S Jay - 29.12.2011 16:36
[#] Ответ на комментарий от Jay S Jay 29.12.2011 16:36
т.е. например c:/users/username/emacshome в environment variable HOME и то же самое, но в виндоус формате (c:\users\username\ emacshome)  в поле "Рабочая папка" ярлыка emacs в меню пуск после установки.
Jay S Jay - 29.12.2011 17:17
[#] Ответ на комментарий от Jay S Jay 29.12.2011 17:17
Только при установке quicklisp (quicklisp-quickstart:install) не забудьте указать тот же путь в качестве аргумента :path. У меня  по умолчанию всегда устанавливался в С:/users/username и файл .sbclrc.
Jay S Jay - 30.12.2011 13:23
[#] Ответ на комментарий от Jay S Jay 30.12.2011 13:23
...приходилось в ручную переносить.
Jay S Jay - 30.12.2011 13:24
@2009-2013 lisper.ru