25

これが.emacsファイルでの私のflymakeのセットアップです:

 (when (load "flymake" t) 
         (defun flymake-pyflakes-init () 
           (let* ((temp-file (flymake-init-create-temp-buffer-copy 
                              'flymake-create-temp-inplace)) 
              (local-file (file-relative-name 
                           temp-file 
                           (file-name-directory buffer-file-name)))) 
             (list "pyflakes" (list local-file)))) 

         (add-to-list 'flymake-allowed-file-name-masks 
                  '("\\.py\\'" flymake-pyflakes-init))) 

   (add-hook 'find-file-hook 'flymake-find-file-hook)
(load-library "flymake-cursor")

flymakeを.pyファイルにのみ使用したい。残りは無効にします。ただし、常に有効になっています。たとえば、htmlファイルを開くと、常に次のエラーが発生します。エラー(flymake):Flymake:args(val /home/huseyin/vipsatis/templates/cancellation/base_flymake.html)を使用して構文チェックプロセス'xml'を起動できませんでした:検索中プログラムの場合:そのようなファイルやディレクトリはありません、xml。Flymakeはオフになります

だから私はpyファイル以外はオフにしたい。出来ますか?

(同じ問題を抱えている人のために、エラーメッセージを説明したいと思います:Flymakeはxmlとhtmlの検証にxmlstarletを使用します。それを「xmlval ......」と呼ぼうとしますが、次のように呼び出す必要があります。 "xmlstarlet val ...."これを修正するには、flymake.elファイルを見つけて、xmlstarletでxml呼び出しを変更する必要があります。)

4

4 に答える 4

23

リストから HTML エントリを削除します。

(delete '("\\.html?\\'" flymake-xml-init) flymake-allowed-file-name-masks)
于 2011-05-29T07:25:35.757 に答える
6

はい、分かりました。これが私がやったことです: まず最初に flymake.el ファイルを見つけました.インストール時にコンパイル済みバージョン (.elc ファイル) の代わりに使用されます)。次の関数を見つけてコメントした .xml および .html バインディングよりも。

(defcustom flymake-allowed-file-name-masks
  '(("\\.\\(?:c\\(?:pp\\|xx\\|\\+\\+\\)?\\|CC\\)\\'" flymake-simple-make-init)
    ;("\\.xml\\'" flymake-xml-init)
    ;("\\.html?\\'" flymake-xml-init)
    ("\\.cs\\'" flymake-simple-make-init)
    ("\\.p[ml]\\'" flymake-perl-init)
    ("\\.php[345]?\\'" flymake-php-init)
    ("\\.h\\'" flymake-master-make-header-init flymake-master-cleanup)
    ("\\.java\\'" flymake-simple-make-java-init flymake-simple-java-cleanup)
    ("[0-9]+\\.tex\\'" flymake-master-tex-init flymake-master-cleanup)
    ("\\.tex\\'" flymake-simple-tex-init)
    ("\\.idl\\'" flymake-simple-make-init)
    ;; ("\\.cpp\\'" 1)
    ;; ("\\.java\\'" 3)
    ;; ("\\.h\\'" 2 ("\\.cpp\\'" "\\.c\\'")
    ;; ("[ \t]*#[ \t]*include[ \t]*\"\\([\w0-9/\\_\.]*[/\\]*\\)\\(%s\\)\"" 1 2))
    ;; ("\\.idl\\'" 1)
    ;; ("\\.odl\\'" 1)
    ;; ("[0-9]+\\.tex\\'" 2 ("\\.tex\\'")
    ;; ("[ \t]*\\input[ \t]*{\\(.*\\)\\(%s\\)}" 1 2 ))
    ;; ("\\.tex\\'" 1)
    )

他のコメントアウト行はすでにそこにありました。flymake が html および xml ファイルに対して機能しないようになりました

于 2010-11-04T14:48:14.663 に答える
3

。という名前の変数をカスタマイズしますflymake-allowed-file-name-masks

あなたもこのようにそれを行うことができます:

M-x customize-variable RET

flymake-allowed-file-name-masks RET
于 2012-09-20T21:51:23.917 に答える
3

表示されるエラー メッセージには、コマンドライン XML 検証ツールが見つからないことが示されていますxml。互換性のある XML 検証ツールをインストールすることで修正できます (xmllint正しい選択だと思います)。

しかし、本当に HTML および XML ファイルに対して Flymake を無効にしたい場合は、flymake.el ファイル全体をコピーして変更する必要はありません。次の行を init ファイルに追加するだけです。

(defun flymake-xml-init ())

これは、Flymake が HTML および XML ファイルに対して呼び出す関数を空の関数でオーバーライドします。

于 2011-10-08T11:03:08.290 に答える