2013-06-27 52 views
2

多年來,我的Windows C標記/遠景解決方案有幾乎工作。我可以構建文件列表,爲vim/gvim導航構建標記(通過Exuberant Ctags),構建cscope.out,並在我通過單擊C源文件啓動的gvim.exe窗口中進行標記。如何從cmd.exe運行時從cscope-win32啓動gvim.exe?

避開我的最後一塊是我無法在cmd.exe中獲得cscope來啓動我的編輯器,當我選擇一個項目時。我確信gvim.exe位於我的Path環境變量中。我確定設置了CSCOPE_EDITOR環境變量(更多關於下面的內容)。但是,當我從cscope中選擇一個訂單項時,編輯器不會啓動。相反,我得到了以下兩個失敗之一:

  1. 如果CSCOPE_EDITOR要麼是的gvim.exe -f或「的gvim.exe -f」然後我看到打印在隨後cmd.exe窗口的頂部行偏移量和文件名(例如「gvim.exe -f +72 myfile.c」),然後在沒有編輯器彈出的情況下很快返回到cscope。
  2. 如果CSCOPE_EDITOR是gvim.exe(沒有-f選項),則啓動一個gvim.exe 進程(我在「進程」下的Windows任務管理器中看到它),但它永遠不會作爲應用程序進入前臺。此外,cmd.exe中的cscope窗口變爲空白,並且無法響應,直到我手動終止生成的gvim.exe進程。

參考:
cscope的-V返回爲 「cscope:版本15.8a」,並從該網站被下載:http://code.google.com/p/cscope-win32/
我的gvim.exe的版本是7.3,其最新的可用http://www.vim.org/

另外,我用「C」標記了這篇文章,因爲雖然這不是C語言問題,但cscope和ctags主要用於C編程,因此我認爲C標記是相關的。 (以爲我會在有人出現之前指出這一點,並刪除標籤,並說這不是C問題,因爲C程序員最有可能得到答案。)

+1

我試過了,但是我沒有看到CSCOPE_EDITOR = gvim.exe的問題 – mattn

+0

@mattn - 謝謝!這是一個有價值的信息。該問題似乎與我的_vimrc中的某些內容有關。當我回到默認狀態(很高興我保存了它)gvim.exe能夠啓動。然而,它擁有焦點(cscope窗口保持黑色,直到我退出gvim)。你看到同樣的行爲嗎?知道如何讓cscope在後臺啓動gvim,以便cscope可以繼續? –

+1

您是否嘗試過'CSCOPE_EDITOR =啓動gvim.exe'? – mMontu

回答

2

在@mattn和@ mMontu和大量的反覆試驗和一個醜陋但簡單的黑客我終於有這個工作。以下是我遇到的問題:

  1. cscope-win32不處理EDITOR或CSCOPE_EDITOR環境變量中的空格。我嘗試了所有我能想到的空間逃脫技巧(單引號,雙引號,反斜槓轉義),而且沒有任何工作。

  2. 當cscope-win32成功啓動gvim.exe時,如果該gvim.exe嘗試添加相同的cscope.out數據庫(通過cs add cscope.out),add命令將掛起。如果add是vimrc文件的一部分,那麼編輯器在打開時會掛起(gvim.exe和cscope.exe進程啓動,但應用程序窗口不會出現)。如果添加是在編輯器窗口打開後完成的,則該窗口將掛起。這似乎與在同一個進程樹中嘗試多個cscope-win32進程有關,但我沒有實際的證據。

這是我對問題的解決方案。就像我說的,這是一個醜陋而簡單的黑客攻擊。

  1. 創建一個包裝器批處理文件。我將它命名爲gvim_cscope.bat。確保它位於PATH環境變量中的目錄中。你可以用cmd來驗證它。通過調用「where gvim_cscope.bat」exe文件。

  2. 編輯批處理文件並添加您的編輯器命令,但在其之前的是命令,其前面帶有窗口start命令。例如,我的批處理文件包含以下內容:

    start gvim.exe %*

  3. 創建/更新您的CSCOPE_EDITOR環境變量設置爲 「gvim_cscope.bat」。如果以前從未修改Windows環境變量,則可以通過開始 - >右鍵單擊計算機 - >屬性 - >高級系統設置 - >環境變量來訪問它們(無論如何在Windows 7上)。

這就是我需要的東西,使事情工作。打開一個新的cmd.exe窗口(以便更新環境變量)並打開cscope.exe,一切正常。我可以從cscope.exe中彈出多個gvim.exe窗口,每個窗口都有自己的連接到cscope.out數據庫。第一個問題可以通過使用包裝器批處理文件(命令中不再有空格)來避免,第二個問題可以通過使用windows start命令來避免,以便gvim.exe作爲單獨的進程啓動。

感謝@mattn和@ mMontu的幫助。很高興能讓事情順利進行!

+1

不客氣,我很高興你解決了它! – mMontu

相關問題