Emacs में इंटरैक्टिव एलिसप दुभाषिया को कैसे खोलें?




elisp interpreter (4)

अभी मैं *scratch* बफर में अभिव्यक्ति लिखता हूं और सीएक्स सीई के मूल्यांकन के द्वारा उन्हें परीक्षण करता हूं। मैं वास्तव में एक इंटरैक्टिव दुभाषिया की सराहना करता हूं जैसे कि SLIME या irb, जिसमें मैं एमैक्स लिस्प एक्सप्रेशन का परीक्षण कर सकता हूं।


ठीक है, अगर आप वास्तव में ईएमएक्स के लिए एक शाब्दिक REPL में रुचि रखते हैं तो emacs के बैच मोड का उपयोग करके एक लिखना संभव है:

(require 'cl)

(defun read-expression ()
  (condition-case
      err
      (read-string "> ")
    (error
     (message "Error reading '%s'" form)
     (message (format "%s" err)))))

(defun read-expression-from-string (str)
  (condition-case
      err
      (read-from-string str)
    (error
     (message "Error parsing '%s'" str)
     (message (format "%s" err))
     nil)))

(defun repl ()
  (loop for expr = (read-string "> ") then (read-expression)
        do
        (let ((form (car (read-expression-from-string expr))))
          (condition-case
              err
              (message " => %s" (eval form))
            (error
             (message "Error evaluating '%s'" form)
             (message (format "%s" err)))))))

(repl)

आप इसे एक कमांड लाइन से कॉल कर सकते हैं, या, जैसा कि आप चाहते हैं, एक एएएमएसीएस बफर के अंदर से खोल चल रहा है:

kburton@hypothesis:~/projects/elisp$ emacs -batch -l test.el
Loading 00debian-vars...
> (defvar x '(lambda (y) (* y 100)))
 => x
> (funcall x 0.25)
 => 25.0
> 
kburton@hypothesis:~/projects/elisp$

तुम्हारा सबसे अच्छा शर्त है *scratch* बफर आप पहले इसे डीबगर पर बदलकर आरपीएल जैसा बना सकते हैं:

M-x set-variable debug-on-error t

फिर Cx Ce बजाय Cx Ce का उपयोग करें, जो अभिव्यक्ति के बाद बफर में अभिव्यक्ति के मूल्यांकन के परिणाम को सम्मिलित करेगा। कमान इतिहास, * * * जैसी चीज़ों के बजाय और आगे, आप बस *scratch* बफर के आसपास चलते हैं और संपादित करते हैं

यदि आप काम करने के लिए * * * जैसी चीजें चाहते हैं, तो अधिक सामान्य REPL की तरह, ielm कोशिश करें

M-x ielm

सिर्फ एक एलिसपी अभिव्यक्ति को चलाने के लिए आप एम-: शॉर्टकट का उपयोग कर सकते हैं और मिनी-बफर में अभिव्यक्ति दर्ज कर सकते हैं। अन्य मामलों के लिए आप स्क्रैच बफर का उपयोग कर सकते हैं


एशेल एक इंटरैक्टिव एलिसप इंटरप्रिटर के लिए एक और विकल्प है I

M-x eshell

न केवल यह एक कमान शटल है जैसे bash (या cmd.exe अगर Windows पर) लेकिन आप इंटरैक्टिव एलआईएसपी कोड लिख सकते हैं और निष्पादित भी कर सकते हैं।

~ $ ls
foo.txt
bar.txt
~ $ (+ 1 1)
2






interpreter