Нужно ли мне знать Emacs Lisp, чтобы использовать GNU / Emacs - PullRequest
6 голосов
/ 09 июля 2010

Недавно я начал изучать GNU / Emacs.Была очень простая в использовании программа.Изучил его структуру.Настроил хороший цвет для меня.Сконфигурируйте его для класса по программированию на Си.Все казалось нормальным.Но теперь встал вопрос о GNU / Emacs lisp.Должен ли я действительно тратить время на изучение Emacs Lisp, если я не разрабатывал сам Emacs и буду использовать его только как ide для разработки на C / C ++, для mail, jabber и т. Д.

Дело в том, что когда я редактируюмой .emacs я понимаю что я пишу.Но я пишу в основном готовые сценарии или, если что-то, они очень простые.

Спасибо.

Ответы [ 9 ]

8 голосов
/ 09 июля 2010

Нет, это не обязательно.Вы, вероятно, напишите elisp, но в основном просто установите переменные и вставите необходимые фрагменты для любого режима или пакета, который вы хотите использовать (setq, require и т. Д.).Большая часть этого достигается путем копирования и вставки, поэтому никаких реальных знаний elisp не требуется.

Сказав, что определение небольших функций может быть весьма полезным, и изучение Emacs Lisp для этого может оказаться полезным.Посмотрите на учебник Xah Lee , он довольно короткий и лаконичный.

5 голосов
/ 09 июля 2010

Emacs Lisp - это то, к чему вы обращаетесь, если вы хотите автоматизировать какое-то редактирование в вашем документе, когда прохождение пользовательского интерфейса слишком утомительно или медленно.

Вот пример: мне пришлось провести некоторый рефакторингв моей компании некоторое время назад.Это включало перемещение нескольких методов в кучу файлов.Чтобы помочь людям, которые будут объединять наш код во время перехода, мы оставили «надгробные» комментарии в старом месте, сообщая им, где будет находиться новый код.Надгробия включали в себя закомментирование всей функции (включая объявление), удаление тела функции и помещение вместо нее комментария.

После нескольких из них и десятков, я былготов вырвать мои волосы от скуки.Поэтому я собрал следующие команды вместе и вставил их в мой файл ~/.emacs.Вы можете быть в состоянии понять суть того, что они делают, даже без особых комментариев.

(defun reheadstone-region (fname beg end)
  (interactive "sFilename to use: \nr")
  (save-excursion
    (save-restriction
      (narrow-to-region beg end)
      ;; comments around entire thing
      (goto-char (point-min))
      (insert "/*\n")
      (goto-char (point-max))
      (insert "\n*/\n")
      ;; zap the method body
      (goto-char (point-min))
      (search-forward "{")
      (forward-line)
      (push-mark (point))
      (goto-char (point-max))
      (search-backward "}")
      (beginning-of-line)
      (kill-region (region-beginning) (region-end))
      (pop-mark)
      ;; new headstone body
      (headstone-in fname))))

(defun headstone-in (fname)
  (interactive "sFilename to use: ")
  (save-excursion
    (beginning-of-line)
    (insert (format "\tThis method has been moved to %s." fname))))

Это был быстрый и грязный хак, и он, несомненно, далек от совершенства в своей работе.Но после загрузки и привязки его к клавише, и, немного подправив его, выбрав область вокруг функции, которую я хотел заложить перед выполнением команды, я выполнял целый ряд утомительных правок практически без усилий.Кроме того, я получил удовольствие от мгновенного удовлетворения, которое этот код предоставил мне.Мои коллеги задавались вопросом, почему я выглядела такой веселой, когда весь день возвращалась домой, особенно после того, как выглядела такой раздражительной в обеденный перерыв.

Это то, что Emacs Lisp может сделать для вас.Я полагаю, вы могли бы утверждать, что это ничем не отличается от «разработки самого Emacs», поскольку эти команды практически не отличаются от встроенных команд Emacs с точки зрения пользовательского интерфейса, но психологический эффект сильно отличается.Я расширяю редактор очень специфическими командами, совершенно особыми способами для решения задач для моего проекта, которые были бы трудными или невозможными без полного языка сценариев и API редактора в моем распоряжении.С моей точки зрения (и я пришел к этому мнению в последнее время), пользователь Emacs без каких-либо базовых возможностей с Emacs Lisp еще не стал опытным пользователем.

2 голосов
/ 09 июля 2010

Краткий ответ «Нет», однако, знание Emacs Lisp значительно повысит вашу производительность в некоторых областях.

