[অ-লেখক থেকে সম্পাদনা করুন: এটি ২০১০ সালের, এবং প্রক্রিয়াটি উল্লেখযোগ্যভাবে সরল করা হয়েছে ২০১১ সালের মে থেকে। আমি এই উত্তরটিতে ফেব্রুয়ারী ২০১২ পর্যন্ত আমার সেটআপ নোট সহ একটি পোস্ট যুক্ত করব।]
আপনাকে কয়েকটি টুকরো একসাথে রাখতে হবে: ইমাকস, স্লাইমাইম (যা ক্লোজারের সাথে পুরোপুরি ভালভাবে কাজ করে - সুইঙ্ক-ক্লোজার দেখুন), সুইঙ্ক-ক্লোজার (এসএলআইএম-এর সার্ভারের অংশের ক্লোজার বাস্তবায়ন), ক্লোজার-মোড, পেরেডিট এবং এর অবশ্যই, একটি সূচনার জন্য ক্লোজার জার, তারপরে সম্ভবত কিছু অতিরিক্ত যা লেইনিঞ্জেন সম্ভবত সবচেয়ে উল্লেখযোগ্য হবে। একবার আপনি এটি সেট আপ করার পরে, আপনার কাছে - ইমাসের মধ্যে - প্রশ্নটিতে আপনি উল্লিখিত সমস্ত কর্মপ্রবাহ / সম্পাদনা বৈশিষ্ট্য থাকবে।
বেসিক সেটআপ:
নীচে দুর্দান্ত টিউটোরিয়ালগুলি দেওয়া আছে যা এই সমস্ত কীভাবে সেট আপ করবেন তা বর্ণনা করে; ওয়েবে আরও রয়েছে, তবে অন্যদের মধ্যে বেশ কয়েকটি পুরানো, যদিও এই দুটি আপাতত ঠিক আছে বলে মনে হচ্ছে:
যার মধ্যে ফিল হেগেলবার্গের ব্লগে ক্লোজার রচয়িতা পোস্ট সম্পর্কিত ব্যবসায়ের কৌশল খুঁজে পাওয়া যায় ; ফিল swank-Clojure এবং Clojure- মোড বজায় রাখে, পাশাপাশি Emacs স্টার্টার কিট নামক একটি প্যাকেজ যা Emacs বিশ্বের যে কোনও নতুন আগত ব্যক্তিকে এটি দেখার জন্য ভাল পরামর্শ দেওয়া হবে। এই নির্দেশাবলী অবকাঠামোগত সাম্প্রতিক পরিবর্তনগুলির সাথে আপ টু ডেট আনা হয়েছে বলে মনে হয়; সন্দেহের ক্ষেত্রে ক্লোজারের গুগল গ্রুপের অতিরিক্ত তথ্য সন্ধান করুন।
ইনকান্টার প্রকল্পের ব্লগে ক্লোজার, ইনকান্টার, ইমাকস, স্লাইম, সোয়াঙ্ক এবং পেরেডিট পোস্ট সেট আপ করা হচ্ছে । ইনকান্টার হ'ল ক্লোজুরে এম্বেড স্ট্যাটিস্টিকাল কম্পিউটেশনের জন্য একটি আর-ডিএসএল সরবরাহকারী একটি আকর্ষণীয় প্যাকেজ। আপনি যদি ইনক্যান্টার - এমনকি ইনস্টল করতে - এমনকি পরিকল্পনা না করেন তবে এই পোস্টটি কার্যকর হবে।
এটি সব কাজ করা:
আপনি একবার এই সমস্ত জিনিস সেট আপ করার পরে, আপনি এখনই চেষ্টা করে এটি ব্যবহার শুরু করতে পারেন, তবে আমি আপনাকে নিম্নলিখিত বিষয়গুলি করার জন্য দৃ strongly় পরামর্শ দিচ্ছি:
স্লাইমির ম্যানুয়ালটি একবার দেখুন - এটি উত্সগুলিতে অন্তর্ভুক্ত রয়েছে এবং এটি আসলে খুব পঠনযোগ্য। এছাড়াও, আপনার পুরো 50-পৃষ্ঠার দৈত্য ম্যানুয়ালটি পড়ার একেবারেই কোনও কারণ নেই ; কোন বৈশিষ্ট্য উপলব্ধ তা দেখতে কেবল একবার ঘুরে দেখুন।
দ্রষ্টব্য: সর্বশেষ প্রবাহের উত্সগুলিতে স্লাইম-এর অটোডোক বৈশিষ্ট্যটি সোয়াঙ্ক-ক্লোজারের সাথে সামঞ্জস্যপূর্ণ নয় - যদি আপনি ফিল হেগেলবার্গের এলপিএ সংস্করণ ব্যবহারের প্রস্তাবটি অনুসরণ করেন (তবে তার ব্যাখ্যার জন্য তার পূর্বোক্ত ব্লগ পোস্টটি দেখুন) এই সমস্যাটি আসবে না অথবা কেবল অটোডোকটি ছেড়ে দিন (যা জিনিসগুলির ডিফল্ট অবস্থা is পরবর্তী বিকল্পটিতে কিছু যুক্তিযুক্ত আবেদন রয়েছে যা আপনি এখনও লিন্সের সাথে সর্বশেষতম স্লাইম ব্যবহার করতে পারেন, যদি আপনি এটিরও ব্যবহার করেন।
পেরেডিটের জন্য দস্তাবেজগুলি একবার দেখুন। এটি সম্পর্কে দুটি উপায় রয়েছে: (১) উত্সটি দেখুন - ফাইলটির শীর্ষে একটি বিশাল পরিমাণ মন্তব্য রয়েছে যাতে আপনার সম্ভবত সমস্ত তথ্য উপস্থিত থাকে; (২) C-h mপেরেডিট-মোড সক্রিয় থাকাকালীন ইমাসে টাইপ করুন - একটি বাফার বর্তমান সর্বাধিক মোডের তথ্য সহ সমস্ত সক্রিয় ছোটখাটো মোডের তথ্য (যার মধ্যে একটি রয়েছে পেরেডিট) পপআপ করবে।
আপডেট: ফিল্ড হেগেলবার্গের পেরেডিট-এ আমি এই শীতল নোটটি পেয়েছি ... এটি একটি পাঠ্য ফাইলের লিঙ্ক, আমার মনে আছে এই কোথাও এই তথ্য সহ স্লাইডগুলির একটি দুর্দান্ত সেট দেখেছি তবে এখন এটি খুঁজে পাবে না বলে মনে হচ্ছে । যাইহোক, এটি কীভাবে কাজ করে তার একটি দুর্দান্ত সারাংশ। অবশ্যই এটি দেখুন, আমি এখন পেরেডিট ছাড়া বাঁচতে পারি না এবং এই ফাইলটি এটি ব্যবহার শুরু করা খুব সহজ করে দেওয়া উচিত, আমি বিশ্বাস করি। :-)
প্রকৃতপক্ষে, C-h mসংমিশ্রণটি আপনাকে স্লাইম রিপ্লেতে সক্রিয় সমস্ত কী-বাইন্ডিং সম্পর্কে ক্লোজার-মোডে (আপনি C-c C-kবর্তমান বাফারটি সংকলনের জন্য প্রেরণের জন্য স্মরণ করতে চান ) এবং প্রকৃতপক্ষে কোনও ইমাক্স বাফারে আপনাকে বলবেন ।
যেমন কোনও ফাইল থেকে কোড লোড করা এবং তারপরে এটিই আরপিএলে পরীক্ষামূলকভাবে: C-c C-kবর্তমান বাফারটি সংকলিত করতে উল্লিখিত সংমিশ্রণটি ব্যবহার করুন , তারপরে use
বা require
এর নাম স্থানটি আরএপিএল এ। পরবর্তী, পরীক্ষা দূরে।
চূড়ান্ত নোট:
সমস্ত ক্লিকের আগে কিছুক্ষণের জন্য কিছু টুইট করতে প্রস্তুত থাকুন। এতে প্রচুর সরঞ্জাম জড়িত রয়েছে এবং তাদের মিথস্ক্রিয়াগুলি বেশিরভাগ ক্ষেত্রে মোটামুটি মসৃণ হয় তবে এটি প্রাথমিক পর্যায়ে আপনাকে কিছুটা সামঞ্জস্য করতে হবে না এমন ধারণা করা নিরাপদ।
অবশেষে, আমি এখানে কিছু কোড রেখেছি .emacs
যা আপনি অন্য কোথাও পাবেন না (যদিও এটি ফিল হেগেলবার্গের একটি দুর্দান্ত ফাংশন ভিত্তিক)। আমি আমার swank দৃষ্টান্তগুলি lein swank
( লেইনিঞ্জেনের অন্যতম শীতল বৈশিষ্ট্য) clojure-project
দিয়ে শুরু করার এবং ইম্যাক্সের মধ্যে থেকে পুরো জিনিসটি শুরু করার জন্য নীচের মতো ফাংশনটি ব্যবহার করার মধ্যবর্তী বিকল্প । পরেরটি পরিবেশের সাথে একত্রে মিলে যাওয়া পরিবেশটি তৈরি করার জন্য আমি যথাসাধ্য চেষ্টা করেছি lein swank
। ওহ, এবং যদি আপনি দ্রুত এবং নোংরা পরীক্ষার জন্য কেবল ইম্যাক্সে একটি REPL চান, তবে সঠিক সেটআপ সহ আপনার M-x slimeসরাসরি ব্যবহার করতে সক্ষম হওয়া উচিত ।
(setq clojure-project-extra-classpaths
'(
"src/"
"classes/"
"test/"
))
(setq clojure-project-jar-classpaths
'(
"lib/"
))
(defun find-clojure-project-jars (path)
(apply #'append
(mapcar (lambda (d)
(loop for jar in (remove-if (lambda (f) (member f '("." "..")))
(directory-files d t))
collect jar into jars
finally return jars))
(remove-if-not #'file-exists-p
clojure-project-jar-classpaths))))
(defun find-clojure-jar (jars)
(let ((candidates
(remove-if-not
(lambda (jar)
(string-match-p "clojure\\([0-9.-]+\\(SNAPSHOT|MASTER\\)?\\)?\\.jar$" jar))
jars)))
(if candidates
(car candidates)
(expand-file-name "~/.clojure/clojure.jar"))))
(defun find-clojure-contrib-jar (jars)
(let ((candidates
(remove-if-not
(lambda (jar)
(string-match-p "clojure-contrib\\([0-9.-]+\\(SNAPSHOT|MASTER\\)?\\)?\\.jar$" jar))
jars)))
(if candidates
(car candidates)
(expand-file-name "~/.clojure/clojure-contrib.jar"))))
(defun clojure-project (path)
"Sets up classpaths for a clojure project and starts a new SLIME session.
Kills existing SLIME session, if any."
(interactive (list (ido-read-directory-name
"Project root:"
(locate-dominating-file default-directory "pom.xml"))))
(when (get-buffer "*inferior-lisp*")
(kill-buffer "*inferior-lisp*"))
(cd path)
(let* ((jars (find-clojure-project-jars path))
(clojure-jar (find-clojure-jar jars))
(clojure-contrib-jar (find-clojure-contrib-jar jars)))
(setq swank-clojure-binary nil
swank-clojure-jar-path clojure-jar
swank-clojure-extra-classpaths
(cons clojure-contrib-jar
(append (mapcar (lambda (d) (expand-file-name d path))
clojure-project-extra-classpaths)
(find-clojure-project-jars path)))
swank-clojure-extra-vm-args
(list (format "-Dclojure.compile.path=%s"
(expand-file-name "classes/" path)))
slime-lisp-implementations
(cons `(clojure ,(swank-clojure-cmd) :init swank-clojure-init)
(remove-if #'(lambda (x) (eq (car x) 'clojure))
slime-lisp-implementations))))
(slime))