Как создать новый вид файла в Kate с помощью Python/Pâté?

Я работаю над плагином Kate, написанным на Python, который генерирует большой объем текста, слишком большой, чтобы отобразить его во всплывающем окне. Поэтому я хочу, чтобы Кейт открыла новый безымянный файл и отобразила в нем текст.

Есть ли способ сделать это в Python (кроме запуска подпроцесса echo text | kate --stdin)?

2 ответа

Решение

Я узнал это сам:

import kate
from kate import documentManager as dm
from PyKDE4.kdecore import KUrl


text = "Lorem ipsum dolor sit amet"

# Open a new empty document
doc = dm.openUrl(KUrl())
# Open an existing file
doc = dm.openUrl(KUrl('/path/to/file.ext'))

# Activate view
kate.application.activeMainWindow().activateView(doc)

# Insert text
pos = kate.activeView().cursorPosition()
doc.insertText(pos, text)

Вы можете напрямую использовать трубу:

>>> f = os.popen("kate --stdin", "w")
>>> f.write("toto")
>>> f.close()

Теперь Кейт откроет файл с "toto" в нем.

Более современным решением является использование subprocess модуль:

>>> sp = subprocess.Popen(["/usr/bin/kate", "--stdin"], stdin=subprocess.PIPE, shell=False)
>>> sp.stdin.write("toto")
>>> sp.stdin.close()

Как указано в команде, он не использует оболочку.

Другие вопросы по тегам