ตั้งค่า Emacs บน Windows เพื่อเริ่มต้นอินสแตนซ์เดียวและเปิดไฟล์ในอินสแตนซ์ที่มีอยู่


18

ฉันสนใจประสบการณ์ Windows โดยเฉพาะอย่างยิ่งโดยเฉพาะ:

  • เริ่มต้นเซิร์ฟเวอร์โดยอัตโนมัติหากยังไม่ได้เริ่ม
  • วิธีเรียก emacs เพื่อใช้ประโยชน์จากเซิร์ฟเวอร์ (เช่นจากบรรทัดคำสั่งหรือเครื่องมือของบุคคลที่สาม)
  • รองรับเมนูบริบท (เช่นคลิกขวาที่ไฟล์และอนุญาตให้ส่งไปยัง emacs เพื่อดูและแก้ไข)

มีการสนับสนุนดังกล่าวนอกกรอบหรือไม่?

คำตอบ:


21

เริ่มต้นเซิร์ฟเวอร์โดยอัตโนมัติหากยังไม่ได้เริ่ม

นี่ควรจะเป็นแบบเดียวกันสำหรับ Emacs ใด ๆ เพิ่มข้อมูลนี้เพื่อคุณ หรือ.emacs.emacs.d/init.el

(require 'server)
(unless (server-running-p)
  (server-start)) 

และจากนั้นก็เริ่ม emacs ด้วยการรันrunemacs.exeโปรแกรมที่มาพร้อมกับบิลด์

วิธีเรียก emacs เพื่อใช้ประโยชน์จากเซิร์ฟเวอร์ (เช่นจากบรรทัดคำสั่งหรือเครื่องมือของบุคคลที่สาม)

บิลด์ Windows ของ Emacs มาพร้อมกับemacsclientw.exeไฟล์เรียกทำงานใน bin/ไดเรกทอรี ใช้พา ธ แบบเต็มเพื่อเรียกใช้งานนั้นเป็นเครื่องมือแก้ไขที่คุณเลือกในเครื่องมือของบุคคลที่สามที่คุณต้องการกำหนดค่า

รองรับเมนูบริบท (เช่นคลิกขวาที่ไฟล์และอนุญาตให้ส่งไปยัง emacs เพื่อดูและแก้ไข)

  1. Open With -> Select Default Programคลิกขวาที่ไฟล์เลือก
  2. ในหน้าต่างที่ปรากฏขึ้นให้ไปที่emacsclientw.exeปฏิบัติการที่คุณระบุไว้ด้านบนแล้วเลือก
  3. หากคุณไม่ต้องการให้ Emac เป็นค่าเริ่มต้นให้ทำขั้นตอนที่ 1 และ 2 อีกครั้งโดยเลือกโปรแกรมอื่นเป็นค่าเริ่มต้น

emacsclientw.exe ตอนนี้จะเป็นตัวเลือกในเมนูบริบทเสมอ


ขอบคุณ - จุดที่ดีเกี่ยวกับเซิร์ฟเวอร์ฉันไม่ได้คิด
cristobalito

เกี่ยวกับ emacsclient.exe ไม่ควรที่จะ emacsclientw.exe? นอกจากนี้ฉันคิดว่าคุณต้องรันด้วยแฟล็ก -a เพื่อระบุเครื่องมือแก้ไขทางเลือกหากเซิร์ฟเวอร์ไม่ทำงาน
cristobalito

เพื่อให้เซิร์ฟเวอร์ทำงานอย่างถูกต้องกับการกำหนดค่าของฉันฉันต้องเพิ่มตัวแปรสภาพแวดล้อมEMACS_SERVER_FILEที่ชี้ไปยัง.emacs.d\serverไดเรกทอรีของฉันด้วย
Ryan

@ Ryan ฉันสามารถทำงานนี้ได้โดยไม่ต้องใช้ตัวแปรสภาพแวดล้อม - เพียงแค่ต้องการให้แน่ใจว่าเซิร์ฟเวอร์กำลังทำงานอยู่
cristobalito

อืมสำหรับฉันประเมินผล(server-running-p)ตอบแทน:otherใน Windows (แม้หลังจากพยายามตั้งค่าที่EMACS_SERVER_FILEenv var.
Kaushal Modi

5

เริ่มต้นเซิร์ฟเวอร์โดยอัตโนมัติหากยังไม่ได้เริ่ม

ผมขอแนะนำให้ตั้งค่าตัวแปรสภาพแวดล้อมสำหรับการALTERNATE_EDITOR runemacs.exeวิธีนี้คุณสามารถโทรหา emacsclient ได้ตลอดแม้ว่าไม่มีเซิร์ฟเวอร์ เพียงเพิ่ม (เซิร์ฟเวอร์เริ่ม) ไปยังไฟล์ init ของคุณ เมื่อเซิร์ฟเวอร์ไม่มี emacsclient เรียกALTERNATE_EDITORซึ่งเป็น emacs ในกรณีของเรา เนื่องจาก emace เริ่มต้นเซิร์ฟเวอร์ในไฟล์ init การเรียกไปยัง emacsclient ใหม่จะเกิดขึ้นทันที

วิธีเรียก emacs เพื่อใช้ประโยชน์จากเซิร์ฟเวอร์ (เช่นจากบรรทัดคำสั่งหรือเครื่องมือของบุคคลที่สาม)

ใช้emacsclientw.exe -c -n "your_file"เพื่อเปิด your_file -cอาร์กิวเมนต์สร้างกรอบกราฟิกใหม่และ-nช่วยให้คุณสามารถปิดกรอบโดยไม่สูญเสียสถานะของเซิร์ฟเวอร์ คุณสามารถเรียกมันได้โดยไม่มีชื่อไฟล์เพื่อเปิด*Scratch*บัฟเฟอร์ ทำงานได้จากทางลัดบนเดสก์ท็อปด้วย การใช้emacsclient.exe(สังเกตว่า w ที่หายไป) จะปรากฏขึ้นพร้อมรับคำสั่งเป็นเวลาสองสามวินาทีทุกครั้งที่คุณเรียกใช้

การเพิ่มในเมนูบริบท

EmacsWiki มีหน้าที่ดีเกี่ยวกับการเพิ่ม Emacs ที่เมนูบริบทที่นี่ มันเกี่ยวข้องกับการแก้ไขโหนดรีจิสตรีHKEY_CLASSES_ROOT\*เพื่อเพิ่มการดำเนินการเพื่อเปิดด้วย emacs


5

คนอื่น ๆ ได้ตอบส่วนเซิร์ฟเวอร์ นี่คือสิ่งที่ฉันทำเพื่อรับยูทิลิตี้เหมือน UNIX / GNU / Linux เช่นgrepและdiff:

  1. ติดตั้งCygwin (การทำงานครั้งเดียว)
  2. cygwin-mount.elภาระ
  3. setup-cygwin.elภาระ

อย่างไรก็ตามโปรดทราบว่า Cygwin มีรุ่นที่แตกต่างกัน ฉันใช้เวอร์ชั่นที่เก่ากว่า (ไม่มีใครที่จะบอกได้ยาก AFAICT) Dunno ไม่ว่าคุณจะมีปัญหากับเวอร์ชั่นล่าสุดหรือไม่

ดูสิ่งนี้ด้วย:


หมายเหตุ: อย่าใช้ cygwin EMACS ติดตั้งบิวด์
M Smith

ฉันไม่แนะนำให้ติดตั้ง Cygwin เนื่องจากอาจมีผลข้างเคียงที่ไม่พึงประสงค์ (เช่นการแบ่งพอร์ต gnu windows อื่น ๆ เช่น emacs, gcc, ... ) เพียงแค่มีเครื่องมือ gnu บางตัว ติดตั้งพอร์ตGnuWin32แทน คุณสามารถติดตั้งแพ็คเกจทั้งหมดหรือเครื่องมือที่คุณเลือกได้
เซกิ

@Seki - ใช่แล้ว Eli Zaretskii พูดแบบเดียวกับคุณ ทั้งหมดที่ฉันสามารถพูดได้ก็คือว่าฉันไม่มีปัญหา (และฉันมีข้อสงสัยอย่างจริงจัง wrt คุณเรียกร้องให้มันทำลาย Emacs ) แต่ (a) ฉันใช้ Cygwin รุ่นเก่าและ (b) ฉันไม่ได้ใช้ยูทิลิตี UNIX / GNU Linux ส่วนใหญ่ที่ Cygwin จัดหาให้
ดึง

@ ดึง: อาจมากเกินไปสำหรับการพูดคุยเกี่ยวกับ "ทำลาย" emacs "ทำให้พฤติกรรมแปลก ๆ " จะดีกว่า ตัวอย่างเช่น Cygwin Make จะทำการเบรค MinGW toolchain ถ้าคุณไม่ตรวจสอบเส้นทางของคุณอย่างรอบคอบว่า Cygwin tools นั้นไม่ได้ถูกนำมาพิจารณาหรือถูกใช้โดยปริยายถ้าไม่มีตัวอื่น ๆ มันไม่ได้ จำกัด อยู่ที่การสร้างเครื่องมืออื่น ๆ ไม่สามารถผสมกันได้และบางครั้งมันก็บอบบางที่จะชี้ปัญหา ดังนั้นโดยย่อคุณอาจมีพอร์ตดั้งเดิมของ Emacs และควรใช้เครื่องมือ GNU ดั้งเดิมหรือคุณสามารถใช้การกระจาย Cygwin ทั้งหมดรวมถึง emacs
เซกิ

@ เซกิ: ดังนั้นดูเหมือนว่าประเด็นหลักของคุณก็คือ Cygwin และ MingGW เล่นด้วยกันไม่ดี นั่นไม่น่าแปลกใจสำหรับฉัน (FWIW ฉันไม่มีอะไรเทียบกับการใช้ MingGW แทน Cygwin สำหรับฉันมันเป็นเรื่องง่ายที่จะติดตั้ง Cygwin และฉันไม่ได้ใช้มันมากพอที่จะประสบปัญหา)
Drew
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.