如何在Emacs的.F90文件中以不同方式突出显示浮点数和整数?
如何在Emacs的.F90文件中以不同方式突出显示浮点数和整数?在我的24.4.1版中,浮点数和整数之间没有区别。如何以不同的颜色显示它们?默认的emacs fortran模式不会区分浮点数和整数的字体。但是,您可以使用如何在Emacs的.F90文件中以不同方式突出显示浮点数和整数?,emacs,fortran,elisp,Emacs,Fortran,Elisp,如何在Emacs的.F90文件中以不同方式突出显示浮点数和整数?在我的24.4.1版中,浮点数和整数之间没有区别。如何以不同的颜色显示它们?默认的emacs fortran模式不会区分浮点数和整数的字体。但是,您可以使用突出显示数字软件包(通过M-x软件包列表软件包或) 将以下内容添加到.emacs以突出显示浮动(根据需要更改前景色和背景色): (add-hook 'fortran-mode-hook 'highlight-numbers-mode) (add-hook 'after-init-
突出显示数字
软件包(通过M-x软件包列表软件包
或)
将以下内容添加到.emacs
以突出显示浮动(根据需要更改前景色和背景色):
(add-hook 'fortran-mode-hook 'highlight-numbers-mode)
(add-hook 'after-init-hook
(lambda ()
(puthash 'fortran-mode
(rx (and symbol-start
(? "-")
(+ digit)
"."
(+ digit)
(*? any)
symbol-end))
highlight-numbers-modelist)
(set-face-attribute 'highlight-numbers-number nil
:foreground "gray60" :background "black")))
我在两周前发布了这个问题。现在我有了自己的解决方案。所以,我在这里发布它,作为其他可能遇到同样问题的人的参考 首先,我要感谢@Justin之前的回答,并建议使用
突出显示数字模式
。他的解决方案可能有效。但是,我有一个稍微复杂的要求,所以我决定用不同的方式
另外,我必须承认我是一个非常初学编程的人。所以,你可能会在我的代码中发现一些愚蠢的行。如果你认为有更好的方法,请随时告诉我
这是我的解决方案
突出显示数字模式
和父模式
(第一个模式需要第二个模式)。在我的情况下,它们安装在/~/.emcas.d/elpa/
下突出显示数字模式
不支持f90模式
,它突出显示所有数字(例如2、3.4、8e-2)同样,通过改变喜欢的颜色。这不符合我的要求。具体来说,我只想突出显示浮点数,我在.f90脚本中将它们表示为2.或.5。在Fortran 90中,浮点数和整数有不同的除法规则。因此,我希望以不同的方式对它们进行可视化,以减少r因此,我更改了源代码中的以下部分(突出显示数字.el
):“
。正如Fanael所说(在私下讨论中),这可能是因为”“
在emacs的f90模式中被当作标点符号。因此,我必须相应地修改regexp和表
(添加hook'f90 mode hook'突出显示数字模式)
放在我的init.el
中,通过elpa加载此包最后,我想补充一点,我已经用了好几天了。到目前为止还没有出现任何问题。所以,我想它正在工作!:)嗨,贾斯汀,谢谢你的回答。我已经安装了突出显示数字模式和父模式。但是,将您的建议放在我的init.el中会出现一个错误:“Symbol的变量值为void:highlight numbers modelist”。我还尝试直接在highlight-numbers.el中添加fortran模式,然后稍后手动启用此包。但它仍然不能区分浮点数和整数。它们一起变成不同的颜色。你能解释一下你在代码里写了什么吗?提前谢谢!我不确定把上面的代码放在
init.el
中是否有效,我把它添加到了我的~/.emacs
中。错误表明,突出显示数字
包尚未初始化。至于您的第二条评论,这可能意味着,突出显示数字模式
处于活动状态,但使用默认模式匹配,同时突出显示浮点和整数。我上面写的代码只会突出显示浮动。我试图将它放在~/.emacs中,但也不起作用。但是我可以通过第一个钩子初始化包(在我的例子中是f90模式)。所以,我试图修改source.el脚本。到目前为止,我只能突出显示d.d格式(如2.3),但不能突出显示2。或.2等(这是我最想要的)。你知道如何写一个rx,使d。和.d是否也可以突出显示?(lisp让我很困惑…~/.emacs
和~/.emacs.d/init.el
在功能上是等效的。选择一个,不要使用另一个(我喜欢init.el
,因为这样所有东西都在一个目录中)<代码>高亮显示数字modelist未自动加载。只需将使用它的代码包装为(加载后使用eval'突出显示数字…
)。这将在加载库后运行包装代码,因此所有内容都将被定义。它工作正常,谢谢!我更改了elpa文件夹中现有的highlight-numbers.el文件,并通过M-x字节重新编译目录RET~/.emacs.d/elpa重新编译/
(defconst highlight-numbers-generic-regexp
(rx (or
"."
(? (and
symbol-start
digit
symbol-end)
"."
(* digit))))
"Generic regexp for number highlighting.
It is used when no mode-specific one is available.")
(defvar highlight-numbers-modelist
(copy-hash-table
(eval-when-compile
(let ((table (make-hash-table :test 'eq)))
(puthash 'f90-mode
(rx (or
"."
(? (and
symbol-start
(or (and (+ digit) (? (or "." "e" ".e" "E" ".E")) (+ digit))
(and (+ digit) (? (or "e-" ".e-" "E-" ".E-")) (+ digit))
(and (+ digit) "." (+ digit) (? (or "e" "E")) (+ digit))
(* digit))
symbol-end)
"."
(* digit))))
table)