私はmode-compile.el v2.29しか利用できませんが、そのバージョンで問題はあなたが記述した通りです。コンパイルコマンドの引数は正しくエスケープされず、有効にするオプションはありません。
それはハックのビットですが、あなたは正しいあなたの.emacs
ファイルでこれをファイル名にエスケープして、関連する機能を再定義することができるはずです。
(eval-after-load 'mode-compile
'(progn
(defun mc--shell-compile (shell dbgflags &optional errors-regexp-alist)
;; Run SHELL with debug flags DBGFLAGS on current-buffer
(let* ((shcmd (or (mc--which shell)
(error "Compilation abort: command %s not found" shell)))
(shfile (or mc--remote-pathname (buffer-file-name)
(error "Compilation abort: Buffer %s has no filename"
(buffer-name))))
(run-cmd (concat shcmd " " dbgflags " " (shell-quote-argument shfile) " "
(setq mc--shell-args
(read-string (if mode-compile-expert-p
"Argv: "
(format "Arguments to %s %s script: "
shfile shell))
mc--shell-args)))))
;; Modify compilation-error-regexp-alist if needed
(if errors-regexp-alist
(progn
;; Set compilation-error-regexp-alist from compile
(or (listp errors-regexp-alist)
(error "Compilation abort: In mc--shell-compile errors-regexp-alist not a list."))
;; Add new regexp alist to compilation-error-regexp-alist
(mapcar '(lambda(x)
(if (mc--member x compilation-error-regexp-alist) nil
(setq compilation-error-regexp-alist
(append (list x)
compilation-error-regexp-alist))))
errors-regexp-alist)))
;; Run compile with run-cmd
(mc--compile run-cmd)))))
私は変更行が変更された
(run-cmd (concat shcmd " " dbgflags " " shfile " "
より完全な修正に対してもすることです
(run-cmd (concat shcmd " " dbgflags " " (shell-quote-argument shfile) " "
へ
dbgflags
をエスケープします(設定されている場合は、変数全体をエスケープするだけで正しいとは限りません)。
mc--shell-args
も設定されています。
「C-cc」は非標準的な結合であると思われる。 'C-h c C-c c'と入力するとどうなりますか? – legoscia
'mode-compile.el'は標準ではありません。 http://perso.tls.cena.fr/boubaker/distrib/mode-compile.elなどを使用していますか? – phils
@phils私は意図的に 'mode-compile.el'を使用していません - 私はそれをインストールしようとしている思い出がなく、また私が使用する唯一の言語が解釈されているので直接そうする必要はありません(R、Perl) 。おそらくESSにインストールされたものです...? Perlスクリプトがバッファにあるとき、メジャーモードはCPerlで、マイナーモードはAbbrevです。明らかに異なるものは何もありません。 – SlowLearner