问题标签 [cperl-mode]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
perl - Xemacs perl 编译无法进入错误位置,显示“错误类型参数”错误
编译 perl 脚本后,我在编译窗口中出现语法错误。如果我尝试使用Goto Error
命令,它不起作用并显示错误消息:
我使用cperl 6.2
和xemacs 21.5.34
。
emacs - 如何在 aquamacs 上启用 cperl 语法检查?
检查语法在 cperl 菜单中被禁用。如果我尝试M-x cperl-check-syntax
,我会收到错误消息
无法打开加载文件:没有这样的文件或目录,模式编译。
我在emacswiki上没有找到任何提示。
perl - 区分需要缩进的多行字符串和不需要缩进的多行字符串
---+ 简介
这个问题是关于在 emacs 的 cperl 模式下缩进多行字符串,例如对于 Perl,这样它们就不会破坏代码流。
我知道如何获得我想要的缩进,使用=~ s/^[^\S\n]*\|//mhr
字符串上的转换,并提供 emacs :about 建议cperl-calculate-indent
,syntax-ppss
用于识别我何时在字符串中。
麻烦的是,有时我想做这样的缩进,有时又不想。
我寻求有关约定的建议,BKM,以暗示所需的缩进是什么。
我希望其他人在我之前解决了这个问题。
---+ 详细信息:
我将此作为 emacs/cperl 模式问题提出,但该问题对于允许多行字符串的语言是通用的。不仅是 Perl,还有 Javascript、C/C++、Javascript(不破坏缩进的多行字符串)、LISP 和 elisp 等。
我经常编写使用多行字符串的 Perl 代码。
我不喜欢多行字符串如何打破缩进:
我更喜欢保持相同的缩进,所以我经常做类似的事情
好的,所以这很好用,我已经做了很多年,可能几十年了。
过去效果不佳的是缩进,使用像perl-mode' and
cperl-mode' 这样的包。
好的,所以我解决了这个问题,使用
所以现在我可以缩进多行字符串。如果那是我想做的。
不幸的是,有时我确实想缩进多行字符串。有时我不会。
- 例如,如果我在 cperl 模式下编辑它,我可能会继承我不想意外破坏的遗留代码。
此外,我可以对这些多行字符串进行不同类型的缩进/转换:
- 无 - 多行字符串的标准 cperl 模式缩进
- 修剪行首的前缀,例如 s/^[\S\n]*
- 有时我想要 cperl-mode 提供给 qw{} 的相同类型的缩进 - 基本上,我创建自己的 qw 允许使用逗号等没有警告的内容,s/\s+/ /g
- 有时我实际上可能希望字符串像 HTML、C 或 ...
我知道如何做这些。我可以为任何约定使用识别器。
但是...我正在寻找关于如何区分的建议,理想情况下是标准做法或 BKM。别人会觉得可读的东西。
例如,我考虑使用PerlX::QuoteOperator my_q
. 但这是不标准的,可能会混淆其他人,并且将来可能会中断。此外,我真正想做的只是提供缩进提示,而不是更改语言。
例如,如上所述,我已经使用了 fixup functions
fixup_string( q{ ... } )
。我可以在这些上进行模式匹配。但是当用户添加新的修复功能等时,这会中断。
例如,我考虑过查看字符串的第一行,例如
这适用于我的前缀 s/^[^\S\n]*://mgr,但不适用于其他情况。
(我目前正在做(looking-at ".[~!@#$%^&*_+=|:;'?/]$"))
,这很容易,但是有明显的问题(比如,如果我想从一个字符串开始"|\n..."
怎么办。即它没有通过测试“不要破坏合理可能的现有代码”。)
如果 Perl 有一个不是行尾的注释,比如 C 的 `/ ... /'我可能会 dp
但是 Perl 确实有这样的非行尾注释。(是吗?是否有任何等效的句法技巧?)
因此我的问题。
我相信其他人之前已经解决了这个问题。我很想知道他们做了什么。
在许多方面,这只是同一缓冲区内多种模式的特例,https://emacswiki.org/emacs/MultipleModes。我想避免https://www.emacswiki.org/emacs/HtmlModeDeluxe中提到的问题。
perl - ISO Emacs [C]Perl 模式对哈希引用像哈希一样着色
我仍然使用 Perl,一些新代码,并维护旧代码。我使用 emacs 和 cperl 模式。我喜欢语法着色。
起初(很多年前)我不喜欢 cperl-mode 对数组和哈希的特殊着色,但它已经在我身上成长了。有时我会更喜欢使用散列而不是散列引用,只是为了获得特殊的颜色。这听起来可能不是那么糟糕 - 但如果我承认偶尔使用全局 %hash 或 $hash{key} 而不是对象成员 $hashref->{key},只是为了获得颜色,那么,这很糟糕。即语法着色使我想要遵循不良的编程习惯。
所以,我的问题是:有没有人有 emacs/elisp 配置代码来获取 cperl-mode 或 perl-mode 来为与 $hash{key} 相同或相似的 $hashref->{key} 之类的哈希引用着色?
让我用粗体表示可能被着色的地方:
- cperl-mode 现在可以: $hash {key}
- 我想要什么: $hash-> {key}
我已经在 emacs 中对着色(面)进行了广泛的定制——例如着色以区分 DEBUG 代码和非调试代码、TEST 和非测试等——但我还没有设法在 cperl 模式下获得这种语法着色。(后续:我最终得到了 font-lock-add-keywords 工作,如下面我对自己问题的回答所示。)
在下面的示例中,您可以看到 $hashref->{key} 没有着色,而 $hash{key} 是。
对数组引用类似,也许还有其他引用。
我意识到着色引用仅适用于 $hashref->{key} 之类的 deref,而不适用于 $hashref1 = $hashref2 之类的其他内容。我认为我可以忍受这一点。
perl - qw 关键字的 Emacs 缩进问题
我在 jrockway 的 cperl-mode 存储库的最后一次提交中使用 cperl-mode 6.2 在 Windows 上运行 Emacs 26.3。
我对 Emacs 有以下配置:
当我用 qw() 初始化一个数组时,它给了我以下信息:
这不是我的指导方针,因为我遵循 80 个字符的规则……我不知道这是正常行为还是错误。我尝试了多种配置,查看了 cperl 的自定义组,但我找不到一种方法来制作我想要的东西。这是我想做的:
任何人都有想法或 Elisp hack 来做到这一点?
感谢您的帮助 :)