Emacs Pabbrev и Python - PullRequest
       14

Emacs Pabbrev и Python

3 голосов
/ 05 мая 2009

Обычно, когда вы нажимаете на вкладку в пустой строке в режиме Python emacs, она перебирает доступные отступы на вкладке. Когда я нажимаю клавишу Tab, когда точка находится на самом глубоком уровне отступа, я получаю буфер pabbrev, содержащий последние параметры наилучшего соответствия. У кого-нибудь еще есть эта проблема, есть ли простой способ обойти это без написания elisp?

EDIT: Трей, я хочу, чтобы pabbrev работал в режиме python, а не выключал его.

Итак, предположим, что есть 2 уровня отступа, либо ни одного, либо 1 уровень, как правило, если он нажимает на вкладку 3 раза, то первый из них ставит точку на 4 пробела (или любой отступ, установленный на), второй возвращается на 0 пробелов и третий обратно на 4 пробела.

В режиме pabbrev для одного отступа ставится метка 4 пробела, для второго вызывается буфер для автозаполнения. Этого не должно быть, если слева от моей точки нет букв. Это имеет больше смысла?

Ответы [ 3 ]

3 голосов
/ 05 мая 2009

В свете уточненных требований вам нужно что-то в этом роде. Я почти уверен, что ты не сможешь уйти без написания элиспа. Что приятно (IMO), это то, что это должно работать для всех режимов, а не только для режима Python.

(defadvice pabbrev-expand-maybe (around pabbrev-expand-maybe-when-not-after-whitespace activate)
  "prevent expansion when only whitespace between point and beginning of line"
  (if (save-match-data
        (save-excursion
          (let ((p (point)))
            (string-match "^\\s-*$" (buffer-substring-no-properties (progn (beginning-of-line) (point)) p)))))
      (let ((last-command (if (eq last-command this-command) (pabbrev-get-previous-binding) last-command))
            (this-command (pabbrev-get-previous-binding)))
        (pabbrev-call-previous-tab-binding))
    ad-do-it))
1 голос
/ 17 января 2013

Как это за поздний ответ?

Теперь это должно работать из коробки, благодаря патчу от Trey. Обязательная вкладка в том, что pabbrev.el несколько капризна, но что делать, если вы хотите быстрого расширения.

0 голосов
/ 05 мая 2009

Нет, элисп? Конечно:

M-x pabbrev-mode

должен отключить его. Но, если вы не против вырезать / вставлять elisp, вы можете отключить режим pabbrev в буферах python:

(add-hook 'python-mode (lambda () (pabbrev-mode -1)))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...