ওএসএক্স এর অধীনে ইমা্যাক্স সার্ভারের বেসিক সেটআপ


9

আমি সম্প্রতি এক দশকে আমার প্রথম ম্যাক কিনেছি এবং এটিটি কনফিগার করার প্রক্রিয়াধীন রয়েছি। আমি একজন ইম্যাকস ব্যবহারকারী এবং নির্ধারণ করেছি যে আমি কেবলমাত্র নিয়মিত ইমাস চাই না অ্যাকাম্যাকাস যাতে আমি অন্যান্য অপারেটিং সিস্টেমগুলি থেকে আমার বিদ্যমান কনফিগারেশনটি ব্যবহার করতে পারি। আমি অনলাইনে কীভাবে টোস পেয়েছি তা অনুসরণ করার চেষ্টা করেছি (যেমনটি আমি ইমাস ডাউনলোড করেছি সেই সাইট থেকে এই একটি , এটি একটি এবং এটি ) এবং টুকরোগুলিকে বেশ কয়েকটি উপায়ে একত্রিত করার চেষ্টা করেছি, তবে কখনও হয়নি এমন কিছুর দিকে একটি জিনিস অর্জন করা এমনকি আমি কী ব্যবহার করতে / প্রত্যাশী তার কাছে পৌঁছাচ্ছি:

  1. একটি ইমাস ডিমন হয় প্রারম্ভকালে বা যত তাড়াতাড়ি আমার প্রয়োজনের সাথে সাথে চলতে শুরু করে ; হয় ঠিক আছে। যে কোনও নতুন ইমাকস ফ্রেম একই সার্ভারটির সাহায্যপ্রাপ্ত।
  2. আমি যখন ফাইন্ডার থেকে একটি পাঠ্য ফাইল খুলি তখন ফাইলটি সম্ভব হলে বিদ্যমান গ্রাফিকাল ফ্রেমে ইম্যাক্সে খোলে।
  3. যদি আমি ইমাস্যাক.এপ চালনা করি তবে সিস্টেমটি ইমাস্যাক ডেমনটিকে পুনরায় ব্যবহার করবে যা কোনও নতুন উদাহরণ শুরু করার পরিবর্তে এবং এতে একটি নতুন উইন্ডো খোলার পরিবর্তে পটভূমিতে চলছে ma ( টুপি টিপ )
  4. আমি যখন কোনও টার্মিনাল থেকে ইমাক্স চালনা করি তখন টার্মিনালটি ইম্যাক্সের সাথে আমার সমাপ্তির অপেক্ষা না করেই তার ব্যবসাটি চালিয়ে যায় (যদি না আমি '-nw' ব্যবহার করি)
  5. উপরে বর্ণিত ক্রিয়াকলাপগুলির সময় আফিকের কোনও মুহুর্তে ইমাকসের কোনও রাজ্যে ("সার্ভার-সম্পাদনা মোড?") শেষ হওয়া উচিত যেখানে এটি আমার টাইপ করার অপেক্ষায় রয়েছে C-x #, যদিও আমার এই সম্পর্কে গভীর ধারণা নেই।
  6. (আমি এটিকে বোনাস হিসাবে বিবেচনা করব) আমার কাছে টার্মিনাল থেকে ইমাক্স আহ্বান করার কিছু উপায় রয়েছে যাতে সম্ভব হলে ইম্যাক্স একটি বিদ্যমান ফ্রেমটিকে পুনরায় ব্যবহার করতে পারে।

আমি এরকম আচরণের জন্য ইমাকগুলি কীভাবে কনফিগার করব?

আমি ইমাক্সে যেভাবে খুজতে চাইছি (# 2) সেভাবে জিনিসগুলি খোলার জন্য আমি বিশেষত বিভ্রান্ত হয়ে পড়েছি, যেহেতু আমি যে গাইডগুলি পেয়েছি সেগুলি সাধারণত অনেকগুলি উপাধি, অ্যাপ্লিকেশন, ব্যাশ স্ক্রিপ্ট ইত্যাদি তৈরি করে এবং আমি নিশ্চিত নই যা আমি অনুসন্ধানকারীকে পাঠ্য ফাইলগুলি খুলতে ব্যবহার করতে বলতে চাই।

ধন্যবাদ!

উ। @ লিস্টলিস্ট জিজ্ঞাসা করেছে, "বিদ্যমান ফ্রেম থাকা সত্ত্বেও আপনি যখন টার্মিনাল থেকে একটি নতুন ফাইল খুলবেন তখন কি ডিফল্টরূপে একটি নতুন ফ্রেম খোলা হচ্ছে?" উত্তরটি হ'ল আমি যদি এখানে বর্ণিত হিসাবে শুরুতে কোনও সার্ভার শুরু করি , একটি ফ্রেম খুলি, এবং তারপরে টাইপ করে কোনও ফাইল খুলি /Applications/Emacs.app/Contents/MacOS/bin/emacsclient -n <whatever>, আমি ফাইলটি একটি বিদ্যমান ফ্রেমে খোলার জন্য পেতে পারি। যদি বর্তমানে কোনও ফ্রেম খোলা না থাকে তবে আমাকে "-nc" ব্যবহার করতে হবে বা যখন আমি কোনও ফাইল খোলার চেষ্টা করি তখন কিছুই হয় না।

বি। @ লিস্টলিস্ট জিজ্ঞাসা করেছে, "আপনি কি ডিমন লগইন চলমান চান, বা লগইন করার পরে ইম্যাক্স নিজেই লোড করার পক্ষে যথেষ্ট হবে?" ম্যানুয়ালি দৌড়ানো ঠিক হবে।


আপনি কি দয়া করে তাদের 1, 2, 3, 4, 5, 6 এবং 7 এবং 8 নাম্বারটি সংখ্যায়িত করতে পারেন, এছাড়াও বিদ্যমান ফ্রেম থাকা সত্ত্বেও আপনি যখন টার্মিনাল থেকে একটি নতুন ফাইল খুলবেন তখন ডিফল্টরূপে একটি নতুন ফ্রেম খোলা হবে ? আমি কয়েকটি উত্তর জানি তবে সেগুলির সবগুলিই নয় - সুতরাং প্রশ্নের উত্তরগুলি সহায়ক হবে। আপনি কি ডিমনটি লগইনতে চলতে চান, বা লগইনের পরে ইমাক্স নিজেই লোড করার পক্ষে যথেষ্ট হবে?
আইনজীবি

@ লৌরি রন্তার একটি ভাল উত্তর রয়েছে। M-x server-startসার্ভারটি ম্যানুয়ালি শুরু করবে যাতে emacsclientএটির সাথে যোগাযোগ করতে পারে। আমি লগইনে ডেমন ব্যবহারের পরিবর্তে (server-start)আমার init.elফাইলে রেখেছি - তবে, অনেকে ডেমন লগইন বিকল্পটি পছন্দ করেন। এবং অবশ্যই, .emacsফাইলটি উপযুক্ত স্থান হবে (server-start)
আইনজীবি

ফাইন্ডারের কাছ থেকে ফাইলগুলি খোলার বিষয়ে, আমি ধরে নিচ্ছি যে আপনি এর মতো কিছু করার প্রয়োজনের পর্যায়ে অনেক দূরে রয়েছেন : ডামি ডটকম / হাও-টো / কনটেন্ট / সুতরাং, ধরে নিই যে উপায়টি বাইরে গেছে, তবে আপনি সম্ভবত যাচ্ছেন এর সাথে ঠিক থাকতে হবে ns-find-file- যা কোনও ফাইল ইমা্যাকস অ্যাপের সাথে যুক্ত হলে স্বয়ংক্রিয়ভাবে সক্রিয় হয়। উপরের লিঙ্কগুলিতে আমার ইন্টারসেপ্ট ফাইল ফাংশনটিও যদি আপনার ns-find-fileআগ্রহী কিছু হয় তবে তা পরিবর্তন করে । অবশ্যই, আপনার প্রয়োজন Emacs নির্মিত --with-ns
আইনজীবি

উত্তর:


10

নতুন ফ্রেমের পরিবর্তে বিদ্যমান ফ্রেমে Emacs.app ফাইলগুলি খুলতে, (setq ns-pop-up-frames nil)একটি কনফিগারেশন ফাইলের মতো করুন ~/.emacs

আপনি open -a emacs fileবা দিয়ে টার্মিনাল থেকে একটি ফাইল খুলতে পারেন emacsclient -n file। যদি Emacs.app খোলা না থাকে তবে একটি Emacs --daemonপ্রক্রিয়া রয়েছে, কিছু কারণে emacsclient -n fileকাজ করে না তবে emacsclient -nc fileহয়।

আপনি যে emacsclientইমাকগুলি ব্যবহার করেন, তার মতো সংস্করণ সহ বা বাইনারি ব্যবহার করেছেন তা নিশ্চিত করুন /Applications/Emacs.app/Contents/MacOS/bin/emacsclientবা /usr/local/bin/emacsclientআপনি হোমব্রিউয়ের সাথে ইমাস ইনস্টল করেছেন কিনা তা নিশ্চিত করুন ।

লগইনে ইমাস্যাক সার্ভার শুরু করতে উদাহরণস্বরূপ এই প্লিস্টটি সংরক্ষণ করুন ~/Library/LaunchAgents/my.emacsdaemon.plist:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
  <key>Label</key>
  <string>my.emacsdaemon</string>
  <key>ProgramArguments</key>
  <array>
    <string>/Applications/Emacs.app/Contents/MacOS/Emacs</string>
    <string>--daemon</string>
  </array>
  <key>RunAtLoad</key>
  <true/>
  <key>KeepAlive</key>
  <true/> <!-- run the program again if it terminates -->
</dict>
</plist>

পরের বার আপনি লগইন করলে প্লিস্টটি স্বয়ংক্রিয়ভাবে লোড হয় তবে আপনি চালিয়ে তা লোড করতে পারবেন launchctl load ~/Library/LaunchAgents/my.emacsdaemon.plist

সম্পাদনা: আমি এখনও জানি না কেন লোকেরা কেবল ইমাস্যাক.অ্যাপের পরিবর্তে অ্যাপলস্ক্রিপ্ট অ্যাপ্লিকেশনটির সাথে ফাইলের প্রকারগুলি সংযুক্ত করছে। কুজ্জুরার উত্তরের লিপিটি শেল স্ক্রিপ্ট হিসাবে লেখা যেতে পারে যদিও:

macos=/Applications/Emacs.app/Contents/MacOS
if pgrep -qf 'Emacs.*--daemon'; then
  [[ $($macos/bin/emacsclient -e '(<= 2 (length (visible-frame-list)))') = t ]] && args=-nc || args=-n
else
  $macos/Emacs --daemon
  args=-nc
fi
$macos/bin/emacsclient $args "$@"
open -a /Applications/Emacs.app

অ্যাপ্লিকেশন হিসাবে স্ক্রিপ্টটি সংরক্ষণ করতে আপনি প্লাটিপাস ব্যবহার করতে পারেন :

আমি সবেমাত্র ইম্যাক্স ব্যবহার শুরু করেছি তবে আমার সম্পূর্ণ আলাদা সেটআপ রয়েছে। আমি আইটিআরএম.পি এর একটি অনুলিপি তৈরি করে, ইনফট.পিস্টে সিএফবান্ডেলআইডিটিফায়ার পরিবর্তন করে যাতে অ্যাপ্লিকেশনটি একটি পৃথক পছন্দসই ফাইল ব্যবহার করে এবং এতে ডিফল্ট কমান্ডটি সেট করে আমার নিজের ইমাক্স অ্যাপ্লিকেশন তৈরি করেছিলাম /usr/local/bin/emacs। আমি যোগ করেছি (server-start)করতে ~/.emacsএবং আমি লগইন কাস্টম গিয়ে Emacs আবেদন খুলুন। আমি প্লাটিপাস ব্যবহার করে এমন একটি অ্যাপ্লিকেশন তৈরি করতে যা চালিত হয় emacsclient -n "$@";open -b my.emacsএবং আমি এটি পাঠ্য ফাইলগুলির জন্য ডিফল্ট অ্যাপ্লিকেশন তৈরি করেছিলাম।


2

মন্তব্যগুলির পরামর্শের সাথে লরির সমাধানটি আমার সমস্যাগুলিকে বেশিরভাগ ক্ষেত্রে সম্বোধন করেছে। আমি অনলাইনে পাওয়া স্টাফ থেকে একসাথে সেলাই করে এমন কিছু অ্যাপলস্ক্রিপ্টের নীচে পেস্ট করেছি। স্ক্রিপ্টটি কিছু অবশিষ্ট বলিগুলি মসৃণ করতে সহায়তা করে, উদাহরণস্বরূপ, বর্তমান ইমাস ফ্রেম না থাকলে এর আচরণটি আরও ভাল।

সম্পাদনা: স্ক্রিপ্টের উদ্দেশ্য ফাইন্ডারে .txt ফাইলগুলির সাথে যুক্ত হওয়া।

-- http://superuser.com/questions/457484/how-to-open-emacs-from-macs-finder
-- https://gist.github.com/ambethia/304964#comment-799519
on run {input}
    set filepath to quoted form of POSIX path of input
    tell application "Terminal"
        try
            -- we look for <= 2 because Emacs --daemon seems to always have an entry in visibile-frame-list even if there isn't
            set frameVisible to do shell script "/Applications/Emacs.app/Contents/MacOS/bin/emacsclient -e '(<= 2 (length (visible-frame-list)))'"
            if frameVisible is "t" then
                do shell script "/Applications/Emacs.app/Contents/MacOS/bin/emacsclient -n " & filepath
            else
                -- there is a not a visible frame, launch one
                do shell script "/Applications/Emacs.app/Contents/MacOS/bin/emacsclient -c -n " & filepath
            end if
        on error
            -- daemon is not running, start the daemon and open a frame     
            do shell script "/Applications/Emacs.app/Contents/MacOS/Emacs --daemon"
            do shell script "/Applications/Emacs.app/Contents/MacOS/bin/emacsclient -c -n"
        end try
    end tell

    -- bring the visible frame to the front
    tell application "Emacs" to activate

    return input
end run
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.