कंसोल और GUI के लिए दो अलग emacs डेमॉन प्रारंभ करें


14

आमतौर पर मैं जीयूआई के साथ एमएसीएस शुरू करता हूं, और तुरंत एक सर्वर शुरू करता हूं (server-start)। अब मैं टर्मिनल के माध्यम emacsclient -n <file>से या फ़ाइल ब्राउज़र से अपने मौजूदा ईमैक्स सत्र में आसानी से दस्तावेज़ खोल सकता हूं ।

हालांकि, समय-समय पर, मैं अपने टर्मिनल के अंदर ईमैक्स चलाना चाहता हूं emacsclient -t। यह सबसे अधिक बार होता है जब git कमिट लॉग लिखना या अन्य बहुत छोटे कार्य करना। उन उदाहरणों में, तथ्य यह है कि मेरी इनिट फ़ाइल को जीयूआई इंस्टेंस ऑफ एमएसीएस में लोड किया गया था, जिसका अर्थ है कि मुझे मेरा कोई भी अनुकूलन नहीं मिलता है जो टीटीवाई एमएसीएस के लिए विशिष्ट है।

मुझे पता है कि मैं दौड़ सकता हूं

emacs -nw -q -l "some-custom-init-file.el"

लेकिन वह हर बार सभी पैकेजों को पुनः लोड करेगा। क्या मैं दोनों दुनियाओं में सर्वश्रेष्ठ हो सकता हूं? क्या कोई "TTY डेमॉन" स्थापित करने का कोई तरीका है ताकि मैं टर्मिनल के अंदर चलने के लिए अलग-अलग अनुकूलन का उपयोग कर सकूं / मौजूदा इमैक विंडो में फ़ाइल पर जाकर?


1
क्या आप अपने कस्टमाइज़ेशन के उदाहरण की ओर इशारा कर सकते हैं जो TTY और GUI मोड के बीच भिन्न हैं?
stsquad

1
@stsquad एक वास्तव में सरल है कि मैं GUI मोड में एक बाएं फ्रिंज का उपयोग करता हूं, लेकिन चूंकि फ्रिंज TTY मोड में मौजूद नहीं है, लाइन नंबर और टेक्स्ट के बीच कोई स्थान नहीं है। यह (setq linum-format "%d ")TTY अनुकूलन फ़ाइल के साथ तय किया जा सकता है । इसके अलावा, टीटीवाई मोड में मेरा रंग विषय हमेशा अजीब लगता है, इसलिए मैं निश्चित रूप से टीटीवाई के लिए एक अलग विषय चुनूंगा। मेरे पास इस समय बहुत सारे अंतर नहीं हैं, लेकिन अब जब मुझे पता है कि मेरे पास अलग-अलग सर्वर हो सकते हैं, तो सूची बढ़ सकती है।
22

@nispio: मैं आपको सुझाव देता हूं M-x report-emacs-bugऔर नई विशेषताओं का अनुरोध करता हूं जैसे कि TTY में और GUI फ्रेम में अलग-अलग चेहरे की थीम रखने की क्षमता (वास्तव में, एक विषय उन विभिन्न प्रकार के फ़्रेमों के लिए पूरी तरह से अलग-अलग रंगों को निर्दिष्ट कर सकता है, इसलिए आप अपनी थीम को समायोजित भी कर सकते हैं) । उन अलग-अलग मामलों के लिए कई डेमों का उपयोग करना Emacs में संबंधित कार्यक्षमता की कमी के लिए सिर्फ एक समाधान है।
स्टेफन

जवाबों:


14

का प्रयोग करें emacs --daemon=your-server-name -l "custom-init-file"एक नया सर्वर शुरू करने के लिए और emacsclient -nw -s your-server-nameटर्मिनल से ही यह करने के लिए कनेक्ट करने के लिए। मैन्युअल में सर्वर के रूप में Emacs का उपयोग करने वाले अनुभाग में अधिक आरंभीकरण विकल्प हैं।


यह काम! क्या सर्वर को मारने का एक अच्छा तरीका यह है कि सर्वर फ़ाइल के लिए शिकार करने और हटाने के अलावा इस तरह से शुरू किया जाए?
nispio

