#emacs #xterm #cscope
#emacs #xterm #cscope
Вопрос:
Несколько проблем с emacs в term Windows. Приветствуется любая помощь.
a. Я запускаю emacs по ssh с emacs -nw с включенным cscope. После поиска символа или определения в буфере cscope, когда я нажимаю «enter», emacs выдает сообщение — Buffer доступен только для чтения. В то время как та же функциональность в emacs с xwindows (gtk или что-либо еще) приводит меня к файлу и строке в буфере редактирования. Как я могу использовать ту же функциональность с ’emacs -nw’.
b. Также метка стрелки в буфере редактирования / исходного кода, когда я делаю следующую ссылку на символ из буфера cscope, остается в буфере редактирования. Как я могу заставить это работать?
c. Мои ключи сопоставлены с функциями cscope точно так же, как в xcscope.el. Все управляющие клавиши ожидают, что Ctrl-F3 и Ctrl-F4 будут работать. Как я могу включить это тоже.
Большое спасибо,
Ответ №1:
a. Добавьте следующее в свой файл .emacs:
(define-key global-map (kbd "r") [return])
Я получил ответ от http://weenix.cs.brown.edu/mediawiki/index.php/Cscope
b. Если вы нажмете пробел в буфере cscope, вы увидите стрелку. Это просто проблема с отображением; файл не изменился. Если вы хотите избавиться от этого, добавьте следующее в свой файл .emacs:
(setq cscope-allow-arrow-overlays nil)
Ответ №2:
терминал отправляет последовательности ключей, отличные от ожидаемых emacs. вам необходимо предоставить переводы для типа терминала, чтобы emacs работал правильно. например, у меня есть эта конфигурация для настройки используемого терминала (странный символ — это буквальный символ «escape», который вы можете ввести с помощью "C-q <esc>"
:
(let ((map (if (boundp 'input-decode-map)
input-decode-map function-key-map)))
(define-key map (kbd "RET") [return])
(define-key map "[OA" (kbd "<C-up>"))
(define-key map "[OB" (kbd "<C-down>"))
(define-key map "[OC" (kbd "<C-right>"))
(define-key map "[OD" (kbd "<C-left>"))
(define-key map "[A" (kbd "<C-up>"))
(define-key map "[B" (kbd "<C-down>"))
(define-key map "[C" (kbd "<C-right>"))
(define-key map "[D" (kbd "<C-left>"))
(define-key map "OA" (kbd "<M-up>"))
(define-key map "OB" (kbd "<M-down>"))
(define-key map "OC" (kbd "<M-right>"))
(define-key map "OD" (kbd "<M-left>"))
(define-key map "[OA" (kbd "<M-C-up>"))
(define-key map "[OB" (kbd "<M-C-down>"))
(define-key map "[OC" (kbd "<M-C-right>"))
(define-key map "[OD" (kbd "<M-C-left>"))
(define-key map "[[17~" (kbd "<C-f6>"))
(define-key map "[[18~" (kbd "<C-f7>"))
(define-key map "[[19~" (kbd "<C-f8>"))
(define-key map "[[20~" (kbd "<C-f9>"))
(define-key map "[[21~" (kbd "<C-f10>"))
(define-key map "[[23~" (kbd "<C-f11>"))
(define-key map "[[24~" (kbd "<C-f12>"))
(define-key map "e[1~" [home])
(define-key map "e[4~" [end])
(define-key map "ee[1~" [M-home])
(define-key map "ee[4~" [M-end])
)
в некоторых терминалах вы можете получить код ключа, введя «C-v», а затем нужные клавиши. это должно вывести фактические коды клавиш, которые терминал отправляет для клавиш, которые вы нажали после «C-v».