Emacs

คำถาม & คำตอบสำหรับผู้ใช้ขยายหรือพัฒนา Emacs

2
ใช้ประโยชน์จากพื้นที่เสียงสะท้อนที่ว่างเปล่าเพื่อแสดงข้อมูล
พื้นที่เสียงก้องว่างเปล่าเกือบตลอดเวลาซึ่งทำให้ฉันคิดว่าฉันสามารถใช้เพื่อแสดงข้อมูลบางอย่าง ตัวอย่างเช่นorg-clockแสดงภารกิจปัจจุบันเวลาที่เหลือและเวลาที่ผ่านไปทั้งหมดบนแบบจำลอง ข้อมูลนี้จะไม่สามารถอ่านได้จริงๆ (modeline สามารถจะค่อนข้างสั้น) จะถูกทำซ้ำในแต่ละ modeline (เพราะมันใช้กับเซสชั่น emacs ทั้งหมด) และไม่ได้เป็นว่ามีประโยชน์ที่ฉันยินดีที่จะเสียสละพื้นที่ modeline บางอันมีค่าสำหรับมัน . ในทางกลับกันมันอาจปรากฏขึ้นในพื้นที่เสียงก้องเมื่อไม่มีอะไรจะแสดงที่นี่ มีวิธีที่ยอมรับได้ของวิธีนี้หรือไม่? ฉันคิดว่าการแฮ็คฟังก์ชั่นแทรกในminibuffer-inactive-mode-hook(แต่มันไม่ทำงานอย่างน่าเชื่อถือเช่นข้อความหายไปทันทีที่มีการใช้พื้นที่เสียงก้องอีกครั้ง) หรือสแปมข้อความที่ไม่ได้เข้าสู่ระบบ (แต่จะยุ่งกับการใช้งานอื่น ๆ พื้นที่สะท้อนและมินิบัส) คนยากจนรุ่นนี้จะใช้ตัวจับเวลาว่าง แต่พื้นที่เสียงก้องสามารถว่างเปล่าโดยไม่ต้อง emacs ไม่ได้ใช้งาน (ตัวอย่างเช่นเมื่อป้อนข้อความบางส่วน)

2
การเรียงลำดับส่วนหัวในไฟล์ ORG
ฉันกำลังจดบันทึกในไฟล์โหมดองค์กรขนาดใหญ่ที่มีโครงสร้างต่อไปนี้: * Toto, A Notes about Toto. * Titi, C Notes about Titi. * Tutu, A Notes about Tutu. ฉันต้องการจัดเรียงไฟล์เพื่อให้ส่วนหัวทั้งหมดมีส่วนหัวที่มีAมาก่อนBซึ่งจะนำหน้าส่วนหัวด้วยCเป็นต้น มีวิธีอัตโนมัติในการทำเช่นนี้กับโหมด org หรือไม่?
10 org-mode  sorting 

