2014-02-17 3 views
0

Я использую gedit и пытаюсь бороться с ним в реальной среде IDE. Я хочу, чтобы карта ctrlshift| для запуска моего инструмента tidy, когда тип файла - «text/html» и мой инструмент autopep8, когда тип файла «text/x-python».Могу ли я написать какой-то вывод в текущем документе, а некоторые - в вывод оболочки?

Как выясняется (и я думаю, что это ошибка), 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 Я не знаю, как упорядочить что.

Есть ли способ написать мой инструмент, чтобы написать какой-то вывод в оболочку, а некоторые - в документ?

+1

Я предполагаю, что вы, вероятно, просто хотите «cat» $ GEDIT_CURRENT_DOCUMENT_NAME «» заменить текущий документ на себя. Вы пробовали написать сообщение в stderr (т. Е. «Эхо», похоже, это ... »> & 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' действительно помещается в панель вывода оболочки. – Amanda

Смежные вопросы