2010-08-28 13 views
7

यहां मैं क्या करना चाहता हूं: जब सीसी सीएल दबाया जाता है, तो कोई टर्मिनल विंडो नहीं है, तो उस टर्मिनल में, जीसीसी को कुछ झंडे के साथ बुलाया जाता है और वर्तमान बफर की फ़ाइल। मुझे यह कैसे करना है?सीए फ़ाइल को संकलित करने के लिए emacs keybinding

उत्तर

11

में बनाया कोशिश:

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 विकी पर संकलन के आसपास। SmartCompile, CompileCommand, और श्रेणी Programmer Utils देखें।

सिर्फ एक "टर्मिनल" में इसे चलाने से अधिक M-x compile ... का उपयोग करने का लाभ यह है कि आप प्राप्त है सी-एक्स ` (उर्फ next-error) जो आप फाइल और लाइन है कि त्रुटि आदेश की वजह से पर चला जाएगा। और एम-एक्स रीकंपाइल कमांड है जो आप उम्मीद करेंगे। और, ज़ाहिर है, सभी Emacs कमांड की तरह, compile कमांड संकलन कॉल का इतिहास रखता है और आप एम-पी और एम-एन के साथ इतिहास के माध्यम से जा सकते हैं।

+5

आपको ध्यान रखना चाहिए कि एक बार जब आप पिछली बार उसी आदेश को चलाने के लिए 'एम-एक्स रीकंपाइल' का उपयोग कर सकते हैं तो 'एम-एक्स संकलन' चलाने के बाद। – alternative

0

मैं बिल्कुल इस पास के एक 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 क्या वास्तव में eshell बफर पाता है। यदि आप eproject इंस्टॉल नहीं करना चाहते हैं, तो आप केवल बफर के माध्यम से लूप कर सकते हैं और इसे स्वयं ढूंढ सकते हैं।

संबंधित मुद्दे