(setq multi-compile-alist '(;; rust-modeでは3つのアクション (rust-mode . (("rust-debug" . "cargo run") ("rust-release" . "cargo run --release") ("rust-test" . "cargo test"))) ;; c++-modeでは1つのアクション ;; %make-dir は Makefile の存在するディレクトリ ;; (multi-compile-template参照) (c++-mode . (("cpp-run" . "make --no-print-directory -C %make-dir"))) ;; *.txt (ファイル名の正規表現指定) もできる ("\\.txt\\'" . (("text-filename" . "echo %file-name"))))) ;;; 使えるテンプレート (setq multi-compile-template '( ;; /path/to/base.ext ("%path" . (buffer-file-name)) ;; /path/to/ ("%dir" . (file-name-directory (buffer-file-name))) ;; base.ext ("%file-name" . (file-name-nondirectory (buffer-file-name))) ;; base ("%file-sans" . (file-name-sans-extension (file-name-nondirectory (buffer-file-name)))) ;; ext ("%file-ext" . (file-name-extension (file-name-nondirectory (buffer-file-name)))) ;; Makefileのあるディレクトリ ("%make-dir" . (locate-dominating-file (buffer-file-name) "Makefile")) ;;; ここから追加! ;; Rakefileのあるディレクトリ ("%rake-dir" . (locate-dominating-file (buffer-file-name) "Rakefile")) ;; project-root (projectileを使用) ("%proj" . (projectile-project-root)) ))