Обновить
Комментарии 44
Вы простите, но за статью — минус. 90% статьи — «Вот мой .emacs, смотрите и учитесь». Но таких примеров в интернете — пруд пруди и Ваш .emacs — далеко не лучшего качества. Вы не объясняете выбор многих компонентов и более-менее подробное их действие, что было бы полезно начинающим Емаксерам. За CL — плюс, хотя мы так и не дождались упоминания (require 'cl).
(require 'cl)
— это включение поддержки Common Lisp для программирования самого Emacs. Это необязательный параметр для Emacs, если использовать его как IDE Common Lisp.
Но таких примеров в интернете — пруд пруди

И сколько времени понадобится новичку, чтобы найти более-менее нормальный .emacs?
Вы не объясняете выбор многих компонентов и более-менее подробное их действие
— я дал более чем достаточно ссылок для того, чтобы начать понимать что значит каждая строка. Тем более не хотел раздувать статью. Цель статьи проста — дать сконцентрированный источник полезной информации для начинающих емаксеров с примером моего .emacs, пусть и не идеального. Я его часто редактирую (.emacs).

Спасибо за замечания.
Так в том и прелесть, что нет понятия "Нормальный .emacs". Вы например любите dired, а мне куда удобнее работать с dired+. Или момент о «никаких резервных копий» — но ведь это одна из удобнейших фич! CEDET, я как понял, вы взяли встроенный, однако факт, что порой он на пол-года или больше отстаёт по функционалу от апстрима. Или например, почему Вы явно включается font-lock, который с версии 22 включается по-умолчанию.
«никаких резервных копий» — но ведь это одна из удобнейших фич!
Это практически первое что я отключил. А я вот хочу .swp файлы как в Vim'е, сможете мне их дать при работе в Emacs с Evil модом или без него???
И сколько времени понадобится новичку, чтобы найти более-менее нормальный .emacs?

Нормальный .emasc найти нельзя, его можно только написать :}
Друзья, я написал эту статью для новичков. Мне именно этого не хватало, когда начал работать с Emacs — ссылок, примеров кода. И чтобы все в одном месте. Те, кто знает и применяет Emacs в своей работе повседневно — не аудитория данной статьи. А вот те, кто хочет с чего-то (только не с пустого .emacs) начать, могут посмортеть приведенную мной настройку, поиграться с ней, выбрать лучший для себя вариант изучения этого замечательного инструмента, посмотреть ссылки и т.д.
Прошу прощения, что не все прозрачно, в смысле объяснения приведенного кода, но расчет на то, чтобы молодой емаксер сел и начал разбираться самостоятельно — иначе, Emacs не освоить.
Отключать меню и тулбары для новичков — очень странное решение.
Если Вы хотите использовать Emacs как Notepad++ (с тулбарами и меню, без изучения комбинаций клавиш, режимов), не готовы забыть про мышь — флаг Вам в руки. Только не нужно после этого говорить, что Emacs ничем не отличается от других текстовых редакторов, и, мол,
я ничего полезного для себя не нашел
(прошу прощения, я не про Вас конкретно, а про сферического user'а в вакууме, который решил «освоить» Emacs, используя менюшки и тулбары). Я, например, с самого начала отключил все эти GUI дополнения. ИМХО, Emacs с GUI смотрится так же странно, как MS Visual Studio без GUI.
Это как с Vim: сферический user в вакууме не смог с первого раза выйти из программы (хотя, на стартовой странице написано как это сделать) — все, Vim плохой… Vim и Emacs не виноваты, что user привык к блокноту. Не стоит ждать, что эти редакторы похожи на все другие. Нет — они другие.
Либо Вы учитесь ими пользоваться, либо не пользуйтесь. Все же просто…
Например, в org-mode меню — очень полезная штука. Очень много разных функций, и клавиатурные комбинации к ним подписаны прямо возле пунктов меню — помогает выучить, если что-то часто используешь.

Отлючение меню удобно не для всех, и это явно не для новичков.
Я разобрал свой .emacs, и, если внимательно прочитаете статью, не написал, что это — эталон.
Выбор за пользователем. Нельзя угодить всем. Мне меню, например, вообще не нужно. Вам — нужно. Это Ваш выбор. Давайте не спорить по таким неоднозначным вопросам. Пусть начинающий Emacs'ер сам решит: нужно ему меню или нет.
F10 всегда к вашим услугам, для себя в редких случаях именно ей и пользуюсь, если что-то забылось
Спасибо! Самый грамотный подход.
Мне, как новичку, статья понравилась:
  1. Рассказывается о плагинах, о которых я не знал.
  2. Приводится рабочий .emacs-файл, с пусть кратким, но более-менее понятным описанием.
  3. Автор не заставляет тупо копировать его .emacs себе — он лишь описывает то, чем пользуется.

Да, хотелось бы более развёрнутого ответа насчёт того, почему тут или иной плагин. За neotree замолвите слово. Что насчёт ergo-emacs? Мне кажется, он достоин упоминания в статье для новичков.
Отключать меню и всякие тулбары — это правильно. Да, это несколько повышает порог вхождения, но ведь мы все тут любим Emacs не за его красивые иконки в тулбаре, верно? А приучать к keyboard-only, как мне кажется, надо сразу.
Как минимум, чтобы иметь наглядное представление о том, как другие организуют свои настройки, какие настройки применяют чаще всего и т.д. Про Prelude — попытка упростить жизнь новичкам. Удалась ли эта попытка — каждому решать самостоятельно. Я же написал русским по белому в статье:
спереть позаимствовать чужой файл .emacs и начать работать (не советую).
Вот именно, настоятельно не советуете использовать, но поддерживаете готовую сборочку от Васян^W bbatsov. Прелюд не помогает новичкам, скорее дезориентирует и не даёт понимания, что такое емакс. Прелюд может быть полезен тем, кто уже знает емакс — какие-нибудь фичи или моды подтянуть, но уж точно не новичкам. Я разобрался в емаксе за полчаса, конфиг переписал готовый, но разбирал каждую строчку с автором конфига и это очень сильно помогло понять емакс и в дальнейшем спокойно улучшать под себя.
Я хотел сказать, что Prelude можно посмотреть на предмет наличия там дополнительных, интересующих конкретно Вас настроек и решений, а не устанавливать его.
А за
конфиг переписал готовый, но разбирал каждую строчку с автором конфига и это очень сильно помогло понять емакс и в дальнейшем спокойно улучшать под себя

Вам только плюс — это самый грамотный подход, ИМХО.
«Розыгрышь стандартной троектории нейтрона … егометрических …»

Без обид, но вам еще нужен модуль проверки орфографии комментариев :) А вообще, русский — это такой же язык программирования, только семантического. Мне кажется, что правильно организовав в голове правила грамматики и орфографию, можно неплохо прокачать и свои профессиональные навыки. Принципы ведь те же.
Это было самое ценное, что Вы извлекли из статьи. Без обид…
Отлично, поздравляю.
Как же хочется ворваться в этот Emacs, но черт побери, сила есть, воля есть, а силы воли нет.
Спасибо за статью. Раньше на SublimeText сидел, сейчас на Light Table. Ну и vim немного знаю, чтобы в чужих системах можно было удобно редактировать файлы. Емакс всегда пугал. Как только с Light Table вырасту, попробую емакс с вашей статьи.

Вы выложили также .vimrc. В каких случаях пользуетесь vim, а в каких емакс?

Что за шрифт используете?
Я рад, что для Вас статья оказалась полезной!
В каких случаях пользуетесь vim, а в каких емакс?

Vim использую для быстрого редактирования любой текстовой информации, в частности, для конфигурационных файлов.
Emacs — для программирования. Он незаменим для меня, когда я работаю с Lisp/Python/Perl. Org-mode — прекрасная штука. Рискну сказать так:
даже если бы Emacs был ужасным и плохим (без всех полюсов и расширений), наличие org-mode полностью оправдало бы его использование...
Что за шрифт используете?

PT Mono
Честно скажу, мне статья не понравилась. Если бы ты такое написал лет 10 назад, тогда да — без вопросов. Но сейчас, в 2015 году ты пишешь:

даже если бы Emacs был ужасным и плохим (без всех полюсов и расширений), наличие org-mode полностью оправдало бы его использование


Так почему же ты не раскрываешь тему орг-мода в контексте публикации настроек Emacs? Это выглядит чрезвычайно сомнительно на мой взгляд.
Просто чтобы ты понял о чем я говорю, взгляни на этот рабочий, но незаконченный черновик: gist.github.com/zahardzhan/e1d77d71ba93b008ec21#file-init-org
Так почему же ты не раскрываешь тему орг-мода в контексте публикации настроек Emacs?

Потому что Вам, наверно, нужно было статью повнимательнее почитать.
Я же в начале статьи написал:
В данной статье хочу подробно рассказать про настройку текстового редактора GNU Emacs.

а не про Org-mode.

даже если бы Emacs был ужасным и плохим (без всех полюсов и расширений), наличие org-mode полностью оправдало бы его использование

это — ответ на вопрос в комментариях, если что, не часть статьи.

Это выглядит чрезвычайно сомнительно на мой взгляд.

Что в статье сомнительно, по Вашему?
Или Вы написали коментарий, чтобы разрекламировать разместить ссылку на Вашу gist'у?

Если бы ты такое написал лет 10 назад, тогда да — без вопросов.

Вы, вообще, о чем? Причем тут «лет 10 лет назад» и настройка Emacs?

Еще раз повторяю: это статья про начальную настройку Emacs. Для начинающих. Не для опытных пользователей Emacs!
Не думаю, что имеет смысл вести с вами дискуссию, если вы считаете что ссылку я разместил чтобы ее «разрекламировать». Вы даже не удосужились посмотреть что это. Единственное что я точно могу сказать, следуя вашей собственной логике — вы разместили эту статью чтобы разрекламировать свои настройки, большая часть которых мало кому из начинающих пользователей подойдет. Каждый в конце концов использует свои собственные.
Прошу прощения, промахнулся: вместо минуса поставил Вам плюс…

Вы даже не удосужились посмотреть что это.

Посмотрел, прочитал. Это не имеет никакого отношения к тому, что я написал в своей статье.

вы разместили эту статью чтобы разрекламировать свои настройки, большая часть которых мало кому из начинающих пользователей подойдет.


Что за бред? Детский сад, вторая группа… Я рад любой критике, только она должна быть, как минимум, аргументированной.

Я одного понять не могу: целью Ваших комментариев является сам факт их написания?
Если высказали точку зрения, будьте добры, аргументируйте Вашу критику. А пока, она у Вас безосновательна.

Хотя… Что с Вами спорить? Не вижу смысла.
Я бы хотел взлянуть, но к сожалению получаю такое сообщение:

«Whoops.
We seem to have missed the gist of that gist you were looking for.»
Статью прочитал, т. к. являюсь как раз начинающим пользователем Emacs, выделил для себя несколько интересных моментов.

Стоит сказать, что в современной IT-индустрии все чаще появляются различные амбициозные проекты, связанные с разработкой «текстовых редакторов XXI века», замен Emacs и/или Vim:


Перед Emacs долгое время работал с Sublime Text'ом и за мое небольшое время обучения работы с Emacs пока ни нашел ни одной функции, которую не поддерживал бы мой Sublime (пишу на Python).
Возможно я все еще не постиг всю прелесть указанного в статье редактора(кроме того, что он бесплатный), но если сравнивать время настройки того же Sublime и Emacs, то первый на мой взляд бесспорно выигрывает именно как текстовый редактор, т. к. многие из нужных функций уже включены «из коробки».

P. S. я не беру в расчет, то что на Emacs есть и свой браузер и почтовый клиент и т. д., так как к редактированию теста они имеют не большое отношение.
Из самого интересного и полезного, наверное — org-mode.
Для sumblime тоже есть порт org-mode или же PlainTask
Ну тогда — встроенная система управления пакетами. А вообще, я думаю, самая главная фишка Emacs это полная прозрачность модулей друг для друга и для пользователя и возможность модификации всего и вся прямо на лету с помощью мощнейших средств типа аспектно-ориентированного программирования advice и макросов.
Как в emacs включить virtual spaces (возможность заводить курсор за пределы конца строки)?
Хотел бы отметить, что воспользовавший этой частью вашего конфига:
Удалить лишние пробелы в конце строк, заменить TAB'ы на пробелы и выровнять отступы при сохранении буфера в файл, автоматически:

;; Delete trailing whitespaces, format buffer and untabify when save buffer
(defun format-current-buffer()
    (indent-region (point-min) (point-max)))
(defun untabify-current-buffer()
    (if (not indent-tabs-mode)
        (untabify (point-min) (point-max)))
    nil)
(add-to-list 'write-file-functions 'format-current-buffer)
(add-to-list 'write-file-functions 'untabify-current-buffer)
(add-to-list 'write-file-functions 'delete-trailing-whitespace)

при программировании на Python можно испытать очень большую боль, ибо при сохранении, например py файлов чужих библиотек или не должным образом отформатированных в другом редакторе по отступам py файлов (format-current-buffer) просто делает с отступами что хочет:

file = open('/path/to/file', 'r')
for line in file
    print(line)
file.close()


легко становится:

file = open('/path/to/file', 'r')
for line in file
    print(line)
    file.close()


Хорошо, если после этого код просто перестанет работать и интерпритатор покажет ошибки, если же что-то такое случится в файле с over9000 строк и он будет исполнятся без ошибок интерпретатора, будет адово.
Вы какой версией Emacs пользуетесь? Emacs-24.4?
Если да, то там, по дефолту, включена опция electric-indent-mode, что и может быть причиной корявой индентации python кода.
Попробуйте отключить этот режим (запишите в свой .emacs):
(electric-indent-mode -1)

У меня такие же проблемы возникали, когда этот режим оставлял включенным.
Для новичков я бы посоветовал использовать emacs-starter-kit, prelude, или подобные. Когда 15 лет назад я начинал пользоваться Emacs, то ничего подобного не было. А это, во-первых, готовый конфиг, модули общего назначения, и т.д. Во-вторых, оно доводит дефолтный Emacs до уровня «о, так неплохо уже из коробки».

Еще автор не упомянул про репозитории ELPA, MELPA, и т.д. А это, по моему скромному мнению, очень важно, т.к. там есть куча модулей расширения, которые уже делают то, чего пользователь только начал желать (:
Вот я только начал желать virtual spaces (возможность заводить курсор за пределы конца строки). Что мне поставить?
Не знаю, у меня такого желания не было. И я не Google.
Автор starter-kit говорит, что для новичков он бы посоветовал Emacs Wiki )
Если новичок уже поставил starter-kit, то хороший совет. А если еще не поставил, то с очень высокой вероятностью этот новичок перестанет использовать Emacs уже на следующий день.
В том-то и дело, что starter-kit как программный проект был закрыт полтора года назад и его больше нельзя «поставить». Это просто небольшой гайд.
И что? Новички могут поставить что-нибудь подобное prelude, better-defaults, etc. Что вы к названию-то прицепились. Название не важно, важно то, что дефолтный Emacs очень сложно сделать менее «юзабельным», а вот более удобным его можно делать бесконечно.
Как правило Emacs используют тогда, когда нет «более удобных» инструментов чем Emacs и по этой причине его не перестают использовать в будущем. Например, как автор этой статьи — для игр с коммон лиспом. Есть и более экзотические варианты — как среду разработки с голосовым вводом и выводом и тому подобное.
Только полноправные пользователи могут оставлять комментарии. Войдите, пожалуйста.