2010-08-28 37 views
7

Đây là những gì tôi muốn làm: Khi Cc Cl được nhấn, một cửa sổ terminal mới được khởi chạy nếu không có cửa sổ đầu cuối, sau đó, trong terminal đó, gcc được gọi với một số cờ và tệp bộ đệm hiện tại. Tôi sẽ làm như thế nào?emacs keybinding để biên dịch tập tin C

Trả lời

11

Cố gắng xây dựng trong:

M-x compile gcc ... 

compile không bị ràng buộc với bất kỳ phím theo mặc định, nhưng bạn có thể làm điều gì đó như:

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

Có một loạt các gói người đã viết xung quanh biên dịch trên Wiki Emacs. Hãy xem SmartCompile, CompileCommand và loại Programmer Utils.

Lợi ích của việc sử dụng M-x compile ... trên chỉ chạy nó trong một "thiết bị đầu cuối" là bạn có được C-x ` (aka next-error) mà sẽ nhảy bạn đến tập tin và đường gây ra lệnh lỗi. Và có lệnh biên dịch lại M-x thực hiện những gì bạn mong đợi. Và, tất nhiên, giống như tất cả các lệnh Emacs, lệnh compile giữ lịch sử của các cuộc gọi biên dịch và bạn có thể đi qua lịch sử với M-pM-n.

+5

Bạn nên lưu ý rằng sau khi chạy 'M-x compile' khi bạn có thể sử dụng' M-x recompile' để chạy lệnh giống như lần trước. – alternative

0

Tôi chính xác này để chạy thử nghiệm đơn vị perl của tôi trong một lân cận eshell: http://github.com/jrockway/elisp/blob/master/_local/cperl-extras.el#L15

Hình dạng chung của mã này là:

(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 là những gì thực sự tìm thấy bộ đệm eshell. Nếu bạn không muốn cài đặt eproject, thì bạn chỉ có thể lặp qua các bộ đệm và tự tìm chính mình.

Các vấn đề liên quan