私は自分のプロジェクトを FreePascal に書いて、 opascal-mode
を使って書きます。私は、このモードでは '\'
は完全な文字列ではないと考えているので、その後のすべてのコードが文字列としてハイライト表示されるという問題があります。
バックスラッシュをエスケープ文字として解析しようとしないopascal-modeを変更する(またはフックを追加する)方法はありますか?
FreePascalでは、文字列はバックスラッシュをエスケープ文字としてサポートしていません。
私はGNU Emacs 24.5.1を使用しています。これは、opascal-modeで実行すると、
'\'
の後ろのすべてをハイライト表示するサンプルコードです。
// syntax_highlight.dpr
{$mode objfpc}{$H+}
program my_program;
uses Classes;
var newVal : char;
begin
newVal := '\';//syntax highlight breaks here!
if newVal = '''' then begin
writeln('single quote');
end else if newVal = '\' then begin
writeln('backslash');
end;
end.
私は modify-syntax-entry
を使いこなそうとしましたが、何も試みませんでした。
EDIT:これは@ JeanPierreの修正を実装した後の〜/ .emacs
の固定設定です
;; associate pascal files as opascal-mode
(add-to-list 'auto-mode-alist '("\\.pas$" . opascal-mode))
(let* ((pascal-files '(".pas" ".pp" ".inc" ".lpr" ".dpr"))
(pascal-regexp (concat (regexp-opt pascal-files t) "\\'")))
(add-to-list 'auto-mode-alist (cons pascal-regexp 'opascal-mode)))
;; don't escape backslashes in pascal
(add-hook 'opascal-mode-hook
(modify-syntax-entry ?\\ "."))