बुराई मोड में पूर्व-पेड़ का उपयोग करना संभव नहीं है?


12

हर बार अक्सर मैं पूर्व-पेड़ में कीड़े में चला जाता हूं, जहां मैं निम्न ज्ञात बग के साथ फिर से नहीं कर सकता , एक अन्य रिपोर्ट और रेडिट थ्रेड

primitive-undo: Unrecognized entry in undo list undo-tree-canary

यह वास्तव में खराब है और यदि आप फ़ाइल के नवीनतम संस्करण को सहेजने के लिए नहीं हुए हैं तो काम का नुकसान हो सकता है।


चूँकि मैं कभी भी पेड़ की कार्यप्रणाली में ब्रांचिंग का उपयोग नहीं करता हूँ, तो क्या बुराई मोड के साथ emacs रैखिक पूर्ववत उपयोग करना संभव है?


ध्यान दें: मैंने (global-undo-tree-mode -1)सीधे सेटिंग की कोशिश की है (evil-mode 1)जिसके बाद पूर्ववत पेड़ को निष्क्रिय कर देता है, लेकिन ऐसा करने के बाद redo (Ctrl-R) काम नहीं करता है।


2
Emacs का कोई 'redo' कमांड नहीं है (आप इसके बजाय पूर्ववत अनुक्रम को बाधित करते हैं, और फिर पूर्ववत अनुक्रम के पूर्ववर्ती क्रम को पूर्ववत करें)। ऐसा लगता है कि आपने जो किया है वह सही तरीके से काम किया है।
फिल्स

1
यदि आपका लक्ष्य पूर्ववत पेड़ को ठीक करना है, तो कृपया इसके लेखक से संपर्क करें और उन्हें एक ईमेल लिखें। Emacs-devel पर शिकायत करने से चीजें ठीक नहीं होंगी। इसी तरह, यदि आपका लक्ष्य ईविल को वेनिला पूर्ववत उपयोग करने की अनुमति देना है, तो इसके बग ट्रैकर पर एक टिकट खोलें। ध्यान रखें कि हालांकि वेनिला पूर्ववत ही पूर्ववत है, फिर भी कोई पूर्ववत नहीं है, केवल पूर्ववत करना पूर्ववत है, इसलिए पहले स्थान पर पूर्ववत वृक्ष का उपयोग क्यों किया जाता है।
वामासा

1
मेरा लक्ष्य पूर्ववत / फिर से काम करना है। मैं नहीं हूँ कि कैसे वास्तव में उपद्रव। चूँकि मैंने पूर्ववत वृक्ष की वृक्ष की कार्यक्षमता का उपयोग नहीं किया है इसलिए मुझे लगा कि इसे पूर्ववत इन-एमको उपयोग करना सबसे सरल हो सकता है। फिर भी, मैंने पूर्ववत लेखक को बग की सूचना दी है।
ideasman42

मेरे पास एक ही मुद्दा है, यह लगभग एक बार दैनिक होता है और बहुत निराशा होती है
cjohansson

जवाबों:


7

undo-tree.elटॉबी क्यूबिट के लेखक , वर्तमान में इस विशेष बग को ठीक करने के लिए बहुत व्यस्त हैं। यदि भविष्य में उसके पास समय है, तो वह आगे के मुद्दे पर गौर कर सकता है। लेखक ने संकेत दिया है कि उसे त्रुटि को विश्वसनीय ढंग से पुन: प्रस्तुत करने में कठिनाई है, और हाल ही में मास्टर शाखा का उपयोग करके इसे पुन: पेश करने में असमर्थ था। यह केवल तब होता है जब पूर्ववत / फिर से क्षेत्र का उपयोग किया जाता है। लेखक ने सुझाव दिया है कि इस बीच में पूर्ववत करें / फिर से इन-फ़ीचर सुविधा को बंद कर दें।

मैं उस व्यक्ति को दृढ़ता से प्रोत्साहित करूंगा, जो emacs -qएमएसीएस की वर्तमान स्थिर रिलीज (जैसे, 25.2.1) और मास्टर शाखा के सबसे हाल के संस्करण के साथ दोनों का उपयोग करने से शुरू होने वाले मुद्दे को पुन: पेश करने के लिए एक विश्वसनीय तरीके से आने के लिए प्रेरित है। प्रतिभागियों के लिए कार्बन प्रतियों के साथ बग ट्रैकिंग नंबर 16377 पर प्राप्तकर्ताओं को भेजें (स्टीफन, टोबी, बैरी और कीथ)।

मुख्य ट्रैकिंग नंबर 16377 है, और संबंधित ट्रैकिंग नंबर 16523 है:

https://debbugs.gnu.org/cgi/bugreport.cgi?bug=16377

https://debbugs.gnu.org/cgi/bugreport.cgi?bug=16523

यहां वह undo/redo-in-regionसुविधा है जो सुविधा को बंद कर देती है:

(setq undo-tree-enable-undo-in-region nil)

1
यह वर्कअराउंड काम नहीं करता है - मैंने इसे आज़माया और अभी भी कभी-कभी टूटा हुआ मिलता है।
ideasman42

