Редактирование Python в Emacs

Я посмотрел на python-mode и python.el. Я использую python-mode.el. Я также использую веревку и веревочные станки. Я ищу либо какую-то документацию по этому, которая мне помогает, или другой пакет elisp или что-то еще.

Моя текущая проблема заключается в том, что код, который я дал, имеет несовместимые размеры отступов. Для некоторых блоков это будет два, для некоторых - 4. Я хочу это убрать, но по какой-то причине, когда я говорю emacs "исправить отступы", он просто нажимает на вкладку в каждой строке, что приводит к ошибкам в коде. То, что я хочу, это сохранить тот же относительный отступ, но стандартизировать по 4 пробелам. Позволит ли мне что-нибудь сделать это легко?

Я полагаю, я мог бы найти каждый случай неправильного отступа, заблокировать его и запросить-заменить 2 пробела на 4 пробела. Но это слишком сильно зависит от моей точности, когда я замечаю, где это должно быть сделано. Кроме того, это много кода.

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

Благодарю.

3 ответа

Предполагая, что вы использовали комментарий Свена Марнача для очистки базы кода, я думаю, вам просто нужно заставить python-mode.el использовать стиль отступов, который вы предпочитаете?

Посмотрите на переменные py-indent-offset, а также py-smart-indentation (и, возможно, также py-continuation-offset а также py-honor-comment-indentation). Как и нормальный indent-tabs-mode,

Вы можете настроить их (Mx customize-group RET python RET) или добавьте пользовательскую функцию в python-mode-hook, например:

(add-hook 'python-mode-hook 'my-python-mode-hook)
(defun my-python-mode-hook ()
  (setq indent-tabs-mode nil
        py-smart-indentation nil
        py-indent-offset 4))

С py-smart-indentation, установленным в `t'

текущий python-mode.el должен это сделать.

http://launchpad.net/python-mode

В случае ошибки, пожалуйста, сообщите там

(custom-set-variables
   ...
   '(indent-tabs-mode nil)
   '(tab-stop-list (quote (4 8 16 24 32 40 48 56 64 72 80 88 96 104 112 120)))
   '(tab-width 4))

Очевидно, что это глобальные настройки для режимов, которые их соблюдают (что делает Python-режим). Я совсем не суетился с настройками отступов в режиме python.

Другие вопросы по тегам