<Double-mouse-1> के लिए चयनित शब्द / प्रतीक फ़ंक्शन क्या है


11

मुझे उस बिंदु पर शब्द / प्रतीक का चयन करने की क्षमता पसंद है जो मैं वर्तमान में डबल माउस क्लिक के साथ करता हूं। मैं इसे कीबोर्ड से करने में सक्षम होना चाहता हूं, और इसलिए मैं इसे एक कीस्ट्रोक (या शायद यह पहले से ही है) से बांधना चाहता हूं, इसलिए मुझे फ़ंक्शन का नाम चाहिए। मुझे लगता है कि फ़ंक्शन पहले से मौजूद होना चाहिए, लेकिन मैं यह पता नहीं लगा सकता कि यह नाम क्या है।

मैंने कोशिश की C-h kलेकिन तब जब मैं माउस को <down-mouse-1>शो के लिए मदद पर डबल क्लिक करता हूं (मुझे लगता है कि हेल्प सिस्टम दूसरे क्लिक या कुछ के लिए इंतजार नहीं करता है)। मैंने उस दस्तावेज़ को भी खोजा जहां यह कार्यक्षमता धारा 21.2 में परिभाषित की गई है, लेकिन यह फ़ंक्शन का नाम नहीं बताता है।

अपडेट: ठेठ की बाइंडिंग के लिए मैं इसे बराबर करने के लिए है लगता है <C-left>इसके बाद से <C-S-right>जो कर रहे हैं left-wordऔर right-wordक्रमश: हालांकि shift कुंजी बाद के लिए आयोजित किया जाता है। (मैं शिफ्ट कुंजी के साथ कीबोर्ड पदनामों के बीच संबंध और कार्यों के लिए उनकी मैपिंग को पूरी तरह से नहीं समझता हूं, इससे पहले कि वह इसे पहचान ले, इसके लिए <C-S-right>अनुवाद में मदद मिलती है )<C-right>right-word


C-h bउस बफ़र के माध्यम से उपयोग करना और खोजना कुछ विशिष्ट घटनाओं के साथ ("mouse.el" से) <double-mouse-1>कॉल दिखाता है mouse-set-point। यकीन नहीं होता कि यह कितना मदद करता है :)
VanLaser

1
सी-राइट और सी-लेफ्ट के गैर-शिफ्ट किए गए संस्करण के बीच संबंध के लिए, यह shift-selection-mode(देखें (info "(emacs) Shift Selection")) का प्रभाव है । इन्हें भी देखें emacs.stackexchange.com/questions/12858/…
यंगफ्रॉग

@YoungFrog उस तरह की पेचीदगी है जो अक्सर मेरी ज्यादातर एमएसीएस प्रोग्रामिंग को कीबोर्ड मैक्रोज़ के रूप में रखती है। <right> <C-left> <C-S-right>उस लिंक के आधार पर एक साधारण केबीडी मैक्रो का मतलब मुझे उस लिंक पर लंबाई में चर्चा किए गए सूक्ष्म मुद्दों को पूरी तरह से संबोधित करने की आवश्यकता नहीं है।
चिप ग्रैंडिट्स

जवाबों:


9

यह वास्तव में थोड़ा जटिल है। जब आप डबल-क्लिक mouse-1करते हैं तो कई कार्य होते हैं। <down-mouse-1>तब होता है, जब आप बटन दबाते हैं। तब mouse-1होता है, जब आप बटन जारी करते हैं।

<down-mouse-1>कमांड के लिए बाध्य है mouse-drag-region, और वह कमांड कॉल करता है mouse-drag-track। वह फ़ंक्शन माउस-बटन क्लिकों को गिनता है और किसी भी माउस मूवमेंट पर नज़र रखता है (यदि आप डबल-क्लिक करते हैं तो इसका मतलब है कि आपने माउस को स्थानांतरित नहीं किया है)।

mouse-drag-trackकॉल फ़ंक्शन mouse-start-end का चयन करने के लिए पाठ की सीमा निर्धारित करने के लिए कार्य करता है। यह mouse-start-endउस स्थिति से गुजरता है जहां आपने क्लिक किया था, पहले दो आर्गन्स और तीसरे आर्ग के रूप में गिनती पर क्लिक करें। यह है mouse-start-end:

mouse-start-end is a compiled Lisp function in `mouse.el'.

(mouse-start-end START END MODE)

Return a list of region bounds based on START and END according to MODE.
If MODE is 0 then set point to (min START END), mark to (max START END).
If MODE is 1 then set point to start of word at (min START END),
mark to end of word at (max START END).
If MODE is 2 then do the same for lines.

तीसरे arg ( MODE) के रूप में पारित किया गया क्लिक-काउंट डबल-क्लिक के लिए 1 है।

आप कीबोर्ड कुंजी अनुक्रम से इस कोड में से कुछ को कॉल नहीं कर पाएंगे, लेकिन कोड की जांच करने से आपको कीबोर्ड की-बाइंड करने योग्य कमांड लिखने में मदद मिल सकती है जो आप चाहते हैं।


माउस घटनाओं के लिए काम क्यों C-h k नहीं करता है, यह समझाने के लिए धन्यवाद । सबसे अच्छा तरीका है मुझे पता लगाने के लिए कि कैसे Emacs "माउस को संभाल रहा है" इसे एक कीबोर्ड मैक्रो के रूप में रिकॉर्ड करना है, इसे नाम दें और फिर insert-kbd-macro आम तौर पर उत्पन्न कोड को देखें मैं एक माउस इवेंट का उपयोग करने की कोशिश नहीं करूंगा मैक्रो, इसलिए ये अस्थायी मैक्रो सिर्फ यह देखने के लिए उपयोगी हैं कि Emacs क्या कर रहा है।
चिप ग्रैंडिट्स

6

@ ड्रू ने माउस क्रियाओं से जुड़ी घटनाओं से जुड़ी कुछ जटिलता को समझाया है। कीबोर्ड का उपयोग करते हुए शब्द को चिह्नित करने के अपने अंतिम लक्ष्य के लिए, आप विस्तार-क्षेत्र में रुचि रख सकते हैं ।

expand-regionआपको सिमेंटिक इकाइयों द्वारा क्षेत्र में हेरफेर करने की अनुमति देता है। उदाहरण के लिए, जब कोई क्षेत्र सक्रिय नहीं है, तो कॉलिंग er/expand-region(आमतौर पर बाध्य C-=) वर्तमान शब्द को चिह्नित करेगा। इसे फिर से कॉल करने से इस क्षेत्र में वर्तमान वाक्य का विस्तार होता है। और फिर पैराग्राफ, अनुभाग आदि। वास्तविक इकाइयाँ आपके द्वारा संचालित मोड पर निर्भर करेंगी, इसलिए लिस्प मोड में वे प्रतीक होंगे, प्रतीक को घेरते हुए, अभिव्यक्ति को अभिव्यक्त करते हुए अभिव्यक्ति आदि।

लिंक किए गए पृष्ठ में आगे स्पष्टीकरण है और यह प्रदर्शित करने वाला एक वीडियो है।


1
हां, मैं मेलपा से पैकेज सूची में विस्तार-क्षेत्र पैकेज देखता हूं। बहुत उपयोगी है, मुझे आश्चर्य है कि यह Emacs में डिफ़ॉल्ट नहीं है या कम से कम CEDET के साथ बंडल है। पारितोषिक के लिए धन्यवाद!
चिप ग्रैंडिट्स

चिप ग्रैंडिट्स: यह लेखक (ओं) पर निर्भर करता है जो उचित कॉपीराइट असाइनमेंट के साथ अपने पैकेज को FSF में जमा करते हैं। यदि लेखक ने इसे जमा नहीं किया है तो यह Emacs का डिफ़ॉल्ट हिस्सा नहीं हो सकता है।
फिल्स

2

यहाँ एक फ़ंक्शन है जिसे मैंने उससे निकाला है mouse-set-regionजब आप डबल क्लिक करते हैं तो वह अंकन करता है:

(defun ora-mark-like-double-mouse-1 ()
  (interactive)
  (let ((bnd (mouse-start-end (point) (point) 1)))
    (goto-char (car bnd))
    (push-mark)
    (set-mark (point))
    (goto-char (cadr bnd))))
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.