2
ซ่อนประกาศลิขสิทธิ์ GPL ที่ยาวที่ด้านบนของไฟล์
ฉันกำลังทำงานกับไฟล์ * cpp และ * h จำนวนมากซึ่งมีการแจ้งเตือนลิขสิทธิ์ที่มีความยาวตั้งแต่ต้น ฉันต้องการ emacs ที่จะแสดงไฟล์เหล่านี้ราวกับว่ามันไม่ได้อยู่ที่นั่นโดยไม่ต้องลบข้อความจริง นั่นคือสิ่งนี้: /* * Copyright (C) 2006-2008 Author A * Copyright (C) 2006-2008 Author B * Copyright (C) 2006-2008 Author C * Copyright (C) 2006-2008 Author D * * This library is free software; you can redistribute it and/or * modify …
10 display 

1
วิธีการเรียงลำดับรายการไฟล์ใน helm-find-files
เมื่อฉันใช้helm-find-filesเพื่อค้นหาไดเรกทอรี ฉันต้องการให้แสดงการจับคู่และไดเรกทอรีที่ตรงกันเป็นอันดับแรกในรายการผู้สมัครตามด้วยไฟล์ ตัวอย่างเช่นการค้นหา "src" ให้ผลลัพธ์ดังต่อไปนี้: ฉันจะแสดง "src" ก่อนได้อย่างไรเนื่องจากเป็นการจับคู่ที่ตรงกันและไดเรกทอรี หรือถอดที่ทำให้ซ่อน "." ไฟล์ไปที่ท้ายรายการ (ดูเหมือนว่าจะเรียงตามตัวอักษร?)

1
ให้บัฟเฟอร์ ERC อยู่ในพื้นหลังในการเชื่อมต่อ
ฉันใช้ ERC (กับ ZNC) เป็นลูกค้า IRC ของฉัน ฉันเข้าร่วมกับช่องไม่กี่ช่องและเมื่อฉันเรียกใช้znc-allบัฟเฟอร์ทั้งหมดของฉันได้รับการกู้คืนและมีการบันทึกซ้ำ ทั้งหมดนี้ยอดเยี่ยมมาก อย่างไรก็ตามสิ่งที่ฉันคิดว่าน่ารำคาญมากคือในขณะที่เล่นซ้ำแต่ละบัฟเฟอร์ช่องสัญญาณจะถูกเปิดขึ้นมาด้านหน้าและฉันก็ไม่สามารถทำงานอื่นได้ในเวลานั้น มันน่ารำคาญมากขึ้นเมื่อฉันเชื่อมต่อใหม่โดยอัตโนมัติหลังจากที่ถูกตัดการเชื่อมต่อชั่วคราว ทันใดนั้นงานของฉันถูกขัดจังหวะโดยบัฟเฟอร์ช่องสัญญาณเหล่านี้ที่ปรากฏขึ้นด้านหน้าขณะที่บันทึกช่องจะถูกเล่นซ้ำ ฉันจะบอกให้ ERC / ZNC เก็บบัฟเฟอร์ในเบื้องหลังได้อย่างไรเมื่อเล่นซ้ำบันทึกการแชท ฉันไม่ต้องการให้ Emacs เปลี่ยนบัฟเฟอร์เว้นแต่ว่าฉันขอให้เปลี่ยนบัฟเฟอร์อย่างชัดเจน
10 buffers  erc 

2
สัญลักษณ์แทนในไฟล์ org-วาระ
ฉันมีโฟลเดอร์ฐานโครงการ~/prjภายในซึ่งเรามีโครงการหลายราย, 2014_prj1, 2014_prj2, ... , ภายในของที่ผมมีในหมู่คนอื่น ๆdocโฟลเดอร์ เค้าโครงมีลักษณะดังนี้: ~/prj ~/prj/2014_prj1 ~/prj/2014_prj1/README.org ~/prj/2014_prj1/data ~/prj/2014_prj1/doc ~/prj/2014_prj2 ~/prj/2014_prj2/README.org ~/prj/2014_prj2/data ~/prj/2014_prj2/doc ตอนนี้ฉันต้องการเพิ่มไดเรกทอรีโครงการทั้งหมด ( 2014_prjX) ไปยังorg-agenda-filesเช่นเดียวกับdocไดเรกทอรีย่อยทั้งหมดของไดเรกทอรีโครงการ dataโฟลเดอร์ที่ควรจะได้เป็นส่วนหนึ่งของorg-agenda-filesเพราะพวกเขาอาจจะมี 10000s ไฟล์ ฉันจะบรรลุสิ่งนี้ได้อย่างไร ฉันลองง่าย (setq org-agenda-files (quote ("~/doc/notes" "~/.emacs.d" "~/prj/*/doc" ) ) แต่นี่ทำให้ฉันเกิดข้อผิดพลาด Non-existing agenda file ~/prj/*/doc

2
ทำให้ forward-sexp รู้จักบล็อกที่กำหนดโดยคำหลักไม่ใช่แค่วงเล็บ
ในภาษา (Julia) ที่มีบล็อกที่กำหนดโดยคำหลักเช่นfor..end, begin..endเช่นเดียวกับวงเล็บสิ่งที่เป็นวิธีที่ดีที่จะข้ามเช่นบล็อกหรือไม่? นอกจากนี้endไม่เพียง แต่เป็นคำหลักบล็อก แต่ยังเป็นตัวระบุที่ถูกต้องที่ใช้ในสถานที่อื่น วิธีหนึ่งคือค้นหา regex เริ่มต้น / ปิดบล็อกและข้ามสายอักขระข้อคิดเห็นและends ฯลฯ ทั้งหมด แต่สิ่งนี้ค่อนข้างไม่มีประสิทธิภาพและน่าเกลียดเล็กน้อย มีวิธีในการแยกวิเคราะห์ไวยากรณ์ของ emacs เองหรือไม่รู้จักคำหลักบล็อกดังกล่าวเพื่อที่forward/backward-sexpจะทำงานโดยอัตโนมัติและเพื่อให้หนึ่งสามารถบอกจุดเริ่มต้นของบล็อกปัจจุบันได้อย่างรวดเร็วจากการส่งออกของเช่นsyntax-ppss? [หมายเหตุ: ฉันไม่รังเกียจที่จะแยกไฟล์ด้วยตัวเอง แต่ในกรณีนี้ฉันยังอยากรู้ว่าตัวแยกวิเคราะห์ของฉันควรเสียบเข้ากับ emacs ที่เหลืออย่างไร]
10 syntax  parsing 

2
บังคับใช้แบบอักษรที่มีความกว้างคงที่ในโหมดองค์กร
อะไรคือวิธีที่ง่ายที่สุดในการบังคับให้ Emacs org-mode ใช้แบบอักษรที่มีความกว้างคงที่และความสูงเหมือนกันทุกที่ ฉันสามารถทำให้org-level-nใบหน้าทั้งหมดได้รับสืบทอดมาfixed-pitchหรือทำการvariable-pitchอ้างอิงแบบอักษรที่มีความกว้างคงที่เช่นที่จริง แต่นั่นอาจเป็นเรื่องยุ่งยาก ขอบคุณล่วงหน้า.
10 org-mode  fonts 

1
วิธีการดีบักข้อผิดพลาดในรักษาการณ์และระหว่างล็อคแบบอักษร
เมื่อมีข้อผิดพลาดเกิดขึ้นในกระบวนการยามหรือในระหว่างการล็อคตัวอักษรแล้ว Emacs จะไม่แสดง backtrace แม้ว่าจะdebug-on-errorเปิดใช้งานก่อนหน้านี้ ฉันเข้าใจว่าทำไมข้อผิดพลาดเหล่านี้ถึงได้ข้อผิดพลาดเดียวกันอาจถูกเรียกอีกครั้งในขณะที่พยายามนำเสนอ backtrace อย่างไรก็ตามเมื่อฉันต้องการแก้ไขข้อผิดพลาดจริง ๆ แล้วมันไม่ได้มีประโยชน์มาก ฉันค่อนข้างจะเสี่ยงที่ Emacs จะไม่ตอบสนองมากกว่าต้องทำงานจากสิ่งนี้: error in process sentinel: Wrong type argument: stringp, nil หลังจากทั้งหมดฉันสามารถเริ่มอินสแตนซ์ที่สองถ้าเริ่มแรกจะบ้า บริบทเล็ก ๆ น้อย ๆ จะช่วยได้มากขึ้นเมื่อมีหลายสถานที่ซึ่งข้อผิดพลาดดังกล่าวอาจเกิดขึ้นในยามรักษาการณ์ ดังนั้นฉันจะบังคับให้ Emacs แสดง backtrace ได้อย่างไรในกรณีที่debug-on-errorไม่มีผลกระทบ?
10 debugging 

3
ทำซ้ำการแทรกข้อความล่าสุด
ในกลุ่มคุณสามารถกด.เพื่อทำซ้ำการเปลี่ยนแปลงล่าสุดรวมถึงการแทรกข้อความ ในขณะที่ Emacs C-x zจะทำซ้ำคำสั่งสุดท้ายเท่านั้น ฉันรู้ว่าสามารถใช้มาโครได้ที่นี่ แต่บ่อยครั้งที่ฉันรู้ว่าฉันต้องแทรกข้อความเดิมช้าเกินไป เมื่อผมจำเป็นต้องใส่ก็เพียงเวลามากขึ้นหนึ่งในการกำหนดแมโครแล้วจะไม่มีจุดหมาย ถาม:มีวิธีการแทรกข้อความซ้ำภายใน Emacs หรือไม่

