Emacs cperl - 常量块中的缩进

 禎冬魔_784 发布于 2023-01-07 00:50

我正在运行基于GNU Emacs 24.3.50.2的Aquamacs 3.0a.cperl-version是6.2.当我编辑一个Perl常量块时,我得到了我不想要的额外缩进: -

use constant {
    ONE => 1,
        TWO => 2,
        THREE => 3,
    };

我想要的是: -

use constant {
    ONE => 1,
    TWO => 2,
    THREE => 3,
};

问题似乎是添加了cperl-continue-statement-offset,因为我们在一个块内,并且在前一行的末尾没有分号.

有没有办法告诉cperl使用"parens"规则缩进常量块?我确实尝试过调整cperl-indent-parens-as-block,但这没有帮助.我并不感到惊讶,我想我应该寻找一个名为cperl-indent-constant-block-as-parens的变量:-)

1 个回答
  • 在代码中进行一些挖掘表明这是cperl模式中的一个错误 - 它应该像匿名hashref一样处理一个常量块 - 毕竟,这基本上就是它!这是cperl-block-p的一个补丁,它就是这样的.有人会关心批准还是拒绝这个?我的elisp有点生疏:-)

    $ diff -u cperl-mode.el.orig cperl-mode.el
    --- cperl-mode.el.orig  2013-09-27 13:43:56.000000000 +0100
    +++ cperl-mode.el   2014-06-30 18:02:30.000000000 +0100
    @@ -4828,9 +4828,9 @@
           (and (memq (char-syntax (preceding-char)) '(?w ?_))
           (progn
             (backward-sexp)
    -        ;; sub {BLK}, print {BLK} $data, but NOT `bless', `return', `tr'
    +        ;; sub {BLK}, print {BLK} $data, but NOT `bless', `constant', `return', `tr'
             (or (and (looking-at "[a-zA-Z0-9_:]+[ \t\n\f]*[{#]") ; Method call syntax
    -             (not (looking-at "\\(bless\\|return\\|q[wqrx]?\\|tr\\|[smy]\\)\\>")))
    +             (not (looking-at "\\(bless\\|constant\\|return\\|q[wqrx]?\\|tr\\|[smy]\\)\\>")))
             ;; sub bless::foo {}
             (progn
               (cperl-backward-to-noncomment (point-min))
    

    2023-01-07 01:16 回答
撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有