2009-06-30 16 views
11

क्या कोई मुझे एमएक्स में एक प्रमुख मोड के लिए एक हैलो वर्ल्ड उदाहरण प्रदान कर सकता है? मुझे लगता है कि यह एक शुरुआती प्रश्न है, फिर भी मैं पूरी तरह से अनुकूलन का उपयोग करने में सक्षम होने के लिए, emacs और elisp सीखने के लिए वास्तव में एक प्रमुख मोड लिखना पसंद करता हूं।ए 'हैलो वर्ल्ड' उदाहरण?

मैं अब तक क्या किया है (और काम कर रहा है):

  • एक फ़ाइल नमूना-mode.el लिखा था और एक तुतलाना dir
  • .emacs में कहा जाता है में रख (require 'sample-mode)
  • कुछ लिखा था उस में defuns, और अंत (provide 'sample-mode)

पर यह प्रदान की लेकिन फिर भी यह सक्रिय होना प्रतीत नहीं होता है, मैं से कॉल करने की नहीं कर सकते एम नमूना मोड।

तो ऐसा कैसे करें? और क्या कोई मुझे कामकाजी नमूना की तरह एक बहुत ही सरल हैलो वर्ल्ड प्रदान कर सकता है?

उत्तर

10

ठीक है, कुछ और googling के बाद मैं कम से कम एक कदम furhter हूँ:

(define-derived-mode sample-mode ...) 

उपलब्ध कराने के मोड को परिभाषित नहीं किया गया है के रूप में मैं पहले सोचा था .. यह मैं पर पाया के बाद से:

http://xahlee.org/emacs/elisp_syntax_coloring.html

emacs-lovers के लिए एक बहुत ही अच्छी साइट।

इसकी मदद से: मैंने अभी एक हैलोवर्ल्ड उदाहरण बनाया है: यह एक (जितना संभव हो सके छोटा) सीएसआरआरपी मोड है। मैंने Euler1 का उपयोग HelloWorld के बजाय उदाहरण के रूप में किया है। फ़ाइलों को आप के बारे में पता करने की जरूरत हैं:

  • फ़ाइल मोड Euler1.cs
  • .emacs
  • और निश्चित रूप से अपने आप

मोड पर लागू किया जाएगा के बाद से एक तस्वीर के लायक है कम से कम शब्दों का एक समूह: 1 स्क्रीन पर सभी फाइलें:

alt text

लेकिन चूंकि यह अच्छी तस्वीर आधे समय गायब लगती है (कोई भी सुराग? नए टैब में खोलें हमेशा यह लाता है पर, और यूआरएल ठीक है) कुछ शब्दों को भी :-):

  1. मोड: CS-mode.el

    (setq myKeywords 
    '(("WriteLine" . font-lock-function-name-face) 
        ("public\\|static\\|void\\|int\\|for\\|if\\|class" 
    . font-lock-constant-face))) 
    
    (define-derived-mode cs-mode fundamental-mode 
        (setq font-lock-defaults '(myKeywords))) 
    
    (provide 'cs-mode) 
    
  2. .emacs, जो बनाता है।सीएस फ़ाइलें सही मोड में खोलने:

;; cs 
(require 'cs-mode) 
(add-to-list 'auto-mode-alist '("\\.cs\\'" . cs-mode)) 

और thats सब: cs-code ही उसे बेकार है, कारण यह की-शब्द रंग के प्रभाव को नहीं दिखाया जाएगा। यह देखने के लिए कि तस्वीर देखें, या किसी अन्य टैब/विंडो में तस्वीर खोलें।

चीयर्स, पीएच

+0

+1 बहुत अच्छी वेबसाइट – dfa

+1

@jrockway के लिए: यहाँ सहमत नहीं है, मैं एक बहुत उसे से सीखा, प्रमुख मोड लेखन हालांकि वह खुद को छोड़ दिया वें किसी भी खाली समय नहीं हो सकता अपने विचारों को शामिल सहित, आप एक मतलब नहीं है – Peter

+1

@ ज्रोकवे: यह दूसरी बार है जब मैं आपको Xah की आलोचना करता हूं ... तुम उससे इतना नफरत क्यों करते हो? – Vivi

5

वहाँ वेब like this भर के कई उदाहरण हैं। ,

  • लर्निंग जीएनयू Emacs (सबसे अच्छा imho)
  • लेखन जीएनयू Emacs एक्सटेंशन
  • आधिकारिक जीएनयू Emacs संदर्भ लिस्प/मैनुअल
+1

+1 और लिंक के लिए धन्यवाद, लेकिन पूरे emacs दृश्य में, कभी-कभी सरल उदाहरणों की कमी मुझे थोड़ा परेशान करती है। एक उल्लेखनीय अपवाद पहले प्रदान किया गया लिंक: xahlee.org – Peter

+1

भी emacswiki जांचें – dfa

5

खैर: मैं आपको यह भी कई Emacs पुस्तक की सिफारिश कर सकते आइए this answer से शुरू करें, जो define-generic-mode का उपयोग करता है।

यह मांस बाहर की तरह कुछ टिप्पणी पात्रों के साथ: /* */, कृपया कुछ कीवर्ड: hellohi आदि, फिर से उपयोग करने के मूल जवाब, एक फाइल एक्सटेंशन .hello, और एक समारोह कॉल आगे अनुकूलन करने के लिए से चेहरे।

काम करने के लिए स्वत: लोड करने के लिए अतिरिक्त पंक्ति है, लेकिन आपको generate the loaddefs.el फ़ाइल है। यह हैलो दुनिया की तुलना में अधिक उन्नत है।

और आप इस के साथ अंत:

(make-face 'my-date-face) 
(set-face-attribute 'my-date-face nil :underline t) 
(set-face-attribute 'my-date-face nil :family "times") 
(set-face-attribute 'my-date-face nil :slant 'normal) 
(set-face-attribute 'my-date-face nil :height '340) 

;;;###autoload 
(define-generic-mode hello-world 
    '(("/*" . "*/"))       ; comment characters 
    '("hello" "hi" "howdy" "greetings" "hola") ; keywords 
    '(("\\([0-9]+/[0-9]+/[0-9]+\\)" 
    (1 'my-date-face)))    ; font lock 
    '("\\.hello$")      ; auto-mode-alist 
    '(hello-world-special-setup)   ; function-list 
    "An example major mode. 
We have comments, keywords, a special face for dates, and recognize .hello files.") 

(defun hello-world-special-setup() 
    "Some custom setup stuff done here by mode writer." 
    (message "You've just enabled the most amazing mode ever.")) 
0

elisp मैनुअल बहुत अच्छी तरह से प्रमुख मोड परिचय है, और यह एक नोड कि प्रस्तुत करता है "हैलो दुनिया" examples भी शामिल है। कम से कम यह इरादा है, मुझे लगता है।

उन उदाहरणों में आप जो कुछ भी ढूंढ रहे हैं उसे शामिल नहीं कर सकते हैं। उस स्थिति में, जो कुछ भी आपको लगता है वह मांगने पर विचार करें जो उपयोगकर्ताओं को और अधिक मदद करेगा। ऐसा करने के लिए, M-x report-emacs-bug (जो कि वृद्धि अनुरोधों के लिए भी है) का उपयोग करें।

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