ไม่ได้next-error
เลื่อนบัฟเฟอร์การรวบรวมข้อผิดพลาดเพื่อให้ข้อผิดพลาดปัจจุบันแสดงเป็นบรรทัดแรกของหน้าต่าง?
ถ้าไม่อย่างน้อยก็ไม่วางเคอร์เซอร์บนบรรทัดข้อผิดพลาดปัจจุบันหรือไม่? ถ้าเป็นเช่นนั้นและหากเคอร์เซอร์ไม่ปรากฏให้คุณเห็นhl-line-mode
ให้ลองใช้เพื่อเน้นบรรทัดปัจจุบัน หรือพิจารณาใช้ไลบรารีcrosshairs
เพื่อเน้นบรรทัดปัจจุบันและคอลัมน์ปัจจุบัน
อัปเดตหลังจากความคิดเห็นของคุณ
ฉันคิดว่าคุณได้รับการกล่าวอ้างในบัฟเฟอร์next-error
*compilation*
หากคุณทำเช่นนั้นแล้วบรรทัดจะเลื่อนไปด้านบนตามที่ฉันอธิบาย
แต่ถ้าคุณกำลังเรียกใช้next-error
นอก buffer *compilation*
แล้วคุณจะต้องใช้next-error-hook
ไปในบัฟเฟอร์*compilation*
ไฮไลต์บรรทัดปัจจุบันหรือขอบหรืออะไรก็ตามในทางสิ่งที่คุณชอบ
นี่เป็นตัวอย่างที่รวดเร็วและสกปรก:
(defun foo ()
"..."
(with-current-buffer next-error-last-buffer
(hl-line-mode 1)))
(add-hook 'next-error-hook 'foo)
(แน่นอนคุณต้องการจริงๆเท่านั้นที่จะเปิดhl-line-mode
ครั้งเดียวในบัฟเฟอร์ที่. ทำมันที่แสดงข้างต้นเป็น overkill แต่มันไม่เจ็บ. คุณอาจจะคิดว่าคุณก็สามารถเพิ่มfoo
การgrep-mode-hook
หรือcompilation-mode-hook
. แต่เมื่อตะขอเหล่านั้นจะถูกเรียกมี ไม่next-error-last-buffer
)
บันทึก:
มีสองตัวเลือกของผู้ใช้ที่มีการควบคุมวิธีการที่จะบ่งชี้ถึงการตีที่มีในบัฟเฟอร์แหล่งที่มา (ไม่ได้อยู่ในบัฟเฟอร์รวบรวม) และnext-error-highlight
next-error-highlight-no-select
พวกมันมีความเป็นไปได้เหมือนกัน แต่ถูกใช้โดยคำสั่งต่าง ๆ ความเป็นไปได้รวมถึงการใช้ลูกศรขอบหรือเน้นการแข่งขันในช่วงเวลาหนึ่ง
*compilation*
แต่ไม่มีตัวเลือกดังกล่าวบ่งชี้ของการควบคุมการตีปัจจุบันในบัฟเฟอร์ ดังนั้น Emacs เสนอสองตัวเลือก (ที่หนึ่งอาจจะเพียงพอ) สำหรับบัฟเฟอร์แหล่งที่มา แต่ไม่มีตัวเลือกสำหรับการรวบรวมบัฟเฟอร์
คุณอาจพิจารณาการยื่นคำขอเพิ่มประสิทธิภาพเพื่อให้ได้ตัวเลือกที่คล้ายกันสำหรับการรวบรวม (รวม grep) M-x report-emacs-bug
บัฟเฟอร์: การใช้เบ็ดกับฟังก์ชั่นของคุณเองเพื่อทำการไฮไลต์ก็โอเค แต่ก็ไม่จำเป็น
และถ้าคุณเพียงต้องการที่จะเปลี่ยนแปลงตัวบ่งชี้ที่ขอบคุณสามารถทำเช่นนี้ (ใช้สิ่งที่ขอบบิตแมปที่คุณต้องการแทนfilled-rectangle
- ดู (Elisp) Fringe บิตแมปสำหรับรายการที่กำหนดไว้ล่วงหน้าได้):
(defun bar ()
(with-current-buffer next-error-last-buffer
(unless (eq 'filled-rectangle (cdr (assq 'overlay-arrow fringe-indicator-alist)))
(setq fringe-indicator-alist
(cons '(overlay-arrow . filled-rectangle) fringe-indicator-alist)))))
(add-hook 'next-error-hook 'bar)
อัปเดต # 2:
ฉันเพิ่งค้นพบว่าถ้าคุณปิดการแสดงขอบด้านซ้ายคุณจะเห็นพฤติกรรมที่ฉันอธิบายไว้ในตอนต้น: หน้าต่างถูกเลื่อนเพื่อใส่ข้อผิดพลาดปัจจุบันที่ด้านบน นั่นคือความเป็นไปได้อีกอย่างหนึ่ง (เป็นพฤติกรรมที่ฉันเห็นในการตั้งค่าของฉันเนื่องจากฉันไม่ได้แสดงขอบ)
มีข้อผิดพลาดในพฤติกรรมนี้ซึ่งฉันเพิ่งรายงาน ( # 20829 ) สิ่งที่นับ (ปัจจุบันจนกระทั่งข้อผิดพลาดได้รับการแก้ไข) คือขอบด้านซ้ายแสดงในหน้าต่างที่เลือกเมื่อคุณทำC-x `
( next-error
) ไม่เพียงพอที่หน้าต่างที่แสดงบัฟเฟอร์การคอมไพล์ไม่แสดงขอบด้านซ้าย