如何在 Emacs 的 .F90 文件中以不同方式突出显示浮点数和整数?
How to highlight floating numbers and integers differently in .F90 files in Emacs?
如何在 Emacs 中以不同方式突出显示 .F90 文件中的浮点数和整数?在我的24.4.1版本中,浮点数和整数没有区别。如何以不同的颜色显示它们?
默认的 emacs fortran 模式不区分浮点数和整数的字体。但是,您可以使用 highlight-numbers
包(通过 M-x package-list-packages
或 https://github.com/Fanael/highlight-numbers)。
将以下内容添加到您的 .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 之前的回答和建议highlight-number-mode
。他的解决方案可能有效。但是,我的要求稍微复杂一些,所以我决定换一种方式。
此外,我不得不承认我是编程的初学者。因此,您可能会在我的代码中发现一些愚蠢的行。如果您认为有更好的方法,请随时告诉我。
这是我的解决方案。
在 emacs 中安装 highlight-number-mode
和 parent-mode
。 (第二个是第一个需要的。)在我的例子中,它们安装在 /~/.emcas.d/elpa/
.
下
据我所知,原来的highlight-number-mode
不支持f90-mode
,它对所有数字(例如2、3.4、8e-2)均等地突出显示,通过改变喜欢的颜色。这不符合我的要求。具体来说,我只想突出显示浮点数,并且在我的 .f90 脚本中将它们表示为 2. 或 .5。在 Fortran 90 中,浮点数和整数有不同的除法规则。所以,我希望以不同的方式可视化它们,以减少引入此类错误的风险。因此,我在源代码中更改了以下部分(highlight-numbers.el
):
(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)
如果将上面的代码与 Fanael Linithien 的原始代码进行比较,您会注意到我添加了两个 "."
。正如 Fanael 所说(在私人讨论中),这可能是由于 "."
在 emacs 的 f90-mode 中被用作标点符号。所以,我必须相应地修改正则表达式和 table。
完成上述操作后,我将行 (add-hook 'f90-mode-hook 'highlight-numbers-mode)
放入 init.el
以通过 elpa 加载此包。
之后我代码中的浮点数会高亮显示,比如
example
你可以看出浮点数和整数的区别。
最后,我要补充一点,我已经使用了好几天了。到目前为止没有问题发生。所以,我想它正在工作! :)
如何在 Emacs 中以不同方式突出显示 .F90 文件中的浮点数和整数?在我的24.4.1版本中,浮点数和整数没有区别。如何以不同的颜色显示它们?
默认的 emacs fortran 模式不区分浮点数和整数的字体。但是,您可以使用 highlight-numbers
包(通过 M-x package-list-packages
或 https://github.com/Fanael/highlight-numbers)。
将以下内容添加到您的 .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 之前的回答和建议highlight-number-mode
。他的解决方案可能有效。但是,我的要求稍微复杂一些,所以我决定换一种方式。
此外,我不得不承认我是编程的初学者。因此,您可能会在我的代码中发现一些愚蠢的行。如果您认为有更好的方法,请随时告诉我。
这是我的解决方案。
在 emacs 中安装
highlight-number-mode
和parent-mode
。 (第二个是第一个需要的。)在我的例子中,它们安装在 /~/.emcas.d/elpa/
. 下
据我所知,原来的
highlight-number-mode
不支持f90-mode
,它对所有数字(例如2、3.4、8e-2)均等地突出显示,通过改变喜欢的颜色。这不符合我的要求。具体来说,我只想突出显示浮点数,并且在我的 .f90 脚本中将它们表示为 2. 或 .5。在 Fortran 90 中,浮点数和整数有不同的除法规则。所以,我希望以不同的方式可视化它们,以减少引入此类错误的风险。因此,我在源代码中更改了以下部分(highlight-numbers.el
):
(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)
如果将上面的代码与 Fanael Linithien 的原始代码进行比较,您会注意到我添加了两个 "."
。正如 Fanael 所说(在私人讨论中),这可能是由于 "."
在 emacs 的 f90-mode 中被用作标点符号。所以,我必须相应地修改正则表达式和 table。
完成上述操作后,我将行
(add-hook 'f90-mode-hook 'highlight-numbers-mode)
放入init.el
以通过 elpa 加载此包。之后我代码中的浮点数会高亮显示,比如
example
你可以看出浮点数和整数的区别。
最后,我要补充一点,我已经使用了好几天了。到目前为止没有问题发生。所以,我想它正在工作! :)