เป็นไปได้ไหมที่จะสร้างบัฟเฟอร์ * โหมด * scratch *?


13

ในขณะที่ทำงานกับเอกสารใน emacs ฉันมักพบว่าตัวเองกำลังเปิดบัฟเฟอร์ใหม่ทำอะไรบางอย่างในโหมด org คัดลอกเนื้อหาโหมด org และวางลงในเอกสารของฉัน ฉันเคยสร้างเอกสารองค์กรโหมดใหม่ทุกครั้งที่ฉันต้องการทำสิ่งนี้ ตอนนี้ฉันมีไฟล์~/.scratch.orgที่เก็บงานนี้ไว้

เป็นไปได้ไหมที่จะสร้าง*org-scratch*บัฟเฟอร์ที่ทำงานแบบแอนะล็อกกับ*scratch*บัฟเฟอร์?


3
มีอะไรไม่สะดวกที่จะทำM-x org-modeเมื่อคุณอยู่ใน*scratch*บัฟเฟอร์?
xji

1
@ XiangJi ไม่คิดแม้แต่จะทำเช่นนั้น เป็นความคิดที่ดีมาก.
Brian Fitzpatrick

คำตอบ:


11

โหมดหลักเริ่มต้นสำหรับ*Scratch*บัฟเฟอร์ถูกควบคุมโดยตัวแปรinitial-major-mode- ค่าจะต้องเป็นสัญลักษณ์ (ซึ่งในเงื่อนไขของฆราวาสหมายถึงใส่เครื่องหมายอัญประกาศเดี่ยวข้างหน้าชื่อโหมดหลัก): http: //www.gnu org / ซอฟแวร์ / emacs / คู่มือ / html_node / Elisp / Auto-เมเจอร์ Mode.html

(setq initial-major-mode 'org-mode)

แก้ไข : ตามความคิดเห็นของผู้โพสต์ต้นฉบับต่อไปนี้เป็นฟังก์ชั่นตัวอย่างในการสร้างบัฟเฟอร์ที่ไม่ได้เยี่ยมชมไฟล์ในลำดับต่อเนื่องกับโหมดหลักของorg-mode:

(defun my-scratch-buffer ()
"Create a new scratch buffer -- \*hello-world\*"
(interactive)
  (let ((n 0)
        bufname buffer)
    (catch 'done
      (while t
        (setq bufname (concat "*hello-world"
          (if (= n 0) "" (int-to-string n))
            "*"))
        (setq n (1+ n))
        (when (not (get-buffer bufname))
          (setq buffer (get-buffer-create bufname))
          (with-current-buffer buffer
            (org-mode))
          ;; When called non-interactively, the `t` targets the other window (if it exists).
          (throw 'done (display-buffer buffer t))) ))))

ดังนั้นจะเป็นไปได้ไหมที่จะมี*Scratch*บัฟเฟอร์สองตัว?
Brian Fitzpatrick

ฉันเพิ่มฟังก์ชั่นตัวอย่างที่สร้างบัฟเฟอร์ที่ไม่ใช่ไฟล์ใหม่ในลำดับตัวเลขและฉันรวมการorg-modeกำหนดไว้ ชื่อสามารถเปลี่ยนจากhello-worldอะไรก็ได้ที่ผู้ใช้ต้องการที่ระบบปฏิบัติการรู้จักเช่น Windows ไม่ชอบ astrisks
ฏหมาย

เด็ดมาก ขอบคุณที่ดูที่นี่!
Brian Fitzpatrick

ฉันมีความสุขที่ได้ช่วย ฉันตัดสินใจที่จะโยนผลลัพธ์และแสดงบัฟเฟอร์ในคราวเดียว - ฟังก์ชั่นเหมือนกัน แต่ฟังก์ชั่นนี้ดูกะทัดรัดกว่านี้เล็กน้อย :)
ฏหมาย

11

มีส่วนขยายที่เรียกว่าscratchซึ่งอนุญาตให้สร้างบัฟเฟอร์รอยขีดข่วนเฉพาะโหมด มีให้จาก MELPA ดังนั้นคุณควรติดตั้งได้อย่างง่ายดาย

กับแพคเกจนี้ติดตั้งเมื่อคุณอยู่ในorg-modeบัฟเฟอร์คุณสามารถเรียกใช้จะได้รับบัฟเฟอร์รอยขีดข่วนในM-xscratchorg-mode

หากคุณให้อาร์กิวเมนต์คำนำหน้าคุณจะมีโอกาสเลือกโหมด (แทนที่จะเลือกโหมดหลักที่ใช้งานในปัจจุบัน)


ฉันลองสิ่งนี้ แต่ฉันคิดว่าบัฟเฟอร์รอยขีดข่วนจะถูกลบหลังจากคุณออกจาก emacs บัฟเฟอร์รอยขีดข่วนเดิมไม่ได้มันจะบันทึกตัวเองโดยอัตโนมัติเช่นกัน ถูกต้องหรือว่าฉันคิดถึงอะไรบางอย่าง?
Vivi

1
ถ้าคุณไม่ทำอะไรเป็นพิเศษ*scratch*บัฟเฟอร์ดั้งเดิมจะไม่คงอยู่ในเซสชันและจะไม่ถูกบันทึกเมื่อคุณออกจาก emacs ลองเรียกใช้emacs -qเพื่อรับพฤติกรรมมาตรฐานโดยไม่แก้ไขโดยไฟล์ init ของคุณ
FrançoisFévotte

น่าสนใจฉันไม่รู้ ฉันเพิ่งตรวจสอบเรื่องนี้และฉันพบว่ามันเป็นคุณสมบัติของ Aquamacs ฉันยังพบว่า Aquamacs มาพร้อมกับปุ่มลัด Command-N เพื่อสร้างรอยขีดข่วนใหม่ในอีกเฟรมหนึ่ง
Vivi

2
โดยวิธีการที่มีแพคเกจใน MELPA เรียกว่ารอยขีดข่วนถาวรซึ่งอ้างว่าสร้างบัฟเฟอร์รอยขีดข่วนถาวร
Vivi

5

ฉันคิดว่าวิธีง่าย ๆ ที่จะทำให้สำเร็จคือการทำงานM-x org-modeเมื่อคุณอยู่ใน*snatch*บัฟเฟอร์และทำให้เปิดใช้งานorg-modeโดยตรง สามารถใช้กับการเปิดใช้งานโหมดหลักใด ๆ


วิธีที่ง่ายที่สุดโดยไกล
2699

สิ่งนี้มีประโยชน์อย่างแน่นอน ฉันชอบที่มีบัฟเฟอร์รอยขีดข่วนที่อุทิศให้กับโหมด org โดยเฉพาะตั้งแต่ฉันมักจะใช้บัฟเฟอร์รอยขีดข่วนสำหรับสิ่งอื่น ๆ
Brian Fitzpatrick

2

ลองสิ่งนี้:

  1. Cx b (พิมพ์ชื่อสำหรับบัฟเฟอร์รอยขีดข่วนใหม่ของคุณเช่น "asdf")
  2. โหมด Mx org (เปลี่ยนโหมดหลักของบัฟเฟอร์ "asdf")

เมื่อปิดบัฟเฟอร์นี้คุณจะไม่ได้รับแบบสอบถามสำหรับการบันทึกเนื้อหา คือคุณได้รับบัฟเฟอร์รอยขีดข่วนที่เหมาะสม และ*scratch*บัฟเฟอร์ยังคงไม่บุบสลาย

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.