Я запускаю оба emacs 23 и 24 с «--no-init-file», чтобы не загружать мои настройки. Но затем я явно загружаю свою старую версию python-mode.el (версия 3.105, последнее уведомление об авторских правах 1998 года) и вижу то же поведение, которое я собираюсь описать, поэтому я считаю, что это основные emacs, а не python.emacs 24: Как мне вернуть поведение emacs-23 sexp для режима python?
Рассмотрим этот код (*
помечает местоположения курсора):
*def emacs_is_fun():
for x in range(3):
print(x)
Поместить курсор в колонку 4 в начале "DEF".
С emacs 23, работает mark-sexp
выбирает "def".
С emacs 24, mark-sexp
выбирает весь блок кода, до конца отчета о печати.
Это неплохо. Основная проблема заключается это общее использование:
*very_long_var_name[very_long_expn] += long_function_call(long_arg_list, blah)
Опять же, курсор находится в начале печатной части линии, Col 4.
В Emacs 23, mark-sexp
выбирает very_long_var_name
.
В emacs 24, mark-sexp
выбирает полную линию, от col 4 до конца.
Я использовал Ctrl-alt-space alt-w
, чтобы быстро сохранить имена переменных. (Или alt-2 ctrl-alt-space alt-w
, чтобы сохранить выражение.) Теперь это ушло. Это emacs, поэтому это должно быть настраиваемо, но я не нашел , где реализовано новое поведение (и помните, что я использую python-режим , которому около 15 лет). Что мне нужно вставить в файл .emacs?
Вот и все! Большое спасибо! Это все еще работает так, как ожидалось, для выражений и строк в скобках. Другая проблема, которую я испытываю с новым поведением, - это ее асимметрия: сидеть на «def», fwd-sexp идет до конца блока, но как только (fwd-sexp -1) возвращается один традиционный sexp. – Eric
Нет проблем. Счастлив, что помогло. Не уверен, что я полностью понимаю ваш второй вопрос. Если у вас все еще есть проблема, то, пожалуйста, внесите новый вопрос SO с примером и @ me в комментарии, и я буду рад взглянуть. – Jack