Если вы решите потратить некоторое время на изучение Emacs Lisp, я не могу порекомендовать вам лучшую отправную точку, чем отличная книга " Введение в Emacs Lisp " (она также поставляется в комплекте с Emacs в информационном формате- Ch im Emacs Lisp Intro).

1 голос
/ 09 июля 2010

Конечно, не обязательно иметь возможность писать свой собственный elisp, но может быть очень полезным.Вероятно, самая полезная способность, которую это даст вам, - это способность «исправлять» вещи, которые не работают так, как вы этого хотите, часто путем написания собственных хуков или советов.Так что, если вам нравится использовать Emacs, но вы обнаружите, что вещи не всегда вам нравятся, тогда я определенно рекомендую вам начать изучать elisp.

Не думайте, что вам нужно все это знать,но будьте готовы со временем собирать кусочки, и вы, несомненно, обнаружите, что Emacs со временем становится все лучше и лучше.

Убедитесь, что вы ищете решения, прежде чем начинать что-то кодировать -во многих случаях кто-то уже сделал за вас тяжелую работу:)

1 голос
/ 09 июля 2010

Поскольку вы новичок, не слишком переживайте по поводу Emacs Lisp. Стать опытным с редактором. Большинство расширений / режимов, которые нам обычно нужны, уже есть. Но изучение Emacs Lisp - это достойное усилие. ELisp предназначен не только для настройки Emacs, это полноценный язык программирования. Он может выполнять множество задач, таких как взаимодействие с файловой системой, сетью, графическим интерфейсом и т. Д. Когда вы ознакомитесь с ELisp, есть шанс, что вы уроните C / C ++ и начнете разрабатывать свои приложения в самом ELisp! Развертывание вашего приложения также станет простым, поскольку Emacs / ELisp перенесен на множество архитектур и может выступать в качестве платформы развертывания.

1 голос
/ 09 июля 2010

Базовое количество Emacs Lisp действительно полезно знать, на мой взгляд (например: настройка привязок клавиш , понимание .emacs файла ).

Если требуется более глубокое знание Emacs Lisp, зависит от того, довольны ли вы emacs как есть.

Полагаю, большинство проблем, с которыми вы столкнетесь, уже решены кем-то другим.Так что есть неплохой шанс получить хороший файл .el, где-то делать именно то, что вы хотите.

Однако, если вы хотите реализовать некоторые экзотические функции, изучение Emacs Lisp может быть вариантом.Еще один момент заключается в том, что Lisp - это фактически используемый язык программирования в промышленности, поэтому его никогда не бывает плохо знать (хорошо, это Emacs Lisp, но он похож на него).

1 голос
/ 09 июля 2010

Я уже некоторое время использую Emacs и могу сказать, что если вы в порядке с функциями, предоставляемыми используемыми вами режимами, и, следовательно, не нуждаетесь в их улучшении, нет реальной необходимости изучать elisp.Для написания вашей конфигурации emacs требуется немного elisp, но есть довольно небольшой диапазон языковых возможностей, которые вам понадобятся.

Кстати, если вы захотите расширить некоторые функциональные возможности, есть возможность создавать сценарии для emacs, используя другие языки (например, python, perl, не помню, какие есть), поэтому изучение elisp не так уж и важно.критичный.Возможно, вы можете узнать больше, начиная с этой вики-страницы emacs: http://www.emacswiki.org/emacs/CategoryExtensionLanguage

0 голосов
/ 21 августа 2011

Зависит от ваших целей и интересов. Некоторые люди изучают Emacs Lisp, чтобы использовать Emacs. Некоторые люди изучают Emacs, чтобы использовать Emacs Lisp. ; -)

0 голосов
/ 09 июля 2010

Я сам пользователь Vim, но я играл с GNU / Emacs.Ваш файл .emacs - это emacs lisp, поэтому, если вы пишете свою собственную конфигурацию, вы уже используете Emacs Lisp.:) Кроме того, вы можете оценивать выражения lisp для выполнения различных операций, но я не думаю, что вам нужно беспокоиться об этом, особенно если вы придерживаетесь высоко используемых / разработанных режимов (C / C ++ и т. Д.).Все дело в том, хотите ли вы открыть одну программу - Emacs - и в ней есть ваша электронная почта, irc и веб-браузер, или использовать ее в качестве текстового редактора.Но большинство из упомянутых выше вещей уже написано для вас - так что ... это жеребьевка.

...