Существует ли способ внести изменения в переключатели в моем .emacs файле, применяются, не перезапуская Emacs?

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

Я нашел три вопроса, которые вид ответа, что я спрашиваю (можно найти их здесь, здесь и здесь), но проблема состоит в том, что изменение я только что сделал, к переключателю, и как комментарии к двум из ответов (a1, a2) к тем вопросам объясняют, решения, данные там (такие как файл перезагрузки M-x или буфер оценки M-x), не относятся к переключателям.

Я предполагаю, что существует способ переключить переменную снова с командой, но если существует способ перезагрузить целый .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, так, чтобы изменения вступили в силу. Затем я прокомментировал все это и попробовал файл загрузки M-x. Это не работает. Предложение ниже (C-x C-e PP работает, если я использую его для оценки переключателя в первый раз, но не, когда я хочу отменить его). Я хотел бы что-то, что оценит комментарий, если такая вещь будет существовать...

Спасибо :)

9
задан Community 23 May 2017 в 12:25
поделиться

6 ответов

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

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

(setq variable-name nil)

и

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

4
ответ дан 4 December 2019 в 10:30
поделиться

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

Mx 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 .

6
ответ дан 4 December 2019 в 10:30
поделиться

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

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

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

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

4
ответ дан 4 December 2019 в 10:30
поделиться

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

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

(setq skeleton-pair t)^J

Снять:

(setq skeleton-pair nil)^J

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

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

(+ 51 33)^J 84

Или если вы хотите найти ширину вашего кадра: (ширина кадра)^J 80

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

4
ответ дан 4 December 2019 в 10:30
поделиться

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

2
ответ дан 4 December 2019 в 10:30
поделиться

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

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

0
ответ дан 4 December 2019 в 10:30
поделиться
Другие вопросы по тегам:

Похожие вопросы: