আমি কমান্ড-লাইন থেকে ইমাসকে অনুরোধ করতে সক্ষম হতে চাই এবং গ্রাফিকাল ইমাকগুলি এটি চালু না হলে বা ইতিমধ্যে চলমান ইম্যাকগুলিতে কোনও ফাইল পরিদর্শন করতে সক্ষম হয়। আমি এটি করার চেষ্টা করেছি emacsclient
যার সাথে আমি জানি এটি করার "সঠিক" উপায়, তবে ওএস এক্স-এর সাথে আমার প্রচুর সমস্যা হয়েছিল, এটি এলোমেলোভাবে ক্র্যাশ হবে, বা emacs --daemon
প্রক্রিয়াটি বন্ধ হয়ে যাওয়ার সময় বা যন্ত্রটি পুনরায় চালু করার সময় স্তব্ধ হয়ে যাবে, এবং সাধারণ স্বচ্ছলতা। আমি এটি কাজ করতে চাই, এই মুহূর্তে open -a
আসলে আরও ভাল কাজ করে, এই সমস্যাটি বাদে আমি নীচে বর্ণনা করব:
এটি ব্যবহার করে open -a
:
$ open -a Emacs file.txt
এটি চালু না থাকলে ইমাস শুরু করবে এবং ফাইলটি দেখুন। তবে আমি যদি এটি করি যখন বর্তমান বাফারটি *scratch*
ফাইলটি একটি নতুন ফ্রেমে (যেমন একটি নতুন সিস্টেম উইন্ডো) খোলা থাকে না।
এখানে একটি উদাহরণ সেশন:
$ open -a Emacs file.txt
এটি ইমাক্স শুরু করে এবং file.txt খুলবে, সুতরাং এতে এই বাফারটির সাথে একটি একক ফ্রেম রয়েছে। যদি আমি *scratch*
বাফারে স্যুইচ করি এবং এটি করি:
$ open -a Emacs file1.txt
এটি একই ফ্রেমে এই ফাইলটি খোলে। এখন এই ফাইলটি সহ একটি একক ফ্রেম খোলা আছে, এবং আমি যদি এটি করি:
$ open -a Emacs file2.txt
এটি একটি নতুন ফ্রেম খুলবে, ফলস্বরূপ একবারে দুটি ফ্রেম খোলা হবে।
আমি Emacs এ --args
স্যুইচ-টি ব্যবহার করে কমান্ড-লাইন আরোগুলি ফিড করার চেষ্টা করেছি open
, তবে এটি পরবর্তী কলগুলির জন্য কাজ করে বলে মনে হচ্ছে না, যেমন:
$ open -a Emacs --args --eval='(print "foo")'
$ open -a Emacs --args --eval='(print "bar")'
বার্তা বাফারে এটি কেবল "ফু" মুদ্রণ করে ... দ্বিতীয় বারের ইমাস সবেমাত্র সম্মুখভাগে আনা হয় তবে কোনও বার্তা মুদ্রিত হয় না।
আমি নিশ্চিত নই open
যে ইতিমধ্যে চলমান অ্যাপ্লিকেশনগুলির সাথে কীভাবে যোগাযোগ করে, কেউ কীভাবে জানতে পারে যে আমি কীভাবে এটি জানতে পারি? অথবা Messages
বাফারের চেয়ে কী চলছে তার আরও বিস্তারিত লগ পাওয়ার কোনও উপায় আছে ? উপরের সেশনের সময় সেই বাফারটিতে আকর্ষণীয় কিছু মুদ্রিত হয় না, তাই আমি জানি না আমি কীভাবে কিছু ইমাক লিসপ হ্যাক করতে পারি আমার যা করতে চাই ...
ধন্যবাদ!
emacsclient
আবার ব্যবহার করার চেষ্টা করে শেষ করেছিলাম , এবং এটি (server-start)
আমার সাথে শুরু করা বুট আপের init.el
চেয়ে ভাল কাজ করছে বলে মনে emacs --daemon
হচ্ছে, যা আমি প্রথমবার চেষ্টা করেছিলাম emacsclient
।
find-file
এবং তারপরে কিছু সেটdebug-on-error
করার জন্য স্ট্যাক ট্রেসটি পরীক্ষা করে পরীক্ষা করতাম যে ইমাসকে কীভাবে আহ্বান করা হচ্ছে।find-file
লিস্প স্ক্র্যাচ বাফারে ফাংশন সংজ্ঞাটি অনুলিপি করা এবং এতে একটি কল যুক্ত করার মতো একটি ত্রুটি যুক্ত করা সহজ হতে পারেerror
(উদাহরণস্বরূপ, উত্স ফাইলটি(error "cause stack trace")
কখনও পরিবর্তনfind-file
করবেন না - সর্বদা এটি কোনও স্ক্র্যাচ বুফারে করুন!