неправильный выход из отступа в emacs python-mode

Я использую режим Python для Emacs. Я вызываю его, используя это в моем .emacs

(add-to-list 'load-path "~/emacs/python-mode.el-6.0.3/")
(autoload 'python-mode "python-mode" "Python Mode." t)
(add-to-list 'auto-mode-alist '("\\.py\\'" . python-mode))
(add-to-list 'interpreter-mode-alist '("python" . python-mode))
(require 'python-mode)
(add-hook 'python-mode-hook
      (lambda ()
    (set-variable 'py-indent-offset 4)
    ;(set-variable 'py-smart-indentation nil)
    (set-variable 'indent-tabs-mode nil)
    (define-key py-mode-map (kbd "RET") 'newline-and-indent)
    ;(define-key py-mode-map [tab] 'yas/expand)
    ;(setq yas/after-exit-snippet-hook 'indent-according-to-mode)
    ))

). Обычно отступы допустимы, если я написал:

if condition:

, а затем нажмите Return, курсор будет правильно помещен в новую строку с отступом. Проблема в том, что не выходит из отступа правильно. В других системах, когда я делаю новую строку в тело предложения с отступом (например, тело оператора if ) и нажмите Backspace, он переместится на один уровень с отступом вместо обратного интервала. Например, если у меня было:

if condition: 
  statement1
  statement2

и я нажал return, backspace , после statement2 , он поместит курсор сюда:

if condition: 
  statement1
  statement2
<-- cursor position

Если у вас много идентифицированных уровней, и он этого не делает, редактирование Python становится невозможным, так как вам придется вручную возвращаться назад, пока не дойдете до правильный уровень отступа ... это подвержено ошибкам и раздражает, например, если у вас было:

for something:
  for other:
    if hello:
      while x:
         statement1
         <-- How to indent back to level of "for other"?

РЕДАКТИРОВАТЬ : Мне не удалось заставить это работать при запуске emacs как "emacs -nw" (я вхожу в систему r удаленно и не хотите, чтобы интерфейс X запускался). Когда я удаляю "-nw" и использую emacs с более медленным интерфейсом X удаленно, все работает ... есть идеи, почему это может быть? Может быть, это проблема конфигурации оболочки, связанная с backspaces или чем-то подобным?

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

7
задан 13 July 2012 в 13:05
поделиться