(मुझे कस्टम -qinit.el
इनिट

2
क्या emacsclient -s your-server-name -e "(kill-emacs)"तुम क्या चाहते हो? ऊपर सिर्फ emacsclient और evals कहते हैं (kill-emacs)। आप के (kill-emacs)साथ भी बदल सकता है (save-buffers-kill-emacs)
वम्सी

मैं टर्मिनल और गुई emacs और अलग-अलग अनुकूलन के लिए अलग-अलग कस्टम फ़ाइल लोड करने के लिए एक सामान्य init.el करता था। इसलिए मैं -q
वामसी

1
इस समाधान ने एक मुद्दा भी तय किया था जिसे मैंने 'एमएसीएसक्लिएंट-टी' का उपयोग करते समय म्यूट के साथ किया था और एक अलग कार्यक्षेत्र में, 'एमैकसक्लिएंट -सी'। सीधे शब्दों में कहें: 'एमेकस्क्लिएंट -c' से पहले जब डेमॉन दुर्घटनाग्रस्त हो गया था, तब उसे निकाल दिया गया था। धन्यवाद, वामसी
बोकापार्टा-आईटी

9

@ वामसी के उत्तर के अलावा, आप केवल सलाह देकर केवल एक ही सर्वर को चलाने के दौरान कई समान लाभ प्राप्त कर सकते हैं make-frame-command

उदाहरण के लिए, टर्मिनल में दौड़ते समय मैं चाहता हूं कि पृष्ठभूमि का रंग black(जो मैप्स हो #202020) लेकिन मैं #202020एक ग्राफिकल मोड में उपयोग करना चाहता हूं । मैंने इसे इसके साथ लागू किया:

(defadvice make-frame-command (after make-frame-change-background-color last activate)
  "Adjusts the background color for different frame types. 
Graphical (X) frames should have the theme color, while terminal frames should match the terminal color (which matches the theme color...but terminal frames can't directly render this color)"
    (if (display-graphic-p)
        (set-background-color "#202020")
      (set-background-color "black")))

आप इसका उपयोग करके बहुत अधिक लाभ प्राप्त कर सकते हैं make-variable-frame-local( set-background-colorऊपर में पहले से ही फ्रेम-लोकल है)।

मुझे नहीं पता कि यह सबसे अच्छा पैटर्न है, लेकिन अगर आपके पास TTY- मोड और एक्स-मोड Emacs के बीच कुछ अंतर हैं, तो यह कॉन्फ़िगरेशन प्रबंधन को आसान बना सकता है।

उपरोक्त कोड मेरे .emacs.d से खींचा गया था ।


मैं सोच रहा था कि क्या कोई तरीका "पता लगाने" का तरीका है जो मैं प्रति फ्रेम के आधार पर कर रहा हूं।
1

1
यह करूँगा। वर्तमान फ्रेम ग्राफिकल है, तो (display-graphic-p)देता है । क्योंकि फ़्रेम केंट को चित्रमय और नहीं (afaik) के बीच ले जाया जाता है, फ्रेम निर्माण के लिए सलाह देते हुए कहते हैं कि दिए गए फ्रेम के लिए वांछित स्थिति तक पहुंच गया है। tnil
जे डेविड स्मिथ

यह निश्चित रूप से सबसे सुविधाजनक उत्तर है।
मालाबार

4

आपको एक ही emacs डेमन में चल रहे विभिन्न फ़्रेमों की सेटिंग्स बदलने के लिए सलाह की आवश्यकता नहीं है । बस हुक का उपयोग after-make-frame-functionsकरें

(defvar my/ttheme 'tango-dark)
(defvar my/gtheme 'tango)
(defun my/frame-configuration (frame)
  "configure the current frame depending on the frame type"
  (with-selected-frame frame
    (if (display-graphic-p)
        (progn
          (message "after-make-frame-functions hook: window system")
          (set-frame-size frame 115 60)
          ;; other settings for a graphical frame
          (load-theme my/gtheme t))
      (message "after-make-frame-functions hook: text console")
      (load-theme my/ttheme t)
      (set-frame-parameter frame 'menu-bar-lines 0))))

(add-hook 'after-make-frame-functions 'my/frame-configuration)

;; normal start without daemon
(if (not (daemonp))
  (my/frame-configuration (selected-frame)))

इसे इस तरह परिभाषित करते हुए जोड़ा गया बोनस है, कि यह डेमॉन मोड में शुरू नहीं होने पर भी वांछित फ्रेम-विन्यास सेट करता है।

दुर्भाग्य load-themeसे, फ़्रेम स्थानीय नहीं है और इसलिए अन्य फ़्रेम भी रंगीन हो जाते हैं यदि आप वास्तव में पाठ और चित्रमय फ़्रेम के लिए विभिन्न विषयों का उपयोग करते हैं।

बोनस जानकारी: अपने चयनित विषय की वास्तविक अनुभूति प्राप्त करने के लिए कम से कम 256 रंगों के साथ अपने टर्मिनलों को कॉन्फ़िगर करें। अपनी शेल स्टार्टअप फ़ाइलों में से किसी एक में सेटिंग का उपयोग करें:

TERM=xterm-256color
export TERM

सभी टर्मिनल 256 रंगों का समर्थन नहीं करते हैं, उदाहरण के लिए xfce4- टर्मिनल अभी भी सिर्फ 8 है (मैंने सुंदर रंगों के लिए सकुरा किया है)।
unhammer
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.