@ ideasman42 - जहाँ तक मुझे पता है, टोबी क्यूबिट वर्तमान में इस बात से अनभिज्ञ है कि त्रुटि कब हो सकती undo-tree-enable-undo-in-regionहै nil; और, मैंने यह भी कभी नहीं देखा है कि यह पूर्ववत क्षेत्र का उपयोग करने से बाहर है। यदि आप त्रुटि को पुन: उत्पन्न करने के लिए एक नुस्खा के साथ आने में सक्षम हैं, तो कृपया इसे Emacs टीम को रिपोर्ट करें - डॉ। क्यूबिट को एक कार्बन कॉपी भी उपयोगी होगी, और अगर यह बहुत परेशानी नहीं है, तो मुझे यकीन है कि सराहना होगी नुस्खा यदि आप एक के साथ आने में सक्षम हैं जो विश्वसनीय है। क्षमा करें कि आपके पास समस्याएँ हैं ...
कानून

मैंने बिना किसी प्रतिक्रिया (कुछ महीने पहले) के साथ एक बग रिपोर्ट मेल की। इस तरह की परियोजनाएं जो कई लोगों पर निर्भर करती हैं, उनके पास वास्तव में एक सार्वजनिक बग ट्रैकर होना चाहिए।
ideasman42

16377 और 16523 वास्तव में सार्वजनिक Emacs बग ट्रैकिंग नंबर हैं और undo-treeआधिकारिक तौर पर elpaरिपॉजिटरी का एक हिस्सा है। आप मानक रिपोर्ट Emacs बग का उपयोग कर सकते हैं; हालाँकि, अंतिम परिणाम समान हो सकता है - यानी, डॉ। क्यूबिट को अपने व्यस्त कार्यक्रम में कुछ खाली समय मिलने की प्रतीक्षा में ... कुछ बिंदु पर, एक अन्य पूर्ववत गुरु साथ आ सकते हैं और पैकेज को बनाए रखने में सहायता कर सकते हैं। मैंने पूर्व-वृक्ष के एक कस्टम कांटे को बनाने में बहुत समय बिताया है जो अर्ध-रैखिक फैशन में पूर्ववत / फिर से कर सकता है, और मुझे अभी भी केवल एक बुनियादी समझ है कि यह कैसे काम करता है ...
कानूनसूची

1

जाहिर तौर पर आप ~ / .emacs.d / elpa / बुराई- xxxxxxx / dir में बुराई-pkg.el को संपादित कर सकते हैं और आवश्यकता के अनुसार पूर्व-पेड़ को हटा सकते हैं:

(define-package "evil" "20140109.605" "Extensible Vi layer for Emacs." '((goto-chg "1.6")))

स्रोत


यह पूर्ववत / फिर से टूट जाएगा जो ओपी नहीं चाहता है।
थामासा

1
मेरे द्वारा जोड़े गए ब्लॉग के लेखक ने कहा कि इससे उन्हें एमएसीएस वेनिला का उपयोग करने की अनुमति मिली, ऐसा लगता है कि ओपी चाहता था जब उसने कहा कि "पूर्ववत करें पेड़ को अक्षम करें"।
डेफ्थवॉली

1
यह वास्तव में एक अंतिम उपाय होना चाहिए, क्योंकि अगली बार जब आप पैकेज अपडेट करते हैं, तो यह अनुकूलन ओवरराइट हो जाएगा। अपनी इनिट फ़ाइल को कॉन्फ़िगर करके आप जो व्यवहार चाहते हैं उसे प्राप्त करने का एक तरीका खोजना बेहतर होगा।
जॉक

मैं सहमत हूँ, दुर्भाग्य से यह बुराई में पूर्ववत पेड़ को निष्क्रिय करने का एकमात्र तरीका है।
डफवूली जूल

मेरे लिए काम नहीं करता है। मैंने आवश्यकता पर टिप्पणी की, और undo-treeपैकेज को इस तरह से स्थानांतरित किया ताकि यह लोड न हो। अब "redo" का उपयोग करने में विफल रहता है Wrong type argument: commandp, redo
हाय-एंजेल

1

संपादित करें, यह अब एक ऐसा पैकेज है जिसका उपयोग पूर्ववत / फिर से बुराई-मोड के साथ-पूर्व -फू के लिए किया जा सकता है ।


पिछले कुछ समय से मैं दुष्ट w / o पूर्ववत् वृक्ष का उपयोग कर रहा हूं, इसलिए स्वयं के प्रश्न का उत्तर जोड़ना।

यह पूर्ववत / फिर से करने के लिए आश्चर्यजनक रूप से अच्छी तरह से काम करता है जो इमैक को पूर्ववत करता है जैसे बिना कुछ भारी undo-treeया redo+

(global-undo-tree-mode -1)

(defun simple-redo ()
  (interactive)
  (let
    (
      (last-command
        (cond
          ;; Break undo chain, avoid having to press Ctrl-G.
          ((string= last-command 'simple-undo) 'ignore)
          ;; Emacs undo uses this to detect successive undo calls.
          ((string= last-command 'simple-redo) 'undo)
          (t last-command))))
    (condition-case err
      (progn
        (undo) t)
      (user-error
        (message "%s" (error-message-string err)))))
  (setq this-command 'simple-redo))

(defun simple-undo ()
  (interactive)
  (let
    (
      (last-command
        (cond
          ;; Emacs undo uses this to detect successive undo calls.
          ((string= last-command 'simple-undo) 'undo)
          ((string= last-command 'simple-redo) 'undo)
          (t last-command))))
    (condition-case err
      (progn
        (undo-only) t)
      (user-error
        (message "%s" (error-message-string err)))))
  (setq this-command 'simple-undo))
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.