Есть ли способ внести изменения в переключатели в моем файле .emacs без повторного запуска Emacs? - PullRequest
9 голосов
/ 01 июня 2010

Я хочу иметь возможность вносить изменения в мой файл .emacs без перезагрузки Emacs.

Я нашел три вопроса, которые как бы отвечают на мои вопросы (вы можете найти их здесь, здесь и здесь ), но проблема в том, что изменение, которое я только что сделал, заключается в переключении, а также в комментариях к двум ответам (a1 , a2 ) на эти вопросы объясняют, что приведенные там решения (такие как Mx reload-file или Mx eval-buffer) не применяются к переключателям.

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

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

(setq skeleton-pair t)  
(setq skeleton-pair-on-word t)  
(global-set-key (kbd "[") 'skeleton-pair-insert-maybe)  
(global-set-key (kbd "(") 'skeleton-pair-insert-maybe)  
(global-set-key (kbd "{") 'skeleton-pair-insert-maybe)   
(global-set-key (kbd "<") 'skeleton-pair-insert-maybe)  

Править: Я включил вышеупомянутое в .emacs и перезагрузил Emacs, чтобы изменения вступили в силу.Затем я прокомментировал все это и попробовал Mx load-file.Это не работаетПредложение ниже (Cx Ce PP работает, если я использую его для оценки переключения в первый раз, но не тогда, когда я хочу отменить его).Я хотел бы что-то, что оценило бы комментарии, если такая вещь существует ...

Спасибо:)

Ответы [ 6 ]

6 голосов
/ 01 июня 2010

Некоторые вещи, которые вы можете попробовать:

M-x load-file (затем при появлении запроса введите ~/.emacs , введите ). M-x означает нажатие мета-клавиши (обычно Esc на рабочих столах Linux и Windows), затем нажмите обычную клавишу x.

Или, когда ваш файл .emacs открыт, поместите запрос сразу после закрывающей скобки для функции, которую вы хотите выполнить, и введите Ctrl-X, Ctrl-E. Выполняется этот блок, заключенный в ближайший набор скобок слева от курсора.

Эта последняя техника, которую я часто использую для сложных операций поиска и замены. Скажем, я редактирую файл XML и хочу переместить теги закрытия на строку раньше: я набрал бы в свой текущий буфер XML (query-replace-regexp "[ \r\n\t]*</" "</"), затем поместил курсор сразу после закрывающей скобки и напечатал Ctrl-X, Ctrl-E.

4 голосов
/ 02 июня 2010

Вы всегда можете использовать буфер * scratch * для оценки выражений.

Если вы хотите установить переменную:

(setq скелетная пара t) ^ J

Unset:

(setq, скелетная пара ноль) ^ J

Вы должны использовать ctrl-J, чтобы вызвать оценку; return (или ctrl-M) не сработает.

Это работает для всех выражений lisp, кстати. Если у вас есть быстрый расчет, чтобы сделать:

(+ 51 33) ^ J 84

Или, если вы хотите найти ширину рамки: (Каркасно-ширина) ^ J 80

Это полезно, если вы работаете или имеете неинтерактивные команды или переменные для оценки.

4 голосов
/ 01 июня 2010

Я включил вышеупомянутое в .emacs и перезагрузил Emacs, чтобы изменения вступили в силу. Затем я прокомментировал все это и попробовал M-x load-file. Это не работает

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

(setq variable-name nil)

и

M-x global-unset-key введите, а затем нажмите клавишу, которую хотите сбросить.

4 голосов
/ 01 июня 2010

Я так понимаю, вы хотите поэкспериментировать с включением / выключением пары скелетов?

Я бы соблазнился сделать это, имея:

(setq skeleton-pair t)    ; turns skeleton-pair on
(setq skeleton-pair nil)  ; turns skeleton-pair off

В .emacs и нажатием C-x C-e рядом с закрывающей скобкой для конкретной версии, которую я хочу попробовать. Конечно, я должен помнить, чтобы убедиться, что .emacs имеет только конечную настройку, которую я хочу, чтобы он правильно делал при следующем запуске.

2 голосов
/ 01 июня 2010

Не уверен, что я действительно понял ваш вопрос (немного уставший), но как насчет того, чтобы пометить то, что вы изменили (C-spc), а затем M-x eval-region? Если я не сделал несколько важных вещей, это делает то, что мне обычно нужно.

0 голосов
/ 11 июня 2010

Каждый раз, когда вы оцениваете код elisp, он отправляется в глобальную среду emacs этого сеанса emacs; поэтому, если вы установите значение переменной, оно все равно будет присутствовать в среде, даже если вы перезагрузите ваш .emacs.

Было бы неплохо, если бы мы могли предварительно загрузить .emacs (или любой lisp) в «песочницу», чтобы протестировать его. Когда я делаю тяжелую настройку .emacs, я обычно открываю один emacs для редактирования .emacs и другой для оценки (который я могу перезапустить, чтобы избежать повреждения среды).

...