如何在emacs python-mode中定制多行语句缩进?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (57)

我正在使用emacs 23附带的python模式。我想自定义多行语句的自动缩进。例如,目前emacs更喜欢以下内容

my_var = [
    'val1',
    'val2',
    'val3',
    ]

我会比较喜欢

my_var = [
    'val1',
    'val2',
    'val3',
]

此外,当创建功能与尾随列表或字典emacs喜欢

my_func('first_arg', 'another_arg', {
        'key1': val1,
        'key2': val2,
        })

我想看看

my_func('first_arg', 'another_arg', {
    'key1': val1,
    'key2': val2,
})

是否有可能在emacs中创建python模式的这些定制?我无法找到任何创建这些自定义的文档。

提问于
用户回答回答于

你需要在函数py-indent-line看python-mode.el。

用户回答回答于

可能是这样吧?

(defadvice python-calculate-indentation (around outdent-closing-brackets)
  "Handle lines beginning with a closing bracket and indent them so that
they line up with the line containing the corresponding opening bracket."
  (save-excursion
    (beginning-of-line)
    (let ((syntax (syntax-ppss)))
      (if (and (not (eq 'string (syntax-ppss-context syntax)))
               (python-continuation-line-p)
               (cadr syntax)
               (skip-syntax-forward "-")
               (looking-at "\\s)"))
          (progn
            (forward-char 1)
            (ignore-errors (backward-sexp))
            (setq ad-return-value (current-indentation)))
        ad-do-it))))

(ad-activate 'python-calculate-indentation)

所属标签

可能回答问题的人

  • 西风

    renzha.net · 站长 (已认证)

    9 粉丝1 提问5 回答
  • uncle_light

    5 粉丝518 提问3 回答
  • 学生

    2 粉丝477 提问3 回答
  • 军哥

    重庆雷驰信息技术有限公司 · 经理 (已认证)

    5 粉丝1 提问3 回答

扫码关注云+社区

领取腾讯云代金券