2014-02-17 27 views
0

我正在使用gedit並試圖將它摔成真正的IDE。我想要的是地圖ctrlshift|在文件類型爲「text/html」時運行我的tidy工具,當文件類型爲「text/x-python」時運行我的autopep8工具。我可以寫一些輸出到當前文檔和一些shell輸出?

事實證明(我認爲這是一個bug),gedit並不關心你指定的文件類型。如果你有一個組合鍵,它將運行一個工具,無論文件類型是否匹配。相關,但也許不是一個錯誤,我只能將鍵盤快捷鍵設置爲一個外部工具。

所以我寫了上CTRL轉變運行一個外部工具|並運行autopep8如果該文件是Python和tidy如果文檔是HTML:

#!/bin/sh 
# [Gedit Tool] 
# Save-files=document 
# Shortcut=<Primary><Shift>bar 
# Output=replace-document 
# Name=Tidy by Filetype 
# Applicability=all 
# Input=document 

if [ $GEDIT_CURRENT_DOCUMENT_TYPE = "text/x-python" ]; then 
    autopep8 - -v -a 
elif [ $GEDIT_CURRENT_DOCUMENT_TYPE = "text/html" ]; then 
    #-i auto indents, -w 80 wrap at 80 chars, -c replace font tags w/CSS 
    exec tidy -utf8 -i -w 80 -c "$GEDIT_CURRENT_DOCUMENT_NAME" 
elif [ $GEDIT_CURRENT_DOCUMENT_TYPE = "text/css" ]; then 
    #TK CSS tidy 
else 
    echo "This seems to be " $GEDIT_CURRENT_DOCUMENT_TYPE " I don't know how to tidy that." 
fi 

即倒數第二行是打破我的心臟之一。如果我沒有爲最後的else定義任何操作,它只會刪除我現有的文檔。如果我運行ctrlshift|和文件類型是不是一個,我已經佔了,我想它的文件類型報告給外殼輸出,不與

這似乎是替換文件內容的應用程序/ x-shellscript我不知道如何整理 那。

有沒有辦法寫我的工具,以便我寫一些輸出到shell和一些文件?

+1

我假設你可能只是想'cat「$ GEDIT_CURRENT_DOCUMENT_NAME」'用它自己替換當前文檔。你有沒有嘗試將消息寫入stderr(即'echo「這似乎是...」>&2')? –

+1

@MarkkuK。謝謝!但爲什麼把你的答案放在評論中?我無法接受它。 – Amanda

回答

0

經與試圖使gedit中更便於使用沒有經驗,我發現這一點:https://wiki.gnome.org/Apps/Gedit/Plugins/ExternalTools?action=AttachFile&do=view&target=external-tools-manager-with-gedit-3.png

的關鍵構造這裏是

echo "..." > /dev/stderr 

至少應從重挫你的文件的內容阻止你如果它的MIME類型不匹配,但我不知道它會打印出來的地方(希望某處理智)。

Edit(對於一個更完整的答案):

您還需要cat $GEDIT_CURRENT_DOCUMENT_NAME以自己替換該文件的內容。這是由@ markku-k指出的(謝謝!)

+1

我仍然需要'cat $ GEDIT_CURRENT_DOCUMENT_NAME',否則它會將我的文件的內容沒有任何內容,但將輸出重定向到'stderr'確實會將它放到Shell輸出窗格中。 – Amanda