2013-08-15 1 views
2

Я только что установил python-mode из ELPA, и когда я ударил Enter Курсор идет прямо к началу следующей строки. Например, для следующего кода:python-mode indentation не работает при нажатии Enter

def hello_world(): 
    print "hello world!" 
    for i in range(3): 
     print "hello again" 
    return 0 

Я должен ударить TAB после Введите каждый раз после того, как я ударил Enter для перехода к новой строке (хотя интересно TAB посылает курсор в нужном месте).

Когда я установил python-mode У меня появилось несколько предупреждающих сообщений, относящихся к отступу, которые я действительно не понимаю, here is a link to those warning messages.

+1

Последнее изменение должно быть в разделе ответов (путем добавления собственного ответа), а не части исходного вопроса. –

+0

@ hus787 спасибо - совет принят. –

+1

вы также можете вернуть ссылку на «предупреждающее сообщение», которое вы случайно удалили в своем последнем редактировании;) –

ответ

4

C-j - это ключ, который я искал (команда «новая строка и отступ»). Мне удалось пересвязать Введите к этому, поставив следующий крюк в моем init.el:

(add-hook 'python-mode-hook 
      (lambda() 
      (define-key python-mode-map "\r" 'newline-and-indent))) 
+2

просто для людей скопируйте фрагмент кода здесь: ему не хватает «)» с конца, что заставляет emacs жаловаться на искаженный файл инициализации. –

+0

Исправлено, спасибо, что указали это. –

2

Попробуйте использовать C-j вместо введите.

На самом деле, С-J связан с (newline-and-indent), который делает два шага (введите и вкладку), упомянутые в этом вопросе.

В версии 24.4.50.1 поведение по умолчанию было отменено ввести т.е. добавляет символ новой строки и отступы, если это необходимо, а C-J не делает. Хотя функции, к которым привязаны эти привязки ключей, не упомянуты выше.

+0

Это работает - это обычный способ сделать это? Кажется неудобным. –

+0

@MikeVella если вход сделал то, что C-j, я бы нашел такой неловкий. хотя сначала это было иначе, но позже казалось логичным для меня. –

+0

ОК, я нашел дискуссию о C-j в исходном коде. Теперь я попытаюсь перепроверить RET на C-j. –

2

Не знаю, почему вы установили питон-режим, поскольку Emacs поставляется с поддержкой Python встроенной, но я не» Думаю, это влияет на остальных. Если вы хотите, чтобы RET был отступом после вставки новой строки, вам, вероятно, это нравится везде, поэтому вы можете включить electric-indent-mode.

+0

приветствия для подсказки - у моей версии emacs нет режима python, поэтому я установил его. –

+0

Вы уверены? Emacs имеет встроенную поддержку Python с Emacs-22. – Stefan