(to-customize (to-install Common-Lisp-IDE))
Доброго времени суток, уважаемый читатель! Перед каждым новичком в мире языка программирования Common Lispвозникает проблема выбора среды разработки — Integrated Development Environment (далее, IDE).Существует большое количество IDE для Common Lisp. Перечислим некоторые, самые распространенные, из них:
Для Знатоков Знатоки могут возразить относительно последних двух пунктов списка.Ведь, казалось бы, Lispbox = Emacs + Slime?! Но, если внимательно посмотреть на сайт Lispbox, то, под ссылками для скачивания пакета, Вы увидите: Last updated: February 6, 2011.
В данной статье я подробно расскажу как установить и настроить кроссплатформенную среду разработки для Common Lisp, как скачивать и устанавливать дополнительные библиотеки при помощи quicklisp — менеджера пакетов Common Lisp. Будет много полезных ссылок на ресурсы и материалы по языку.Речь пойдет о связке GNU Emacs & Slime.Если Вас интересует Common Lisp, Вам нужна кроссплатформенная, мощная, интерактивная Common Lisp IDE с блэкджеком и дамами дебаггером и дизассемблером (внезапно!), то, прошу под кат… Common Lisp — ANSI стандартизированный язык программирования, не имеющий единой канонической реализации.Приведу список основных реализаций: Нам нужна кроссплатформенная, свободная, автивно развивающаяся реализация Common Lisp. Я выбрал SBCL.Итак, начнем!!! MS Windows Создаем директорию для GNU Emacs по адресу: C:\emacs\ Создаем директорию для SBCL по адресу: C:\sbcl\ Скачиваем последнюю версию GNU Emacs и распаковываем в директорию C:\emacs\ Скачиваем дистрибутив SBCL и устанавливаем в директорию C:\sbcl\ Заходим в директорию с GNU Emacs (C:\emacs\bin\), находим addpm.exe и запускаем его (добавит иконку запуска Emacs в меню Пуск) Редактируем переменные окружения: Создаем переменную окружения с названием HOME и значениемC:\Users\%username%\, где %username% — имя Вашей учетной записи Создаем переменную окружения с названием PATH и значением C:\emacs\bin\ Создаем пустой файл с названием .emacs в C:\Users\%username%\ Создаем пустую директорию C:\Users\%username%\.quicklisp\ Скачиваем файл quicklisp.lisp и размещаем его в директорию C:\Users\%username%\.quicklisp\ GNU/Linux Устанавливаем GNU Emacs: sudo aptitude install emacs sudo aptitude install emacs-goodies-el sudo aptitude install emacs24-el sudo aptitude install emacsen-common sudo aptitude install org-mode sudo aptitude install dict sudo aptitude install dict-freedict-eng-rus Устанавливаем SBCL: sudo aptitude install sbcl sudo aptitude install cl-clx-sbcl Создаем пустой файл с названием .emacs в домашней директории ~/ Создаем пустую директорию ~/.quicklisp/ Скачиваем файл quicklisp.lisp и размещаем его в директорию ~/.quicklisp/ Пора настроить Emacs для профессиональной работы с Common Lisp проектами.Предупреждение Вся дальнейшая ребота по настройке системы будет проходить в GNU Emacs.Все, что приведено ниже относится и к MS Windows и к GNU/Linux.Подразумевается владение основами редактирования в Emacs.
Откроем для редактирования файл .emacs. Поехали! Дадим возможность Emacs определять опреационную систему, на которой он запущен: (defun system-is-linux () «Linux system checking.» (interactive) (string-equal system-type «gnu/linux»))
(defun system-is-mac () «Mac OS X system checking.» (interactive) (string-equal system-type «darwin»))
(defun system-is-windows () «MS Windows system checking.» (interactive) (string-equal system-type «windows-nt»)) Создадим переменные, содержащие путь до исполняемых файлов SBCL: ;; Paths (for Common Lisp compiler — SBCL) (setq unix-sbcl-bin »/usr/bin/sbcl») (setq windows-sbcl-bin «C:/sbcl/sbcl.exe») Настроим пакетный менеджер Emacs: ;; Package manager: ;; Initialise package and add Melpa repository (require 'package) (add-to-list 'package-archives '(«melpa» . «http://melpa.org/packages/») t) ;; Добавляем ресурс Melpa (package-initialize) ;; Инициализируем пакетный менеджер
;; Package list (defvar required-packages '(slime; Slime — IDE для Common Lisp, интегрированная с Emacs projectile; Удобный менеджер проектов auto-complete)) ;; Автодополнение
;; Require Common Lisp extensions (require 'cl)
;; Функция реализет проверку факта установки перечисленных выше пакетов: ;; slime, projectile, auto-complete (defun packages-installed-p () «Packages availability checking.» (interactive) (loop for package in required-packages unless (package-installed-p package) do (return nil) finally (return t)))
;; Автоматическая установка пакетов slime, projectile, auto-complete ;; при первом запуске Emacs ;; Auto-install packages (unless (packages-installed-p) (message »%s» «Emacs is now refreshing it’s package database…») (package-refresh-contents) (message »%s» » done.») (dolist (package required-packages) (unless (package-installed-p package) (package-install package)))) Теперь, когда Вы запустите Emacs снова, то начнется автоматическая загрузка и установка пакетов: Настроим наши пакеты: (when (packages-installed-p)
;; Auto-complete (require 'auto-complete) (require 'auto-complete-config) (ac-config-default) (setq ac-auto-start t) (setq ac-auto-show-manu t) (global-auto-complete-mode t) (add-to-list 'ac-modes 'lisp-mode)
;; SLIME (require 'slime) (require 'slime-autoloads) (setq slime-net-coding-system 'utf-8-unix) (slime-setup '(slime-fancy slime-asdf slime-indentation)) (if (or (file-exists-p unix-sbcl-bin) (file-exists-p windows-sbcl-bin)) (if (system-is-windows) (setq inferior-lisp-program windows-sbcl-bin) (setq inferior-lisp-program unix-sbcl-bin)) (message »%s» «SBCL not found…»)) (add-to-list 'auto-mode-alist '(»\\.cl\\'» . lisp-mode))
;; Projectile (require 'projectile) (projectile-global-mode)) Настроим отступы Lisp-кода: (setq-default lisp-body-indent 4) (setq lisp-indent-function 'common-lisp-indent-function) Сохраняем файл .emacs и перезапускаем Emacs.Emacs загрузит и установит Slime, Projectile и Auto Complete автоматически в директориюC:\Users\%username%\.emacs.d\ для MS Windows и в директорию ~/.emacs.d/ в GNU/Linux.Предупреждение Написанный нами, только что, файл конфигурации .emacs является кроссплатформенным! При переносе с Linux на Windows и наоборот, ничего не нужно менять! Главное — расположить .emacs в нужную директорию (создание переменной окруженияHOME для MS Windows — обязательно!).
Рано праздновать, нужно еще настроить quicklisp — пакетный менеджер Common Lisp. Quicklisp — пакетный менеджер языка Common Lisp.В запущенном Emacs выполняем команду M-x slime (Alt-x slime); запустится среда разработки Common Lisp — Slime Выполним: ;; Подгрузим менеджер пакетов (load »~/.quicklisp/quicklisp.lisp») ;; Автоматический скачается и установится менеджер пакетов quicklisp ;; со всеми зависимостями (quicklisp-quickstart: install: path »~/.quicklisp/») ;; Создаст .sbclrc файл в домашней директории ;; и, при каждом запуске среды Slime/SBCL, будет подгружать ;; скаченные и установленные Вами пакеты и библиотеки (ql: add-to-init-file) Для примера, установим пару библиотек для Common Lisp при помощи quicklisp: библиотека создания графического интерфейса на основе Tk/Tcl: (ql: quickload 'ltk) движок для регулярных выражений: (ql: quickload 'cl-ppcre) работа с CSV форматом: (ql: quickload 'cl-csv) работа с OpenGL: (ql: quickload 'cl-opengl) работа с БД PostgreSQL: (ql: quickload 'postmodern) Web-сервер: (ql: quickload 'hunchentoot) реализация метода конечных элементов (FEM): (ql: quickload 'femlisp) работа с матрицами: (ql: quickload 'clem) обновление установленных библиотек и самого quicklisp: (ql: update-all-dists) (ql: update-client) Для Common Lisp написано большое количество качественных библиотек на все случаи жизни.При помощи quicklisp их легко установить и начать использовать.Собственно, у Вас теперь есть все необходимое для того, чтобы с головой окунуться в мир Common Lisp! Поздравляю! Спасибо за внимание! Да пребудет с Вами Lisp…