Пользовательское сочетание клавиш для избиения сценария не работает

Я - emacs пользователь и записал несколько emacs конфигурационных файлов.

Я хотел выполнить функцию клиент-сервер emacs использование единственного сценария удара, который будет заботиться о emacs сервере и клиенте. Сценарий выполняет сервер (не уже работая) и затем развивает его путем выполнения клиента в нужном кадре (терминальный или графический).

Я мягко связал исполняемый сценарий с /usr/bin/emacs (переопределение значения по умолчанию) так, чтобы выполнение emacs команда делает задание для меня. Команда emacs теперь разжигает сценарий от терминала, а также через Alt+F2. Проблема, связывание сочетания клавиш к той же команде (или сценарий) не работает.

Я присоединяю снимок экрана своего ярлыка здесь. enter image description here

Сценарий оболочки может быть найден здесь.

P.S.: сочетание клавиш хорошо работает когда /usr/bin/emacs связан со значением по умолчанию emacs исполняемый файл (в /etc/alternatives/emacs в моем случае).

3
задан 10 October 2015 в 02:04

1 ответ

Я пытался воссоздать Вашу проблему, и я предполагаю, что был рядом.

Проблема я выяснил, что Вы сталкиваетесь, с if [[ -t 1 ]] состояние.

Согласно tldp

Эта тестовая опция может использоваться, чтобы проверить, является ли stdin [-t 0] или stdout [-t 1] в данном сценарии терминалом.

Так, сценарий не сможет обнаружить программу, которая вызвала его через это условное выражение. Следовательно, это не точное решение Вашей проблемы.

Теперь, внутренне, привязки клавиш в Ubuntu выполняются через поддельный терминал. На самом деле, TERM переменная установлена на немых, когда команда через привязки клавиш выполняется.

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

if [ $TERM == "dumb" ]
then
        TERMINAL=false
        CREATE="-c"
else
        TERMINAL=true
        CREATE="-nw"
fi

Я не могу гарантировать, что это будет работать во всех случаях, но это работает на использование, которое Вы описали.
Надежда это помогает.:)

2
ответ дан 1 December 2019 в 17:00

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

Похожие вопросы: