Я использую Emacs python-mode.Я вызываю его, используя это в моем .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, он отступает на один уровень в отступе, а не на 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"?
EDIT : Мне не удалось заставить это работать, когда я запускал emacs как "emacs -nw" (я удаленно подключаюсь к серверу и не хочу, чтобы интерфейс X запускался).Когда я удаляю "-nw" и использую emacs, с более медленным интерфейсом X удаленно, все это работает ... есть идеи, почему это может быть?Может ли это быть проблема конфигурации оболочки, связанная с возвратами или что-то в этом роде?
Как это можно исправить?Я просто хочу, чтобы он отступал на уровне отступа, если я нахожусь в предложении.спасибо.