Захват и анализ буфера xterm cut в emacs

685
BobBanana

Я хотел бы сделать косвенный элемент управления для Emacs (в Ubuntu Linux), чтобы я мог с помощью курсора пролистать некоторый текст в xterm, вырезать его в буфере X Cut, а затем запустить макрос в Emacs для разбора текста буфера Cut чтобы найти текст, говорящий "строка XXXX", где X - все цифры, затем перейдите к этой строке в текущем буфере Emacs.

Я думаю, что это возможно, используя emacsclient, чтобы заставить emacs запустить макрос, затем макрос анализирует буфер обрезки, а затем вводит команду goto-line для числа, которое было проанализировано.

Моя проблема в том, что я не знаю, как написать сценарий emacs для чтения буфера X cut и его анализа ... Я просматривал примеры поваренной книги, но ни один из них не подходит.

Моя цель - облегчить разработку. Когда у меня есть сообщение об ошибке / информация / состояние, напечатанное в xterm, я хочу провести сообщение об ошибке, которое говорит что-то вроде «синтаксическая ошибка в строке 2776», а затем нажать сочетание клавиш, которое Ubuntu интерпретирует для запуска emacsclient, которое вызывает мой уже -откройте Emacs, чтобы получить этот текст, проанализировать его и перейти к номеру строки, которую я только что пролистал. Только этот последний шаг разбора является трудной частью.

(Да, я знаю, что вы можете запустить оболочку ВНУТРИ emacs, но это не подходит моему рабочему процессу)

Как мне заставить emacs посмотреть на этот буфер X X, разобрать номер строки и выполнить команду «goto-line» для текущего буфера?

Спасибо!

1

2 ответа на вопрос

1
mattikus

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

emacsclient +LINE_NUMBER FILE_NAME 

Это должно заставить emacsclient взять ближайший буфер и заменить его на FILE_NAME в LINE_NUMBER.

Мне нравится эта идея .. сделать анализ в небольшом Perl однострочном или что-то в этом роде. Emacs явно достаточно мощный, чтобы сделать это, но может быть проще использовать средство запуска для разбора. Теперь, чтобы выяснить, как получить X Cut буфер в Perl ... BobBanana 14 лет назад 0
1
Justin Smith

(x-get-selection) - это функция elisp, которая возвращает текущий выбранный текст X11.

Кроме того, стандартный способ получить сообщение об ошибке и использовать его в emacs для прямого перехода к указанному файлу / строке - запустить Mx compile или использовать команду, которая настраивает режим компиляции. Emacs уже распознает вывод gcc, g ++ и многих других программ. При компиляции Mx emacs автоматически генерирует кликабельные ссылки для сообщений об ошибках, которые он распознает, а в более новых версиях emacs они реагируют на щелчок левой кнопкой мыши, а не по умолчанию на средний щелчок.

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