2009-06-27 38 views
7

「プロジェクトファイル」といっても、もっともらしい意味です。私はWindows用のemacs W32を使ってropemacsで作業するいくつかのpythonプロジェクトを持っています。理想的なのは、emacsを開いてローププロジェクトを開き、そのプロジェクトの最上位ディレクトリにスピードバーを設定するためにデスクトップ上でクリックできるアイコンがあるかどうかです。次に、同じ方法で(しかし、そのプロジェクトのために)設定された独自のemacsで次のプロジェクトを開く方法があるかもしれません。もちろん、デスクトップ上のアイコンではなく、同じ効果を得るために使用できるemacsコマンドやシェルコマンドがあれば、それも受け入れられます。Emacsで「プロジェクトファイル」を作成する方法はありますか?

これを行う方法はありますか?私にはelisp-fuは全くありません。 :-(

答えて

1

bash/cmd.exeで自分自身をロールバックすることができます。emacsディストリビューションにはrunemacs.batという名前の.batファイルがあり、これを引数として開くファイルを受け取ります。

2

プロジェクトルートはMakefileを含むディレクトリで定義されています。私はF12を "コンパイル"するモード特有のelisp関数にバインドしました。対応するMakefileの最初のターゲットを作成してプロジェクトを作成します。これは、現在のファイルのディレクトリから上に再帰的に移動することによって見つかります。

これはセットアップの少しですが、あなたの.metadataディレクトリを再構築する必要があります。一度セットアップすれば、適切なMakefileを置くだけで、あなたのプロジェクトができます。

(defun get-makefile-recursively-higher() 
    (loop for i below 100 for cwd = (expand-file-name default-directory) 
     then next for next = (expand-file-name (concat cwd "/..")) for file = 
     (concat cwd "/" "Makefile") do (cond ((and (file-exists-p file)) 
              (return file))) until (equal cwd next)) 
) 

これは次に使用されます。 LaTeXのとPythonモードによって次のように

(defun py-execute-prog (&optional target) 
    "Invoke python on the file being edited in the current buffer using 
    arguments obtained from the minibuffer. It will save all of the modified 
    buffers before trying to execute the file." 
    (interactive) 
    (let* (makefile file cmd) 
    (setq makefile (get-makefile-recursively-higher)) 
    (setq file (buffer-file-name (current-buffer))) 
    (setq cmd (concat "make -f " makefile)) 
    (setq default-directory (file-name-directory makefile)) 

    (save-some-buffers (not py-ask-about-save) nil) 
    (setq py-pdbtrack-do-tracking-p t) 
    (if (get-buffer py-output-buffer) 
     (kill-buffer py-output-buffer)) ; Get rid of buffer if it exists. 
    (global-unset-key "\C-x\C-l") 
    (global-unset-key "\C-x\C-p") 
    (global-unset-key "\C-x\C-e") 
    (global-unset-key "\C-x\C-n") 
    (global-set-key "\C-x\C-l" 'py-last-exception) 
    (global-set-key "\C-x\C-p" 'py-previous-exception) 
    (global-set-key "\C-x\C-e" 'py-current-line-exception) 
    (global-set-key "\C-x\C-n" 'py-next-exception) 
    (define-key comint-mode-map [mouse-3] 'py-current-line-exception) 
    (make-comint "Python Output" "make" nil "-f" makefile) 
    (if (not (get-buffer py-output-buffer)) 
     (message "No output.") 
     (setq py-exception-buffer (current-buffer)) 
     (pop-to-buffer py-output-buffer) 
    ))) 


(defun make-tex (&optional target) 
    (interactive) 
    (let (makefile cmd) 
    (setq makefile (get-makefile-recursively-higher)) 
    (save-buffer) 
    (TeX-save-document (TeX-master-file)) 

    (setq cmd (concat "make -j4 -f " makefile " LATEXPARAM=\"-halt-on-error -file-line-error\"" 
         " TEXMASTER=" (expand-file-name (TeX-master-file)) ".tex" 
         " TEXMASTERDIR=" (file-name-directory makefile) "/")) 

    (when (stringp target) 
     (setq cmd (concat cmd " " target)) 
    ) 
    (ad-activate-regexp "auto-compile-yes-or-no-p-always-yes") 
    (compile cmd) 
    (ad-deactivate-regexp "auto-compile-yes-or-no-p-always-yes") 
    ) 
) 
あなたはすべてのセッション、私はdesktop.elの使用について投稿答えを使用し、プロジェクトに必要な方法を設定し、名前の取得ができ
2

eprojectがありますが、それは非常にまばらに文書化されているようです。

4

私は実際にこの問題の解決に取り組んでいます。私はいつも開いている/閉じていたファイル群を持っていました。また、magit-statusウィンドウやdiredバッファなどを開いていました。私は自分のプロジェクトモードでmetaprojectを始めました。非常に早い段階にありますが、私は現在作業中のプロジェクトグループにこれを使用しています。

は、ここでそれをチェックアウト:まばらに文書化されてもgitのには何がhttp://nafai77.github.com/metaproject/

は、かなり安定しています。私はすぐにもう一度ここで作業を開始するつもりです。私は現在、小さなプラグインアーキテクチャの基礎を持っているので、プロジェクトを開いたときに実行できるカスタムアクションを登録できます。

+0

人々がそれに取り組んでいるといいですね! 私は商用コードエディタに慣れていて、emacsにはまったく新しいので、カーソルの下にあるものに応じて、プロジェクトファイル、オートコンプリート、関数プロトタイプのプレビューに限定して検索したいと思っています。プロジェクトの内容に限定されているとは思えません。 – Gauthier

0

Bookmark+を参照してください。デスクトップブックマーク、Dired bookmarks、またはBookmark-Listブックマークを使用して、必要な操作を行うことができます。コードや複数のブックマークを1つのブックマークにカプセル化して、必要な状態と設定だけを取得することもできます。

他を見る:Iciclessupport for projectsもっとオプションがあります。

関連する問題