next-error
संकलन-त्रुटियों को बफर स्क्रॉल नहीं करता है , ताकि वर्तमान त्रुटि विंडो की पहली पंक्ति के रूप में दिखे?
यदि नहीं, तो क्या यह कम से कम कर्सर को वर्तमान त्रुटि लाइन पर नहीं डालता है? यदि ऐसा होता है, और यदि कर्सर आपके लिए पर्याप्त दिखाई नहीं देता है, तो hl-line-mode
वर्तमान लाइन को हाइलाइट करने के लिए उपयोग करने पर विचार करें । या crosshairs
वर्तमान लाइन और वर्तमान कॉलम को उजागर करने के लिए पुस्तकालय का उपयोग करने पर विचार करें।
अपनी टिप्पणी के बाद अपडेट करें
मुझे लगा कि आप next-error
बफर में निवेश कर रहे हैं *compilation*
। यदि आप ऐसा करते हैं तो लाइन ऊपर की ओर स्क्रॉल की जाती है, जैसा कि मैंने वर्णित किया है।
लेकिन यदि आप next-error
बफर के बाहर निवेश कर रहे हैं *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
हैं ( पूर्वनिर्धारित लोगों की सूची के लिए फ्रिंज बिटमैप देखें - इसके बजाय - जो भी फ्रिंज बिटमैप चाहते हैं, उसका उपयोग करें):
(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
) चयनित विंडो में दिखाई दे रही है । यह (वर्तमान में) पर्याप्त नहीं है कि संकलन बफ़र को दिखाने वाली विंडो बाईं फ्रिंज नहीं दिखाती है।