"ওপেন-এ" দিয়ে খুললে ইমাস্যাকগুলি একটি নতুন ফ্রেমে ফাইল খুলবে


20

আমি কমান্ড-লাইন থেকে ইমাসকে অনুরোধ করতে সক্ষম হতে চাই এবং গ্রাফিকাল ইমাকগুলি এটি চালু না হলে বা ইতিমধ্যে চলমান ইম্যাকগুলিতে কোনও ফাইল পরিদর্শন করতে সক্ষম হয়। আমি এটি করার চেষ্টা করেছি 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বাফারের চেয়ে কী চলছে তার আরও বিস্তারিত লগ পাওয়ার কোনও উপায় আছে ? উপরের সেশনের সময় সেই বাফারটিতে আকর্ষণীয় কিছু মুদ্রিত হয় না, তাই আমি জানি না আমি কীভাবে কিছু ইমাক লিসপ হ্যাক করতে পারি আমার যা করতে চাই ...

ধন্যবাদ!


আমি ওএসএক্স সম্পর্কে কোনও জিনিস জানি না তাই আমি কংক্রিটের কিছু সরবরাহ করতে পারি না। যদি আমি এটি ডিবাগ করতে যাই, তবে আমি কিছু বাক্য গঠন ত্রুটি নিক্ষেপ করতাম find-fileএবং তারপরে কিছু সেট debug-on-errorকরার জন্য স্ট্যাক ট্রেসটি পরীক্ষা করে পরীক্ষা করতাম যে ইমাসকে কীভাবে আহ্বান করা হচ্ছে। find-fileলিস্প স্ক্র্যাচ বাফারে ফাংশন সংজ্ঞাটি অনুলিপি করা এবং এতে একটি কল যুক্ত করার মতো একটি ত্রুটি যুক্ত করা সহজ হতে পারে error(উদাহরণস্বরূপ, উত্স ফাইলটি (error "cause stack trace")কখনও পরিবর্তন find-fileকরবেন না - সর্বদা এটি কোনও স্ক্র্যাচ বুফারে করুন!
জো ক্যাসাডন্টে

@ জো ধন্যবাদ! এটি একটি দুর্দান্ত ধারণা, আমি এটি ভবিষ্যতের জন্য মনে রাখব। আমি আসলে emacsclientআবার ব্যবহার করার চেষ্টা করে শেষ করেছিলাম , এবং এটি (server-start)আমার সাথে শুরু করা বুট আপের init.elচেয়ে ভাল কাজ করছে বলে মনে emacs --daemonহচ্ছে, যা আমি প্রথমবার চেষ্টা করেছিলাম emacsclient
মিছিয়াকিগ

উত্তর:


26

উত্তরটি এখানে: মূল ফ্রেমে "ওপেন" করতে ইমাক্স ভেরিয়েবল

এটি ইমাসের নতুন সংস্করণগুলিতে ডিফল্ট সেটিংসে পরিবর্তন। যোগ করুন

(setq ns-pop-up-frames nil)

.emacs ফাইল।

এটি পেয়ে খুব খুশি।


এটি খুব সহায়ক ছিল! একসাথে একটি ওরফে open -a /Applications/Emacs.app $1জিনিস কাজ করে মনে হচ্ছে ঠিক আছে! নোট করুন যে আমি উদাহরণস্বরূপ গিটের জন্য ইম্যাকগুলি উপলভ্য করার জন্য আমার দীক্ষায় সার্ভারটি শুরু করি।
Dror
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.