Обновить
Комментарии 35
Хорошая статья для начинающих, хотелось бы развития темы.

Ряд замечаний, относительно подготовки рабочего места.

Устанавливая переменную auto-mode-alist в .emacs мы теряем её общесистемное значение — как правило, в переменной уже содержаться соответствия для различных режимов, как поставляемых с emacs, так и установленных с пакетами дистрибутива. Если это значение терять не хочется, лучше использовать функцию add-to-list.

Так же в emacs'е существует специальный режим для редактирования elisp — emacs-lisp-mode, возможно имеет смысл использовать именно его. В итоге, вместо (setq auto-mode-alist ...) можно написать нечто вроде:

(add-to-list 'auto-mode-alist '("\\.el$". emacs-lisp-mode))

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

На счёт global-font-lock-mode — аналогично, не исключено, что она включена по умолчанию.
НЛО прилетело и опубликовало эту надпись здесь
Спасибо за замечания, исправлю.

Про развитие, может и напишу небольшой цикл статеечек для начинающих, так, чтобы хотя бы поверхностно были охвачены базовые и расширенные возможности Emacs и те места, которые вызывают трудности у новичков. Целей вижу две, привлечение новых емаксоводов и понижение порога вохождения в Emacs.
НЛО прилетело и опубликовало эту надпись здесь
Я его знаю. И все-таки, считаю, что есть место и для таких статей. Начинающим не всегда легко бывает найти нужную информацию в такой объемистой документации. Тем более, что они часто не знают, что собственно искать. Такие короткие статейки, в которых описана какая-то частная оласть/задача и ее решение, но более связанно, с работающими примерами и объяснениями и которую можно прочитать и попробовать ее примеры за двадцать минут, думаю они уместны и полезны. Интересны также и приемы работы. Конечно, это все ИМХО.
НЛО прилетело и опубликовало эту надпись здесь
НЛО прилетело и опубликовало эту надпись здесь
Кстати, я поторопился, учебник я до этого не видел, вставил на него ссылку.
Может кому поможет избежать потери времени:
emacs lisp не поддерживает оптимизацию хвостовой рекурсии. Т.е если писать работу со списками в функциональном стиле то скрипт будет вываливаться с чем-то вроде maximum recursion depth…
Насколько я помню, в eval по дефолту забинден на «C-x C-e», а не на «C-x e». Возможно стоить проверить…
После «Попробуем для примера определить собственную функцию:» надо заменить кусок с (progn ...) на кусок с (defun ...).

PS: Нынче стало модно отделять префикс через "/" — «oxyum/my-cool-fun».
Спасибо, все исправил.

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

А вообще я предпочитаю языки, в которых есть понятие «namespace» (C++, Python, etc.).
Куда статья про emacs делась? Только решил проглядеть, а тут история Windows и Unix. И то только наброски.
Пардон, статью вернул, приношу извинения.
> C-x C-f RET | Переходим в режим dired в домашней директории

А не «С-x D RET»?
Работает и так и так, я просто всегда жму, C-x C-f RET просто чтобы не запоминать лишние клавиши, их и так много.
Странно. У меня «C-x C-f RET» не переходит в dired режим, а просто обновляет текущий файл. XEmacs 21.4.17
Неправильно выразился. Я имею ввиду, что Емакс перечитывает текущий файл заново.
Не уверен в чем дело, у меня по C-x C-f при открытом файле, в минибуфере появляется путь к текущему директорию.
Ну да, у меня тоже. «C-x C-f» — появляется путь к текущей директории. «RET» — текущий файл перечитывается.
А у меня после «RET» открывается директорий. Попробуйте сделать:
C-h k C-x C-f
У меня вот что:
C-x C-f runs the command find-file, which is an interactive compiled
Lisp function in `files.el'.
C-x C-f runs 'find-file'
'find-file' is an interactive compiled Lisp function loaded from "/some_path/xemacs-21.4.17/lisp/files.elc"
Может быть дело в версиях? у меня GNU Emacs 23.1.1 (i686-pc-linux-gnu, GTK+ Version 2.16.1)
А так: функция та же. Вообще, перегружает текущий файл специальная функция: M-x revert-buffer
Теперь осталось сделать M-x find-file
У меня там написано среди прочего:

«Interactively, the default if you just type RET is the current directory»

А у Вас?
Я понял =)
У меня касательно действия после RET ничего не сказано.
Ладно, будем считать что дело в разных версиях Емакса. Да и ОС — Солярис.
ОК, ставьте 23, он очень вкусный.
Сделал все как в инструкции, не хочет выполнять выражения на C-x e. Пишет 'No kbd macro has been defined'. А в главном меню Emacs-а, в пункте SLIME->Evaluation-> все функции «серенькие», на которые нельзя нажать.
Вот ~/.emacs:
(custom-set-variables
;; custom-set-variables was added by Custom.
;; If you edit it by hand, you could mess it up, so be careful.
;; Your init file should contain only one such instance.
;; If there is more than one, they won't work right.
)
(custom-set-faces
;; custom-set-faces was added by Custom.
;; If you edit it by hand, you could mess it up, so be careful.
;; Your init file should contain only one such instance.
;; If there is more than one, they won't work right.
)
(setq auto-mode-alist
(append
'(
( "\\.el$". lisp-mode))))
(global-font-lock-mode 1)

(setq inferior-lisp-program "sbcl")


Подскажите, в каком месте проблема?
C-x C-e тоже не работает. Пишет 'Not connected'. Курсор во время нажатия этой комбинации стоит в начале следующей строки.
Ну вот и ладушки. M-x 'function-name'
это команда выполнить интерактивную функцию 'function-name'
Все так, как и должно быть.
'C-x C-e' Это команда выполнить выражение. При этом курсор должен стоять справа рядом с сзакрывающей скобкой выражения.
'C-x e' это выполнить клавиатурный макрос, который к этому моменту должен быть определен. Вам emacs говорит, что вы хотите выполнить макрос, а никакой макрос не определен.
Только полноправные пользователи могут оставлять комментарии. Войдите, пожалуйста.