Внешние программы

Модуль Внешние программы позволяет вызывать внешние приложения, передавая им данные, которые связаны с текущим документом (например, его URL-адрес, каталог, текст или выделенный фрагмент). После включения модуля появляется страница настройки (она показана далее), на которой возможно изменить или удалить существующие программы. Также возможно добавить новые программы. После добавления они появятся в подменю Внешние программы меню Сервис.

На странице настройки возможно добавить новые внешние программы, нажав кнопку Добавить. После этого появится всплывающее меню, которое позволяет добавить новую внешнюю программу, добавить существующую программу из предустановленного списка или добавить новую категорию для организации внешних программ. Существующие программы возможно изменить либо по двойному щелчку, либо нажатием кнопки Изменить.... Кнопка Удалить позволяет удалить выбранные программы.

Настройка внешних программ

При редактировании программы открывается диалог, который позволяет выполнить тонкую настройку:

Возможно задать много параметров, в частности:

Название — название программы, которое затем появится в меню.

Значок — необязательный значок, который показан в меню.

Исполняемый файл — название исполняемого файла. Следует указать либо полный путь, либо просто название программы (если исполняемый файл хранится в одном из каталогов, описанных переменной среды PATH).

Аргументы — необязательные аргументы, которые передаются исполняемому файлу.

Ввод — необязательные входные данные, которые передаются процессу через stdin.

Рабочий каталог — рабочий каталог, из которого будет запущена программа. Если значение не указано, рабочим каталогом будет каталог текущего документа.

Типы MIME — если значение указано, программа становится активной только в том случае, если тип MIME текущего документа соответствует указанному.

Сохранение до запуска — при вызове не сохраняется ничего, сохраняется текущий документ или сохраняются все документы.

Активация, триггер для выполнения программы. Влияет только на текущий активный документ и срабатывает только в том случае, если тип MIME текущего активного документа соответствует типу MIME внешней программы.

Допустимы следующие триггеры:

Нет — значение по умолчанию, означает, что у программы нет переключателя.

До сохранения, этот триггер запускает программу непосредственно перед сохранением документа.

После сохранения, этот триггер запускает программу после сохранения документа.

Перечитать текущий документ после выполнения — эта опция полезна в тех случаях, когда текущий файл был изменён на диске.

Выходные данные — вывод определяет цель stdout. Доступные варианты: Игнорировать, Вставить в текущей позиции, Заменить выбранный текст, Заменить текущий документ, Добавить в текущий документ, Вставить в новый документ, Копировать в буфер обмена или Вывести в панели.

Командная строка редактора — необязательная команда, которая будет использоваться для вызова внешней программы с помощью встроенной командной строки.

Кнопка По умолчанию отображается только для программ, которые поставляются с Kate. При её нажатии все параметры программы возвращаются к стандартным (заводским) значениям.

Расширение переменных

Некоторые поля ввода, например Исполняемый файл, Аргументы, Ввод и Рабочий каталог, поддерживают переменные, которые расширяются при вызове программы. Это обозначается значком {}, который появляется при получении фокуса одним из этих полей ввода (см. красный кружок):

При наведении курсора на одно из таких полей ввода также отображается всплывающая подсказка с текущим расширенным текстом. Кроме того, при щелчке по значку {} открывается диалог с перечнем всех доступных переменных:

Эта опция позволяет сделать настройку внешней программы очень гибкой, так как все переменные вида %{...} расширяются при вызове этой программы. Поддерживаются переменные двух типов:

  • %{имя-переменной}

  • %{имя-переменной:<значение>}

Если применяется первый тип %{имя-переменной}, программа просто заменяет переменную его содержимым. Например, переменная %{Document:FileName} заменяется именем файла текущего документа без пути к нему. Если применяется второй тип, %{имя-переменной:<значение>}, в качестве содержимого используется <значение>. Например, этим можно воспользоваться для расширения переменной среды с помощью %{ENV:HOME}. Или можно получить текущую дату в предпочитаемом формате: %{Date:yyyy-MM-dd}.

Среди поддерживаемых переменных:

Document:FileBaseName: базовое имя файла текущего документа без пути и суффикса.

Document:FileExtension: расширение файла текущего документа.

Document:FileName: имя файла текущего документа без пути.

Document:FilePath: полный путь к текущему документу, включая название файла.

Document:Text: содержимое текущего документа.

Document:Path: полный путь к текущему документу, исключая название файла.

Document:NativeFilePath: полный путь к документу, включая название файла, с разделителем пути операционной системы (в Windows — обратная косая черта).

Document:NativePath: полный путь к документу, исключая название файла, с разделителем пути операционной системы (в Windows — обратная косая черта).

Document:Cursor:Line: номер строки позиции текстового курсора в текущем документе (нумерация начинается с 0).

Document:Cursor:Column: номер столбца позиции текстового курсора в текущем документе (нумерация начинается с 0).

Document:Cursor:XPos: компонент X глобальной позиции курсора на экране.

Document:Cursor:YPos: компонент Y глобальной позиции курсора на экране.

Document:Selection:Text: выбранный текст в текущем документе.

Document:Selection:StartLine: начальная строка выбранного текста в текущем документе.

Document:Selection:StartColumn: начальный столбец выбранного текста в текущем документе.

