Мне нужно знать Emacs Lisp, чтобы использовать GNU/Emacs

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

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

Спасибо.

Ответ 1

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

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

Ответ 2

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 еще не стал сильным пользователем.

Ответ 3

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

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

Ответ 4

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

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

Ответ 5

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

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

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

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

Ответ 6

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

Ответ 7

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

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

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

Ответ 8

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

Ответ 9

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