簡體   English   中英

使用帶有Flymake的.csx文件的emacs - 錯誤與不平衡的大括號

[英]Using emacs for .tex files with Flymake - error with unbalanced braces

我想在emacs中使用flymake進行我的.tex文件編輯。

我已經把它全部運行起來,直到我輸入一個不平衡的支架{} 當flymake啟動時,它會返回錯誤:

Flymake:運行時發生配置錯誤(pdflatex -file-line-error -draftmode -interaction = nonstopmode /home/matt/test_flymake.tex)。 Flymake將關閉。

為了完整.emacs ,這是我的.emacs文件的相關部分:

(defun flymake-get-tex-args (file-name)
  (list "pdflatex"
    (list "-file-line-error" "-draftmode" "-interaction=nonstopmode" file-name)))

查看flymake 手冊會給出一些正在發生的事情:

CFGERR:語法檢查進程返回非零退出代碼,但未報告錯誤/警告。 這表示可能的配置錯誤(例如,語法檢查工具沒有合適的錯誤消息模式)。

因此,挖掘日志(flymake-log-value = 3)我發現問題在於運行pdflatex ,因為解析器返回非零退出代碼,但不會生成flymake識別為錯誤的內容。 特別:

parsed 'Runaway argument?', no line-err-info
parsed '{Conclusions \bibliographystyle {plain} \bibliography {ma\ETC.', no line-err-info
parsed '! File ended while scanning use of \@xdblarg.', no line-err-info
parsed '<inserted text> ', no line-err-info
parsed '                \par ', no line-err-info
parsed '<*> /home/matt/test_flymake.tex', no line-err-info
parsed '                               ', no line-err-info
parsed '! Emergency stop.', no line-err-info
parsed '<*> /home/matt/test_flymake.tex', no line-err-info
parsed '                               ', no line-err-info
parsed '!  ==> Fatal error occurred, no output PDF file produced!', no line-err-info

所以, pdflatex對我的“失控論證”感到生氣,但卻沒有產生flymake認為是錯誤的東西。 深入研究flymake.el文件顯示flymake-err-line-patterns有這種模式:

("\\(LaTeX \\(Warning\\|Error\\): .*\\) on input line \\([0-9]+\\)" 20 3 nil 1)

那么......最后一個問題似乎是flymake不承認Runaway argument? 作為錯誤消息。

現在,我的問題是:我錯過了什么嗎? 我不能成為遇到這個問題的第一個人,但我無法找到任何相關信息。 我發現很難相信每個人都只是構建一個自定義解決方案來修改錯誤模式,特別是因為我沒有做任何不尋常的事情而只是試圖讓它開箱即用。

如果它很重要,我在Ubuntu 12.04上使用emacs 24.3並運行pdflatex(pdftex)2012。

我錯過了什么? 感謝所有您提供的建議。

好吧,我猜測3天內有13次觀看意味着我不太可能得到答案,所以這就是最終為我工作的......

與大多數emacs問題一樣,可以通過編輯.emacs文件來解決此問題。 將此塊添加到您的文件中:

(add-to-list
    `flymake-err-line-patterns
    '("Runaway argument?" nil nil nil)) ; fixes unbalanced braces in LaTeX files

這應該解決latexpdflatex的問題。

請注意,(pdf)latex沒有列出產生此錯誤時的行號(這是nil nil nil代表的),所以如果發生這種情況,那么flymake會告訴你錯誤是在你的第一行.tex文件。

MCf (向前SEXP)和MCb (向后SEXP)將跳過平衡括號,讓你搜索無與倫比的。 資源

為了完整起見,這里是flymake檢查我的.tex文件的方式:

(defun flymake-get-tex-args (file-name)
  (list "pdflatex"
        (list "-file-line-error" "-draftmode" "-interaction=nonstopmode" file-name)))

如果您的語法檢查器不同,或者產生不同的錯誤消息,那么換掉"Runaway argument?" 帶有檢查程序錯誤消息的文本。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM