ELisp এর অধীনে কোন OS Emacs চলছে তা আমি প্রোগ্রামগতভাবে কীভাবে নির্ধারণ করব?
আমি .emacs
ওএসের উপর নির্ভর করে বিভিন্ন কোড চালাতে চাই ।
উত্তর:
system-type
পরিবর্তনশীল:
system-type is a variable defined in `C source code'.
Its value is darwin
Documentation:
Value is symbol indicating type of operating system you are using.
Special values:
`gnu' compiled for a GNU Hurd system.
`gnu/linux' compiled for a GNU/Linux system.
`darwin' compiled for Darwin (GNU-Darwin, Mac OS X, ...).
`ms-dos' compiled as an MS-DOS application.
`windows-nt' compiled as a native W32 application.
`cygwin' compiled using the Cygwin library.
Anything else indicates some sort of Unix system.
লোকেদের নতুন করে এলিসপ করার জন্য, একটি নমুনার ব্যবহার:
(if (eq system-type 'darwin)
; something for OS X if true
; optional something if not
)
progn
হয়, ব্লকের জন্য প্রয়োজনীয়), তাই কিরকগুলির সাথে পরিচিত না সবার জন্য একটি সুপারিশ - এই উত্তরটি দেখুন ।
progn
আপনার কাছে অন্য কোনও মামলা না থাকলে @ kermit666 আসলে প্রয়োজন হয় না actually আমি এর দ্বারা যা বোঝাচ্ছি তা হ'ল আপনি কেবল তার when
পরিবর্তে ব্যবহার করতে পারেন if
যা সমান(if ... (progn ...) '())
cond
মতো ব্যবহার করতে পারেন :(case system-type ((gnu/linux) "notify-send") ((darwin) "growlnotify -a Emacs.app -m"))
case
, না cond
। case
যেহেতু স্ট্রিংয়ের system-type
মতো নয় 'gnu/linux
বা প্রতীক হিসাবে কাজ করেdarwin
সিস্টেম-টাইপের উপর নির্ভর করে সহজেই কোড চালানোর জন্য আমি একটি সাধারণ ম্যাক্রো তৈরি করেছি:
(defmacro with-system (type &rest body)
"Evaluate BODY if `system-type' equals TYPE."
(declare (indent defun))
`(when (eq system-type ',type)
,@body))
(with-system gnu/linux
(message "Free as in Beer")
(message "Free as in Freedom!"))
এখন উইন্ডোজের জন্য লিনাক্স সাবসিস্টেমও রয়েছে (উইন্ডোজ 10 এর অধীন ব্যাশ) যেখানে system-type
রয়েছে gnu/linux
। এই সিস্টেমটি সনাক্ত করতে ব্যবহার করুন:
(if
(string-match "Microsoft"
(with-temp-buffer (shell-command "uname -r" t)
(goto-char (point-max))
(delete-char -1)
(buffer-string)))
(message "Running under Linux subsystem for Windows")
(message "Not running under Linux subsystem for Windows")
)
এটি বেশিরভাগই ইতিমধ্যে উত্তর দেওয়া হয়েছে, তবে যারা আগ্রহী তাদের জন্য আমি কেবল এটি ফ্রিবিএসডি-তে পরীক্ষা করেছিলাম এবং সেখানে রিপোর্ট করা মানটি ছিল "বার্কলে-ইউনিক্স"।