我正在使用f90代碼,但使用固定格式的文件。所以我爲這個代碼文件做了一個特定的主要模式(事實上只是使用fortran模式縮進函數的f90模式)。但是,我仍然無法處理這件事:第6列中的連續字符的着色。如何在我修改後的f90.el中使用該功能?如何在Emacs中突出顯示Fortran固定格式延續線符號,而不是Fortran模式?
非常感謝!
編輯:
這裏是衍生模式:
(require 'fortran)
(define-derived-mode epx-mode f90-mode "EPX"
(set (make-local-variable 'indent-line-function) 'fortran-indent-line)
(set (make-local-variable 'indent-region-function)
(lambda (start end)
(let (fortran-blink-matching-if ; avoid blinking delay
indent-region-function)
(indent-region start end nil))))
(set (make-local-variable 'font-lock-syntactic-keywords)
epx-font-lock-syntactic-keywords)
)
(defvar epx-font-lock-syntactic-keywords nil
"`font-lock-syntactic-keywords' for F90.
These get fixed-format comments fontified.")
(let ((comment-chars "cd\\*") ; `d' for `debugging' comments
)
(setq epx-font-lock-syntactic-keywords
;; Fixed format comments. (!-style handled normally.)
(list
(list (concat "^[" comment-chars "]") 0 '(11))
(list (concat "^[^" comment-chars "\t\n]" ".\\{71\\}"
"\\([^\n]+\\)")
1 '(11))))
)
(provide 'epx)
它改變indet-line-function
和indent-region-function
到FORTRAN版本,而不是F90。它還修改font-lock-syntactic-keywords
以固定格式註釋的顏色。
而且個例代碼:
module foo
* This is a fixed format comment
call bar(a, ! this is a f90 comment and a fortran splitted line
& b)
42 ! this is a label for a ugly goto
end module foo
我也只是注意到,標籤不高亮太...
編輯:好的;我添加了以下內容使其工作:
(font-lock-add-keywords 'epx-mode
'(("^ *\\([0-9]+\\)" . font-lock-constant-face)
("^ \\{5\\}\\([^ 0\n]\\)" 1 font-lock-string-face)
("^\t\\([1-9]\\)" 1 font-lock-string-face)))
非常感謝!
您可以發佈代碼示例嗎? – Lindydancer 2014-09-23 13:29:51
和修改後的el.f90的例子。並描述它現在的功能。 – 2014-09-23 16:10:08
相關? http://stackoverflow.com/questions/14319854/can-i-use-emacs-f90-mode-with-fixed-format?rq=1 – 2014-09-23 16:11:57