Как связать компиляцию с помощью comint с комбинацией клавиш - PullRequest
3 голосов
/ 31 августа 2010

В настоящее время я связываю компиляцию с Cx c.Я знаю, что могу запустить компиляцию в режиме коминтов, используя Cu Cx c, но я бы предпочел просто привязать его к Cx c напрямую.Я не могу понять, как это сделать, не копируя всю функцию компиляции из compile.el, настраивая ее и связывая ее.Есть ли лучший способ?

Редактировать: Чтобы уточнить мой неаккуратный язык, я не хочу связывать Cx c в режиме коминтов.Я хочу заставить Cx c запускать компиляцию в режиме коминтов.В настоящее время у меня есть Cx, привязанный к 'compile.Я могу делать то, что хочу, набрав Cu Cx c, но я бы предпочел просто иметь возможность набрать Cx c для этого.

Ответы [ 4 ]

3 голосов
/ 31 августа 2010

I думаю это работает ...

(defun c-w-c ()
  (interactive)
  (call-interactively 'compile t (vector 21 (this-command-keys-vector))))

(global-set-key (kbd "C-x c") 'c-w-c)

'21', добавленный к вектору, является префиксной клавишей ctrl-u, и, похоже, вводит функцию компиляциидумая, что это было вызвано с Cu Cx c.

Редактировать:

Это не сработало, но это делает:

(defun c-w-c ()
  (interactive)
  (setq current-prefix-arg '(4))
  (call-interactively 'compile))
3 голосов
/ 31 августа 2010

Вы можете сделать что-то вроде этого:

(global-set-key [(C-f5)] 'compile)
(global-set-key [(f5)] 'recompile)

Он связывает compile с C-f5 , и каждый раз, когда вы хотите перекомпилировать одну и ту же команду, как вы далив compile просто введите f5 .Он работает независимо от основного режима, в котором вы сейчас находитесь.

Для вашего случая сделайте так:

(global-set-key [?\C-x ?c] 'compile)
1 голос
/ 31 августа 2010

Вы просите об этом?

(define-key comint-mode-map (kbd "C-x c") 'compile)
0 голосов
/ 01 сентября 2010

Это тоже работает:

(define-key comint-mode-map (kbd "C-x c")
  (lambda (command)
    (interactive
     (list
      (let ((command (eval compile-command)))
        (if (or compilation-read-command current-prefix-arg)
            (compilation-read-command command)
          command))))
    (compile command t)))

Это ужасно, потому что дублирует "интерактивную" спецификацию из команды compile.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...