2017-01-12 4 views
0

Я хочу, чтобы не использовать вкладки в emacs, я хотел бы установить его так, чтобы нажатие клавиши табуляции вставляло заданное количество пробелов на основе типа файла. Например, я хотел бы нажать вкладку, чтобы вставить 4 пробела при работе над файлом python. Вот мой текущий файл .emacsКак внести вкладку вставить заданное количество пробелов в Emacs

(setq-default indent-tabs-mode nil) 
(setq tab-width 4) 
(setq tab-stop-list (number-sequence 4 200 4)) 

В настоящее время, когда я нажимаю вкладку, это только добавляет пробелы, если это то, что Emacs считает надлежащее место. Например, если я открыл файл python и нажал вкладку, ничего не произошло. Однако, если я набрал «if:», а затем ударил вкладку на следующей строке, он добавил бы 4 пробела. Однако, если я снова нажал вкладку, она вернет меня к началу строки. Я думаю, что просто хотел бы сделать так, чтобы он добавлял заданное количество пробелов, просто и просто (если кто-то не может дать мне вескую причину, почему полезно иметь цикл табуляции по линии).

Основная причина, по которой я хочу это, заключается в том, что я работаю над проектом, в котором комментирование выполняется в соответствии с конкретным форматом, включающим использование отступов на основе наборов из 4 пробелов. Например:

r""" 
    Return the value of the q-gamma function. 

    .. MATH:: 

     qgamma(z,q) = \Gamma_q (z). 
    """ 

Так, для линии с «qgamma», я должен начать его с 8-ми пробелов, и я хотел бы иметь возможность од что вкладки, нажав дважды. Тем не менее, emacs не считает, что это подходящее место, чтобы иметь возможность дважды вставлять вкладку, поэтому, когда я дважды нажимаю вкладку, она возвращает меня к началу строки.

Спасибо!

Редактировать: проверка переменной основного режима говорит о том, что она находится в режиме python.

+0

Возможно, вы захотите добавить, какой основной режим вы используете для редактирования файлов Python. –

ответ

0

M-x customize, найти py-tab-indent, переключить его и Apply. Я считаю, что это поведение, которое вы ищете. Проверьте его, и если да, то Apply and Save настройка.

Отмечая, что @jpkotta указал, что приведенный выше для python-mode.el, а не встроенный python.el.

+0

Это для 'python-mode.el', который не совпадает с встроенным' python.el'. – jpkotta

+0

Извините, он упомянул режим python. Я думал, что он имел в виду пакет python-mode. –

+0

Это все еще двусмысленно. Основной режим - «python-mode» для обоих. Я не указывал, что ваш ответ как-то плохой, просто нужно отметить, какой режим python вы имеете в виду. – jpkotta

0

Если вы используете встроенный в python.el, вы можете установить indent-line-function в indent-relative вместо python-indent-line-function в python-mode-hook.

(defun jpk/python-mode-hook() 
    (setq indent-line-function #'indent-relative)) 
(add-hook 'python-mode-hook #'jpk/python-mode-hook) 

Каждый основной режим имеет свою собственную функцию вдавливания, на который указывает переменная indent-line-function. indent-relative - это очень простая, общая функция отступа и используется для fundamental-mode (самый основной основной режим).


Python немного странно в Emacs в том, что она широко используются два основных режима, встроенный в python.el и третьей стороной python-mode.el. Используйте то, что вы хотите, но будьте в курсе того, что вы используете, и о которых люди упоминают в статьях и SO-ответах.

Смежные вопросы