Разрыв соединения cscope от Vim при каждом подключении экрана GNU - PullRequest
3 голосов
/ 05 января 2012

Я запускаю vim с cscope в моей среде разработки C. Я запускаю vim в окне GNU screen на сервере freebsd 6.3 и устанавливаю соединение cscope db с cs add .... На этом этапе все работает без нареканий.

Если я отсоединяю сеанс экрана и снова подключаю его, любые попытки использовать cscope приводят к тому, что cscope выводит ядро. Это все, что у меня есть из дампа ядра, так как мой cscope не скомпилирован с символами отладки:

(gdb)
#0  0x480f45dc in ungetch () from /lib/libncurses.so.6
(gdb)

AFAIK Нет необходимости заново устанавливать соединение cscope на vim, когда я снова подключаюсь к экрану. Это победило бы цель использования экрана. Кто-нибудь знает, что происходит, и если есть обходной путь? Если ничего не получится, я найду время, чтобы скомпилировать cscope с символами и выяснить, что происходит.

Если это поможет, моя cscope DB генерируется с:

cscope -bkq -P`pwd` -i cscope.files

Ответы [ 2 ]

3 голосов
/ 06 января 2012

Оказывается, что эта проблема исправлена ​​в cscope 15.7a.Публикация ответа на тот случай, если у кого-то есть такая же проблема (меня это беспокоило в течение пары лет, прежде чем я решил написать здесь).

2 голосов
/ 01 марта 2013

Учитывая, что он рушится в проклятиях, даже если vim будет вызывать cscope -l (линейный режим), я думаю, разумно предположить, что TERM=screen связано с вашей проблемой.Я бы попытался сделать обертку (например, в $HOME/bin, предполагая, что это до /usr/local/bin в вашем пути), чтобы изменить его:

#!/bin/sh

if ! test -t 0
then
    TERM=vt100
fi

exec /usr/local/bin/cscope "$@"

, который говорит «если не запускается из tty, поддельный TERM».Тест tty - попытаться избежать нарушения интерактивного использования.Вы можете попробовать TERM=none или другие значения.

...