1
วิธีจัดแนวภูมิภาคและ / หรือเส้นให้ถูกต้อง
เราสามารถศูนย์ข้อความด้วยและM-x center-region M-o M-sมีสิ่งที่คล้ายกันสำหรับการจัดตำแหน่งที่ถูกต้องหรือไม่ ตัวอย่างก่อน: Item 0: value | Item 100: value | Item 30: value | หลังจาก: Item 0: value| Item 100: value| Item 30: value| fill-column ^ วิธีที่ง่ายที่สุดในการจัดข้อความชิดขวาคืออะไร?

2
ทำไมโหมดหลักไม่เพียงตรวจสอบใบหน้า
เมื่อเขียนโหมดหลักมันมักจะมีประโยชน์ที่จะรู้ว่า 'เป็นจุดในสตริง?' 'มีความคิดเห็นไหม?' โหมดหลักส่วนใหญ่ดูเหมือนจะพยายามแยกวิเคราะห์ภาษาการเขียนโปรแกรม ตัวอย่างเช่น: python-syntax-content โทร syntax-ppss haskell-fill-paragraphโทรsyntax-ppssและre-search-forward c-in-comment-line-prefix-p ย้ายจุดรอบ ๆ และโทร looking-at sp-point-in-commentโทรsyntax-ppssแต่ยังตรวจสอบว่ามันอยู่ในขอบเขตความคิดเห็น อย่างไรก็ตามวิธีนี้ใช้ไม่ได้ในบางกรณี ในบัฟเฟอร์โหมดองค์กรความคิดเห็นในบล็อกแหล่งตรวจไม่ถูกต้องโดยวิธีการเหล่านี้ นอกจากนี้ยังดูเหมือนไม่มีจุดหมายเนื่องจากบัฟเฟอร์แสดงความคิดเห็นแล้วที่เน้นอยู่ คุณสามารถตรวจสอบใบหน้าตรงจุดแทน: (defun wh--get-faces (pos) "Get all the font faces at POS." (remq nil (list (get-char-property pos 'read-face-name) (get-char-property pos 'face) (plist-get (text-properties-at pos) 'face)))) (defun wh-string-p (pos) "Return non-nil if POS is …

1
จะรู้ได้อย่างไรว่า emacs ทำงานเป็น daemon หรือไม่?
ฉันต้องการทราบว่า emacs ทำงานเป็น daemon หรือไม่ดังนั้นฉันสามารถโหลดบางส่วนของการกำหนดค่าตามที่ต้องการได้ฉันต้องการทราบสิ่งนี้จากภายใน emacs
10 daemon  server 

1
วิธีทำการแมปใหม่ของ บริษัท เลือกถัดไปและเลือกปุ่มก่อนหน้า
ฉันไม่ชอบเริ่มต้นM-nและM-pกุญแจcompany-select-nextและcompany-select-previousดังนั้นฉันถูกสงสัยว่าถ้าเป็นไปได้ที่จะทำการแมปเหล่านั้นไปC-nและC-pไม่มีผลต่อการแมปเมื่อเคล็ดลับของ บริษัท ไม่ได้ใช้งาน

1
จะนับหน้าต่างทั้งหมดในกรอบได้อย่างไร
เช่นเดียวกับคำถามที่ระบุไว้ฉันต้องการฟังก์ชั่นที่จะนับจำนวนหน้าต่างที่กำลังแสดงอยู่ในเฟรมนั้น ดังนั้นนี่คือ: +--------------+-------------+ | | | | | | | *scratch* | *Messages* | | | | | | | | | | +--------------+-------------+ | *Help* | | | +----------------------------+ จะกลับมา => 3 ฉันเริ่มฟังก์ชั่นด้านล่าง: (defun count-windows () "Count how many buffers are currently being shown." (interactive) )
10 elisp  window  frames 

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