ฉันจะรัน Emacs แบบกราฟิกของ Mac OSX ในโหมด daemon ได้อย่างไร


24

แบบสั้น: ฉันต้องการเรียกใช้ Emacs เวอร์ชัน Mac OSX ที่พบใน http://emacsformacosx.com/เป็น daemon โดยมีไคลเอ็นต์กราฟิกและข้อความเชื่อมต่อกับมันตามต้องการ

ในรายละเอียดนี่คือขั้นตอนการทำงานที่ฉันต้องการ:

  1. ในการเข้าสู่ระบบรัน/Applications/Emacs.app/Contents/MacOS/Emacs --daemonเพื่อเริ่ม emacs เป็น daemon ฉันรู้วิธีการทำสิ่งนี้อยู่แล้ว

  2. เมื่อเรียกใช้ emacs จาก termnal ท้องถิ่นฉันต้องการอย่างใดอย่างหนึ่งต่อไปนี้:

    1. ถ้าฉันเรียกใช้emacsจากพรอมต์คำสั่งท้องถิ่นเปิดเฟรมใหม่ด้วยไฟล์ที่เลือก
    2. หาก # 1 เป็นไปไม่ได้อย่างน้อยถ้าฉันเรียกใช้emacsclientจากบรรทัดคำสั่งให้เปิดเฟรมใหม่ด้วยไฟล์ที่เลือก
  3. เมื่อเรียกใช้ emacs จากเทอร์มินัลระยะไกลฉันต้องการให้ emacs โหมดข้อความเริ่มต้นเชื่อมต่อกับกระบวนการ daemon

  4. หากฉันEmacs.appใช้ emacs daemon ที่ทำงานอยู่ในพื้นหลังแทนการเริ่มต้นอินสแตนซ์ใหม่และเปิดหน้าต่างใหม่

จนถึงตอนนี้ฉันสามารถบรรลุเพียง # 1 และ # 2.2 ข้างต้น แต่สิ่งเหล่านี้เป็นส่วนที่ง่าย # 3 และ # 4 เป็นสิ่งที่จำเป็นที่สุดในการทำงานนี้ ไม่มีใครรู้วิธีที่จะบรรลุสิ่งเหล่านี้หรือไม่


1
สำหรับคนอื่น ๆ ที่พบคำถามนี้: คุณยังสามารถM-x server-startใช้ emacs เริ่มต้นได้โดยไม่ต้อง --daemonเข้าสู่โหมดเซิร์ฟเวอร์ คำถามที่ดี BTW
dmckee

1
... หรือใส่(server-start)ใน .emacs คุณเพื่อที่จะเริ่มต้นเมื่อคุณเปิด emacsa
ดั๊กแฮร์ริส

ใครสามารถอธิบายวิธีการ # 1 คุณจะทำให้มันเป็นรายการเข้าสู่ระบบ?
ชาร์ลีดอกไม้

1
@Charlie ดอกไม้emacswiki.org/emacs/EmacsAsDaemon#toc5
Colin

คำตอบ:


15
  1. คุณได้รับการจัดการนี้
  2. ใช่คุณจะต้องใช้ emacsclient หากต้องการรับเฟรมใหม่ให้เพิ่มตัวเลือก -c ฉันมีนามแฝงที่จะทำให้มันเร็วขึ้นและบอกให้ emacsclient ไม่ต้องรอให้เซิร์ฟเวอร์ emacs ส่งคืน:

    alias em='emacsclient -n'
    
  3. emacsclient -nw
  4. ฉันไม่แน่ใจเกี่ยวกับเรื่องนี้ ฉันเริ่มต้น Emacs หนึ่งครั้งและโหลดไฟล์ใหม่เสมอทั้งใน emacs หรือใช้emนามแฝงของฉัน

ปรับปรุง:

ลองอ่านเคล็ดลับนี้เกี่ยวกับวิธีใช้Platypusเพื่อสร้าง wrapper ของแอพที่อยู่รอบ ๆ emacsclient จากนั้นคุณสามารถใช้"เปิดด้วย ... "เพื่อเปิดใช้งาน wrapper แอปใหม่ของคุณ


ใช่นั่นคือเคล็ดลับที่แท้จริงใช่ไหม? เพราะสิ่งที่ฉันต้องการสำหรับการเปิดระบบปฏิบัติการทั้งหมดเพื่อใช้ emac ที่กำลังทำงานอยู่ไม่ว่าฉันจะทำงานภายในเทอร์มินัลหรือบริบท GUI ฉันจะดูต่อไป
Chris R

พบผู้อ้างอิงตุ่นปากเป็ดและอัพเดทคำตอบของฉัน
ดั๊กแฮร์ริส

6
นี่แก้ไขได้หรือไม่? คุณได้รับ Emacs.app เชื่อมต่อกับภูตอย่างไร
milkypostman

ฉันยังต้องการที่จะรู้คำตอบของคำถามที่ 4 :)
JKP

2

ใช่นี่คือคำอธิบายที่ครอบคลุมเกี่ยวกับวิธีการทำสิ่งนี้ ฉันพยายามหลายวิธีเพื่อให้มันทำงานได้ดี แต่ไม่ดีไปกว่าที่อธิบายไว้ที่นี่

https://gist.github.com/304964

ไชโย!


1
ลิงก์นั้นตาย
Nisba

1

สำหรับ 4. ใส่สิ่งนี้ลงใน. emacs ของคุณ:

(setq ns-pop-up-frames nil)

วิธีแก้ปัญหาในการสร้างแอป Mac. (ด้วย Platypus) ไม่ทำงานเนื่องจาก Mac จะไม่เปิดแอปพลิเคชันเดียวกันสองครั้ง


1
หากคุณใช้ "open -n" คุณสามารถเปิดอินสแตนซ์ใหม่ของแอพพลิเคชั่นแม้ว่ามันจะทำงานอยู่ ลองสิ่งนี้ในเทอร์มินัล: open -n -a Emacs.app somefile.txt
Jörgen Lundberg

ใช่ แต่จะเปิดหน้าต่างใหม่ซึ่งฉันไม่ต้องการ
juanmirocks

บางทีฉันอาจเข้าใจผิดในสิ่งที่คุณต้องการ แต่ถ้าคุณไม่ต้องการให้สร้างหน้าต่างใหม่ แต่ใช้ที่มีอยู่ให้ข้าม '-n'
Jörgen Lundberg

ใช่ฉันไม่ต้องการสร้างหน้าต่างใหม่ open -a Emacs.appแน่นอนว่าฉันจะทำอะไร แต่จะเปิดในพื้นหลังอินสแตนซ์ / daemon เดียวกันของ emacs ที่มีอยู่ฉันต้องเขียน(setq ns-pop-up-frames nil)ใน.emacsขณะที่เขียนไว้ในคำตอบ -nมิฉะนั้นมันจะสร้างหน้าต่างใหม่แล้วมีหรือไม่มี
juanmirocks
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.