循环遍历Emacs中python.el中可能的缩进

时间:2014-09-14 22:03:51

标签: python emacs

最新版本的Emacs(例如24.3.93.1)附带python.el。如何为给定块循环不同级别的缩进?

例如在代码中:

for ix in range(10);
   line1
   line2 # <- two possible values of indentation for this line

EmacsWiki似乎没有提供相关信息,我无法在C-h m上找到任何内容。是否支持此功能?

2 个答案:

答案 0 :(得分:3)

两种python模式都使用 TAB 进行循环。如果 TAB 不循环,请检查您的init resp。考虑提交错误报告。

顺便说一句,它完成的方式略有不同:从最外面的位置python.el将立即dedent,而第一次击中python-mode.el从正确的最外位置什么都不做。 python-mode.el中的第二个 TAB 将跳转到第0列,然后通过缩进逐步缩进。 Python.el执行逆操作,通过缩进逐步缩进,但从列零开始跳转到最右边。

答案 1 :(得分:2)

使用 C-h m 以了解这一点。它调用describe-mode函数。

您还可以查看python.el文件并查找define-key

;; Indent specific                                                                                                                         
(define-key map "\177" 'python-indent-dedent-line-backspace)                                                                               
(define-key map (kbd "<backtab>") 'python-indent-dedent-line)                                                                              
(define-key map "\C-c<" 'python-indent-shift-left)                                                                                         
(define-key map "\C-c>" 'python-indent-shift-right)                                                                                        
(define-key map ":" 'python-indent-electric-colon)      

indent

;; Indentation: Automatic indentation with indentation cycling is                                                                              
;; provided, it allows you to navigate different available levels of                                                                           
;; indentation by hitting <tab> several times.  Also when inserting a                                                                          
;; colon the `python-indent-electric-colon' command is invoked and                                                                             
;; causes the current line to be dedented automatically if needed.