หากคุณกำลังเขียน C / C ++ / Java / Emacs Lisp / Python ดังนั้นsemantic-sticky-func-modeจะทำสิ่งที่คุณต้องการ
หมายเหตุ : สิ่งนี้ดูเหมือนว่าจะทำงานกับ CEDET จาก Git ไม่ใช่ CEDET ในปัจจุบันใน Emacs 24.4 วิธีรับ Emacs จาก Git:
git clone http://git.code.sf.net/p/cedet/git cedet
และโหลด CEDET ก่อนเหนือสิ่งอื่นใดในไฟล์ init ของคุณ:
(load-file (concat user-emacs-directory "/cedet/cedet-devel-load.el"))
(add-to-list 'load-path (concat user-emacs-directory "cedet/contrib"))
(load-file (concat user-emacs-directory "cedet/contrib/cedet-contrib-load.el"))
เมื่อเปิดใช้งานโหมดนี้จะแสดงจุดฟังก์ชั่นที่อยู่ในบรรทัดแรกของบัฟเฟอร์ปัจจุบัน สิ่งนี้มีประโยชน์เมื่อคุณมีฟังก์ชั่นที่ยาวมาก ๆ ซึ่งกระจายได้มากกว่าหน้าจอและคุณไม่ต้องเลื่อนขึ้นเพื่ออ่านชื่อฟังก์ชั่นแล้วเลื่อนลงไปที่ตำแหน่งเดิม
มันแสดงฟังก์ชั่นอินเตอร์เฟซเต็มรูปแบบ (ประเภทกลับชื่อฟังก์ชั่นและพารามิเตอร์) ไม่เพียง แต่ชื่อฟังก์ชั่น
หากต้องการเปิดใช้งานให้ใส่รหัสนี้ในไฟล์ init ของคุณ:
(require 'semantic)
(semantic-mode 1)
(global-semantic-stickyfunc-mode 1)
UPDATE : หนึ่งในปัญหาที่เกิดขึ้นในปัจจุบันsemantic-stickyfunc-mode
คือมันไม่ได้แสดงพารามิเตอร์ทั้งหมดที่กระจัดกระจายในหลายบรรทัด เพื่อแก้ปัญหานี้ผมสร้างแพคเกจstickyfunc-เพิ่มประสิทธิภาพ
ตัวอย่าง :
นี่คือตัวอย่างใน C:
นี่คือตัวอย่างใน Emacs Lisp:
UPDATE : หรือคุณสามารถใช้หางเสือความหมายหรือ imenu เมื่อคุณอยู่ในฟังก์ชั่นและเรียกใช้คำสั่งเคอร์เซอร์จะถูกวางไว้ที่ฟังก์ชั่นในรายการดังนั้นคุณจึงสามารถเห็นฟังก์ชั่นอินเทอร์เฟซเต็มรูปแบบได้เสมอ การสาธิต:
ก่อนอื่นฉันใช้helm-semantic-or-imenu
เพื่อย้ายไปยังฟังก์ชั่นhelm-define-key-with-subkeys
และจุดย้ายที่นั่น
จากนั้นฉันจะเริ่มต้นhelm-semantic-or-imenu
อีกครั้งและhelm-define-key-with-subkeys
ถูกเลือกไว้ล่วงหน้า
จากนั้นฉันย้ายจุดไปยังตัวแปร helm-map และดำเนินการhelm-semantic-or-imenu
อีกครั้งในสองฟังก์ชั่น: helm-next-source และ helm-source-source คราวนี้แทนที่จะแสดงแท็กความหมายปัจจุบันที่ฉันใช้งาน (ซึ่งคือแผนที่หางเสือ) มันแสดงแท็กอีกสองแท็กในบัฟเฟอร์ความหมายของ Helm Semantic นี่เป็นเพราะฉันให้อาร์กิวเมนต์คำนำหน้าก่อนที่จะเรียกใช้คำสั่ง
นอกจากนี้การสาธิตนี้อยู่ใน Emacs Lisp ใช้งานได้กับ C / C ++ เช่นกันและมีความยืดหยุ่นมากขึ้นถ้าคุณมีส่วนต่อประสานฟังก์ชันที่ยาวมาก