Document:Selection:EndLine: конечная строка выбранного текста в текущем документе.

Document:Selection:EndColumn: конечный столбец выбранного текста в текущем документе.

Document:RowCount: количество строк в текущем документе.

Document:Variable:<переменная>: развернуть произвольные переменные документа.

Date:Locale: текущая дата в формате текущей локали.

Date:ISO: текущая дата (ISO).

Date:<значение>: текущая дата (в формате, указанном строкой формата QDate).

Time:Locale: текущее время в формате текущей локали.

Time:ISO: текущее время (ISO).

Time:<значение>: текущее время (в формате, указанном строкой формата QTime).

ENV:<значение>: доступ к переменным среды.

JS:<выражение>: обработка простых инструкций JavaScript.

PercentEncoded:<текст>: текст в процентной кодировке.

UUID: создать новый UUID.

Список стандартных программ

По умолчанию поставляются несколько программ. Если у пользователя имеются ещё какие-либо полезные инструменты, рекомендуется поделиться ими через проект на GitLab (чтобы разработчики смогли добавить их в список стандартных). Все стандартные программы по умолчанию показаны в списке. Все эти программы возможно изменить в соответствии с потребностями пользователя (например, изменить категорию или даже удалить программу из списка). Удалённые программы возможно вернуть в список нажатием кнопки Добавить на странице настройки.

Git Cola

Git Cola — это графический клиент git, который позволяет легко подготавливать и фиксировать изменения. Если этот клиент установлен, доступ к нему также возможно получить путём ввода команды git-cola в командной строке.

Название: Git Cola

Значок: git-cola

Исполняемый файл: git-cola

Аргументы: -r %{Document:Path}

Команда редактора: git-cola

gitk

gitk — также клиентская программа git, позволяет визуализировать журнал изменений в git.

Название: gitk

Значок: git-gui

Исполняемый файл: gitk

Рабочий каталог: %{Document:Path}

Команда редактора: gitk

git blame

Запускает git blame для облегчения слежения за изменениями текущего файла в git.

Название: git blame

Исполняемый файл: git

Аргументы: gui blame %{Document:FileName}

Сохранение до запуска: текущий документ

Рабочий каталог: %{Document:Path}

Команда редактора: git-blame

Запуск сценария оболочки

Запускает внешнюю консоль, в которой выполняется текущий документ. Сценарий должен объявлять в первой строке свой интерпретатор с помощью следующей последовательности символов: #!/путь/интерпретатор.

Название: запуск сценария оболочки

Значок: system-run

Исполняемый файл: konsole

Аргументы: -e sh -c "cd %{Document:Path} && pwd && chmod -vc a+x %{Document:FileName} && ./%{Document:FileName} ; echo Press any key to continue. && read -n 1"

Сохранение до запуска: текущий документ

Рабочий каталог: %{Document:Path}

Команда редактора: run-script

Поиск выделенного текста в Google

Поиск выделенного текста с помощью поисковой системы Google.

Название: поиск выделенного текста в Google

Значок: globe

Исполняемый файл: xdg-open

Аргументы: "https://www.google.com/search?q=%{Document:Selection:Text}"

Команда редактора: google

Вставка UUID

Вставляет новый UUID при каждом вызове этого действия.

Название: вставка UUID

Исполняемый файл: echo

Аргументы: %{UUID}

Выходные данные: вставить в текущей позиции

Команда редактора: uuid

Форматирование Clang всего файла

Выполняет clang-format для текущего файла на диске. После обработки программа повторно загружает документ.

Название: форматирование Clang всего файла

Исполняемый файл: clang-format

Аргументы: -i %{Document:FileName}

Рабочий каталог: %{Document:Path}

Сохранение до запуска: текущий документ

Перечитать: да

Команда редактора: clang-format-file

Форматирование Clang выделенного текста

Выполняет clang-format только для выбранного текста в текущем документе.

Название: форматирование Clang выделенного текста

Исполняемый файл: clang-format

Аргументы: -assume-fileName: %{Document:FileName}

Рабочий каталог: %{Document:Path}

Ввод: %{Document:Selection:Text}

Выходные данные: заменить выбранный текст

Команда редактора: clang-format-selection

Предварительный просмотр Qt Quick 2 (qmlscene)

Предварительный просмотр текущего файла QML в qmlscene.

Название: предварительный просмотр Qt Quick 2 (qmlscene)

Исполняемый файл: qmlscene

Аргументы: %{Document:FileName}

Сохранение до запуска: текущий документ

Рабочий каталог: %{Document:Path}

Команда редактора: qml-preview

Форматирование JSON всего файла

Форматировать весь файл кода JSON.

Название: форматирование JSON всего файла

Значок: application-json

Исполняемый файл: jq

Аргументы: %{Document:FileName}

Сохранение до запуска: текущий документ

Рабочий каталог: %{Document:Path}

Выходные данные: заменить текущий документ

Команда редактора: json-format-file

Форматирование XML всего файла

Форматировать весь файл кода XML.

Название: форматирование XML всего файла

Значок: application-xml

Исполняемый файл: xmllint

Аргументы: --format %{Document:FileName}

Сохранение до запуска: текущий документ

Рабочий каталог: %{Document:Path}

Выходные данные: заменить текущий документ

Команда редактора: xml-format-file