2009-12-11 46 views
2

查找本地源文件路徑是否有某種形式的一般路徑重寫/正火設施,我可以在Emacs利用,允許在編譯模式源文件被翻譯成基於遠程路徑的本地路徑?我希望能夠使用符號鏈接,但這在Windows中不適合我。我正在運行GNU Emacs 23.1.1,並嘗試使用cygwin-mount和w32-symlinks.el(使用(customize-option 'w32-symlinks-handle-shortcuts));我試圖使用cygwin-mount和w32-symlinks.el(使用(customize-option 'w32-symlinks-handle-shortcuts))。我無法獲得open-file/dired/completions或compile-mode next-error來跟蹤Windows快捷方式或cygwin符號鏈接。路徑名翻譯在Emacs從遠程(SSH編譯)錯誤文件名

我遠程編譯(通過ssh)和警告/錯誤給在需要用不同的路徑來取代絕對路徑的遠程主機上的前綴(如/nfs/topaz)的文件名(z:/,其實)我希望用符號鏈接來做。

/不會去(得到製表擴大在Emacs到)c:/cygwin~z:/(我$HOME)。

我所希望的是:對符號鏈接解析(製表符完成或打開窗口快捷方式獲取.lnk文件而不是它指向的內容)的修復,或者提供重寫列表的能力路徑名的前綴。連接不是一種選擇,因爲我想要的替換路徑位於不同的驅動器上(這也是Samba安裝)。

回答

1

這也是(下錯誤實際工作吧!)在其他複雜的構建環境中很有用:我使用OpenWRT,並且構建過程將源代碼複製(或提取)到編譯發生的獨立構建目錄。因此,天真地遵循emacs編譯緩衝區中的文件名將導致編輯臨時副本,而不是原始文件。危險的。

+1

回想起來,我發現濫用'directory-abbrev-alist'變量[見手冊](http://www.gnu.org/software/emacs/elisp/html_node/Directory-Names.html)更好地解決我的問題。實際上,您可以告訴emacs編譯目錄名稱是源目錄的別名(「縮寫」),因此當它在編譯目錄中遇到路徑時,它會將其重寫爲源目錄中的路徑。 也可考慮[「魔術文件名」(http://www.gnu.org/s/emacs/manual/html_node/elisp/Magic-File-Names.html)和鉤'文件名處理程序,ALIST '。 – 2010-04-29 16:02:08

+0

我還沒有測試過你的更新答案,但我喜歡這兩個。 – 2011-10-17 20:43:14

0

後重新閱讀了幾次,我還是不太清楚你的情況是什麼 - 你遠程和本地編輯編譯?如果是這樣,似乎你應該嘗試在同一臺機器上執行這兩項任務,或者嘗試在emacs中嘗試tramp模式。我只是沒有看到將遠程路徑轉換爲本地路徑的簡單方法。

+0

遠程主機有一些本地規範的絕對路徑前綴,本地是一個samba掛載,即'z:/'。正如我所說,他們真的是相同的文件。我很久以前就用過流浪漢了。 – 2009-12-11 02:27:02

+0

我在我的Windows機器上使用emacs,因爲我的cygwin xserver不支持子像素字體(cleartype)。 – 2009-12-11 02:28:07

2

這裏的部分解決方案:

(custom-set-variables '(compilation-search-path (quote (nil "z:/dir1" "~/dir2")) 

等。當然,我要加幾十個路徑,但它是一個巨大的進步