TIL on Emacs
Добрых 20 лет я пользуюсь текстовым редактором Emacs. Все это время остаюсь не более чем power userом. Желания залезть в его внутренности и переделать под себя никогда не возникало. На мой взгляд это одно из важнейших качеств инженера, но я же не настоящий инженер.
Мой init.el выглядит как сборная солянка сниппетов из интернета. Периодически я навожу там уборку, но через месяц директория конфигов разбухает еще сильнее.
Еще меня раз в квартал посещает мысль выучить LISP, но мотивации хватает максимум на чтение вступительных глав. Когда начинаются примеры кода и нужно думать и практиковаться мое желание выучить LISP быстро испаряется. Я не настоящий инженер, но мне очень важно понимать как применить новую выученную вещь на практике. Если я пока не понимаю как это сделать - стараюсь не забивать себе голову информацией.
В этот раз мне на глаза попалась http://alexott.net/ru/emacs/elisp-intro/elisp-intro-ru.html . В отличие от других диалектов LISP у ELisp есть одно главное преимущество - это язык на котором написан Emacs, а значит все знания можно использовать на практике прямо не выходя из редактора. Вопросы о мотивации отпали сами собой.
Так вот, это все было предисловие чтоб набрать классов и объема текста
На самом деле я всего лишь хотел резюмировать для себя первое важное знание которое я получил: команды set
и setq
делают одно и тоже - присваивают значение переменной. Разница в следущем:
(set 'symbol 'value)
(setq symbol 'value
another-symbol 'another-value)
Другими словами set
может присвоить значение только одной переменной и ее имя нужно выделить апострофом '
, а setq
может присвоить много значений куче переменных за раз и тратить энергию на апостроф не нужно - setq
это сам умеет делать.
Благодаря этому простому знанию я избавился от разбросанных по разным местам определениям переменных и расположил их в одном месте.
(setq-default
это как setq
, но для всех буферов)