我爲自己使用以下「解決方案」:項目根由包含Makefile
的目錄定義,我已將F12綁定到特定於模式的elisp函數,該函數「編譯」該項目通過創建相應的Makefile的第一個目標,這是通過遞歸地從當前文件的目錄向上發現的
這是一個有點設置,但你將neve r必須重新構建您的.metadata
目錄,就像以前的Eclipse一樣。一旦建立起來,你只需要放置適當的Makefiles,並且你有你的項目。
(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))
)
然後,例如,由乳膠和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")
)
)
好,人們正在努力! 我習慣了一個商業代碼編輯器,並且對emacs非常新穎,我希望僅限於項目文件的搜索,自動完成,根據光標下的內容預覽函數原型......這些已經存在I猜測,但讓他們僅限於項目的內容,我不這麼認爲。 – Gauthier 2010-01-18 13:36:35