Emacs हर OS क्लिपबोर्ड के साथ ईविल्स विज़ुअल मोड में पेस्ट नहीं करता है


19

सेट अप:

EmacsW64 से संकलित KAEL पर 2015-07-25 का GUI संस्करण GNU Emacs 25.0.50.1 (x86_64-w64-mingw32)

पैकेज ईविल, एमईएलपीए से ईविल के नवीनतम संस्करण का उपयोग कर रहा है

विंडोज 7 x64 बिट।

परिस्थिति:

केवल ईविल सक्षम के साथ खाली एमएसीएस कॉन्फ़िगरेशन के साथ परीक्षण किया गया। मैं विंडोज एप्लिकेशन से कुछ पाठ कॉपी करता हूं। फिर मैंने इसे Emacs के normal modeसाथ अंदर पेस्ट किया p। मैं पाठ देखता हूं।

फिर मैं विंडोज एप्लिकेशन पर स्विच करता हूं, एक अन्य टेक्स्ट का चयन करता हूं, इसे कॉपी करता हूं। Emacs पर वापस लौटें, नेत्रहीन पाठ का चयन करें, और अंदर पेस्ट करें visual mode। लेकिन क्षेत्र के अंदर के पाठ को विंडोज क्लिपबोर्ड से पाठ के साथ प्रतिस्थापित नहीं किया जाएगा।

यह डिफ़ॉल्ट विम के साथ नहीं है। मैं इसे कैसे कॉन्फ़िगर कर सकता हूं, कि नेत्रहीन पाठ को नवीनतम कॉपी एक्शन द्वारा बदल दिया जाता है, इस मामले में विंडोज क्लिपबोर्ड?



1
मुझे दोनों विषयों की जानकारी है, लेकिन मुझे लगता है कि यह क्लिपबोर्ड से अधिक ईविल से संबंधित है। क्लिपबोर्ड फ़ंक्शन सामान्य मोड के अंदर ठीक काम करता है। और विजुअल मोड के लिए नहीं।
रेनेफ्रॉगर

आह, मैं देख रहा हूँ कि तुम क्या कह रहे हो। जो इसके लायक है, वह विंडोज-विशिष्ट नहीं है: यह लिनक्स पर दृश्य स्थिति में ओएस क्लिपबोर्ड से भी नहीं निकलता है (फेडोरा, अगर यह मायने रखता है)।
दान

अद्यतन के लिए धन्यवाद, मैंने ओएस-विशिष्ट नहीं होने के लिए शीर्षक बदल दिया।
रेनेफ्रॉगर

क्या यह सिर्फ एक सादा ईविल बग है? किसी भी मौका आप इसे रिपोर्ट कर सकते हैं?
PythonNut

जवाबों:


28

यहां कोई बग नहीं है। चूँकि मैं भी इस व्यवहार से नाराज था, मैंने सिर्फ यह जानने के लिए ईविल कोड पढ़ा कि ऐसा क्यों हो रहा है। तो, यहाँ मेरे Emacs कॉन्फ़िगरेशन से अच्छी तरह से टिप्पणी की गई एक-लाइनर की एक सीधी प्रति / पेस्ट है जो इस समस्या को हल करता है:

;; Imagine the following scenario.  One wants to paste some previously copied
;; (from application other than Emacs) text to the system's clipboard in place
;; of some contiguous block of text in a buffer.  Hence, one switches to
;; `evil-visual-state' and selects the corresponding block of text to be
;; replaced.  However, one either pastes some (previously killed) text from
;; `kill-ring' or (if `kill-ring' is empty) receives the error: "Kill ring is
;; empty"; see `evil-visual-paste' and `current-kill' respectively.  The
;; reason why `current-kill' does not return the desired text from the
;; system's clipboard is because `evil-visual-update-x-selection' is being run
;; by `evil-visual-pre-command' before `evil-visual-paste'.  That is
;; `x-select-text' is being run (by `evil-visual-update-x-selection') before
;; `evil-visual-paste'.  As a result, `x-select-text' copies the selected
;; block of text to the system's clipboard as long as
;; `x-select-enable-clipboard' is non-nil (and in this scenario we assume that
;; it is).  According to the documentation of `interprogram-paste-function',
;; it should not return the text from the system's clipboard if it was last
;; provided by Emacs (e.g. with `x-select-text').  Thus, one ends up with the
;; problem described above.  To solve it, simply make
;; `evil-visual-update-x-selection' do nothing:
;; (fset 'evil-visual-update-x-selection 'ignore)

अंतिम वाक्य इस प्रश्न का उत्तर है कि " इसे कैसे कॉन्फ़िगर किया जाए, कि नेत्रहीन पाठ को नवीनतम कॉपी एक्शन द्वारा बदल दिया जाए, इस मामले में विंडोज क्लिपबोर्ड? "

(fset 'evil-visual-update-x-selection 'ignore)

का आनंद लें।


धन्यवाद अलेक्जेंडर, मैंने आपके संकलित हररोगन के Emacs का भी आनंद लिया। अच्छा लगा, मैंने आपके उत्तर को सही के रूप में चिह्नित किया। जैसा कि लगता है, मैं केवल इसे बढ़ा सकता हूं और इसे बिना किसी इनाम के सही मान सकता हूं। जो दुख की बात है, आप वास्तव में इसके हकदार हैं। :-)
रेनेफ्रॉगर

1
यार यह बग! इसने मुझे इस हद तक नाराज कर दिया कि मैं इस व्यवहार से छुटकारा पाने के लिए वापस विम पर लौट आया। मैंने हर जगह खोजा और दुष्ट ट्रैकर को भी सूचना दी लेकिन दुख की बात है कि किसी ने भी मेरे मुद्दे का जवाब नहीं दिया। सिकंदर, तुम मेरे हीरो हो!
डीवीक्रॉन

1
अच्छा! यह स्पेसकम में डिफ़ॉल्ट होना चाहिए।
justingordon

यह डर लगता है कि यह व्यवहार डिफ़ॉल्ट रूप से कैसा है। मुझे यह महसूस करने में थोड़ा समय लगा कि क्या हो रहा है, और यह तथ्य कि चर सेट करने के माध्यम से इसे अक्षम करने का कोई तरीका नहीं है। यह समाधान अच्छी तरह से काम करता है :)
जोर्ज इज़राइल Peña
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.