связывание ключей в emacs для компиляции файла C - PullRequest
7 голосов
/ 29 августа 2010

Вот что я хотел бы сделать: когда нажимается C-c C-l, открывается новое окно терминала, если уже нет окна терминала, тогда в этом терминале gcc вызывается с некоторыми флагами и файлом текущего буфера. Как бы я это сделал?

Ответы [ 2 ]

11 голосов
/ 29 августа 2010

Попробуйте встроенное:

M-x compile gcc ...

compile не привязано ни к каким ключам по умолчанию, но вы можете сделать что-то вроде:

(add-hook 'c-mode-common-hook 
          (lambda () (define-key c-mode-base-map (kbd "C-c C-l") 'compile))))

Есть кучапакетов, которые люди написали во время компиляции в Emacs Wiki.Изучите SmartCompile , CompileCommand и категорию Programmer Utils .

Преимущество использования M-x compile ... по сравнению с простым запуском в "терминал "это то, что вы получаете Cx` (он же next-error), который переместит вас к файлу и строке, вызвавшей команду ошибки.И есть команда Mx пересобрать , которая делает то, что вы ожидаете.И, конечно, как и все команды Emacs, команда compile хранит историю вызовов компиляции, и вы можете просматривать историю с помощью Mp и Mn .

0 голосов
/ 30 августа 2010

Я делаю именно это, чтобы запустить свои тесты Perl в ближайшем eshell: http://github.com/jrockway/elisp/blob/master/_local/cperl-extras.el#L15

Общая форма кода:

(defun run-in-eshell (cmd use-hidden-eshell-p)
  (with-current-buffer (eproject-eshell-cd-here use-hidden-eshell-p)
    (eshell-preinput-scroll-to-bottom)
    (goto-char (point-max))
    (insert cmd)
    (eshell-send-input nil t)
    (goto-char (point-max))
    (ignore-errors
      (set-window-point (get-buffer-window) (point-max)))))

eproject-eshell-cd-hereчто на самом деле находит буфер оболочки.Если вы не хотите устанавливать eproject , то вы можете просто пройтись по буферам и найти его самостоятельно.

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