सभी परियोजना फाइलों पर हेलम झपट्टा (न केवल वर्तमान बफर)


15

इसलिए मैं एक परियोजना में सभी फाइलों को helm-swoopदेखना चाहता हूं , न कि केवल खुले बफ़र्स का वर्तमान सेट।

ऐसा इसलिए है कि मैं किसी परियोजना में सभी घटनाओं को खोजने के लिए झपट्टा का उपयोग कर सकता हूं, प्रासंगिक लोगों को चिह्नित कर सकता हूं, फिर उन्हें संपादित कर सकता हूं (पतवार झपट्टा संपादित मोड में)।

मुझे लगता है कि शायद हेल्म / हेल्म के साथ ऐसा करने का एक अच्छा तरीका है, लेकिन यहाँ एक समाधान के माध्यम से सोचने का मेरा प्रयास है:

  1. प्रोजेक्टाइल से फ़ाइल नाम इकट्ठा करें
  2. फ़ाइल नाम सूची से बफ़र्स की एक सूची बनाएँ
  3. इस नई बफर सूची का उपयोग करने के अलावा हेलम-मल्टी-स्वूप-के रूप में एक ही दिनचर्या करें

(projectile-current-project-files), ऐसा लगता है जैसे यह मुझे वह फ़ाइल सूची देता है जिसकी मुझे तलाश है।

इसलिए helm-multi-swoop-all, ऐसा लगता है कि इसे कॉपी करना और फिर ट्विक करना काफी आसान होगा।

(defun helm-multi-swoop-all (&optional $query)
  (interactive)
  "Apply all buffers to helm-multi-swoop"
  (cond ($query
         (setq helm-multi-swoop-query $query))
        (mark-active
         (let (($st (buffer-substring-no-properties
                     (region-beginning) (region-end))))
           (if (string-match "\n" $st)
               (message "Multi line region is not allowed")
             (setq helm-multi-swoop-query
                   (helm-swoop-pre-input-optimize $st)))))
        ((setq helm-multi-swoop-query
               (helm-swoop-pre-input-optimize
                (funcall helm-swoop-pre-input-function))))
        (t (setq helm-multi-swoop-query "")))
  (helm-multi-swoop--exec nil
                          :$query helm-multi-swoop-query
                          :$buflist (helm-multi-swoop--get-buffer-list)))

बस उस कॉल को प्रतिस्थापित करें helm-multi-swoop--get-buffer-list, जिसमें प्रोजेक्टाइल सूची का उपयोग करके बफ़र्स की सूची दी गई हो।

लेकिन अब मैं थोड़ा फंस गया हूं। मुझे यकीन नहीं है कि फ़ाइल नाम के एक सेट से हेल्म-स्वूप में खिलाने के लिए बफ़र्स की सूची कैसे बनाई जाए।

मैं भी मदद नहीं कर सकता, लेकिन लगता है कि इसे प्राप्त करने का एक सरल तरीका है, शायद कस्टम कार्यों के बिना।


1
यह संभावित समस्याग्रस्त है। मान लीजिए आप "एबीसी" के लिए एक बड़ी परियोजना को झपटना चाहते हैं। क्या आप अपने द्वारा देखी गई हर एक फ़ाइल के लिए एक फ़ाइल बफर खोलना चाहते हैं? आप अच्छी तरह से दस या बीस अतिरिक्त बफ़र्स के साथ समाप्त हो सकते हैं जो आप नहीं चाहते हैं। मैं helm-projectile-ackइसके बजाय उपयोग करने का सुझाव दूंगा।
PythonNut

2
हाँ, मैं एक बड़ी परियोजना के लिए इसका उपयोग करने की कल्पना नहीं कर रहा था। मैं इस रूटीन के साथ समाप्त होने पर खोले गए फ़ाइल बफ़र्स को बंद करने की उम्मीद कर रहा था।
माइक मैकफारलैंड

इसके अलावा, हेल्म-प्रोजेक्टाइल-एक (या एजी) लगभग वही है जो मैं देख रहा हूं, इसके अलावा मैं लाइनों को संपादित करने में सक्षम होना चाहता हूं (जैसे हेल्म स्वीप की अनुमति देता है)
माइक मैकफारलैंड

मैं वास्तव में उपयोग नहीं करते helm-swoop। करता है helm-projectile-grepऔर फिर F3 M-x wgrep-modeइसे "संपादन योग्य" बनाता है?
PythonNut

धन्यवाद, मुझे wgrep-mode के बारे में पता नहीं था। हेल्म-प्रोजेक्टाइल-जीआरईपी मेरे लिए उपेक्षित फाइलों को उठा रहा है, लेकिन हेल्म-प्रोजेक्टाइल-एकेक wgrep के साथ अच्छी तरह से काम कर रहा है। कम से कम इसका काम मेलजोल से आए wgrep को अनइंस्टॉल करने के बाद, और इसके बजाय यहां एक का उपयोग करना है।
माइक मैकरलैंड

जवाबों:


7

PythonNut की दिलचस्प टिप्पणियों के बाद, मैंने स्थापित किया helm-ag, और प्रक्षेप्य पैकेज के माध्यम helm-projectile-agसे भाग गया । मैंने तब संपादन मोड पर स्विच किया । मैंने कुछ पंक्तियों को बदल दिया और फिर दबाया और इन्हें संबंधित फाइलों में सहेजा गया।C-c p s sC-c C-eC-c C-c

यह काम करता है, लेकिन वर्तमान में एक अवहेलना यह है कि यह "मिलान की गई" फ़ाइलों में से प्रत्येक को कई बार बचाता है, भले ही कोई परिवर्तन हुआ हो या नहीं। मैंने इसे प्रोजेक्टाइल # 756 के रूप में उठाया ।

इसके अलावा मुझे लगता है कि यह सवाल में वर्णित आवश्यकता के लिए अच्छी तरह से काम करेगा, और "बिना कस्टम कार्यों के" :-)


यह वास्तव में है क्या मैं पर बस गया है। एकमात्र समस्या यह है कि कभी-कभी git / प्रोजेक्टाइल द्वारा अनदेखा की गई फ़ाइलों को खोज परिणामों में अनदेखा नहीं किया जाता है। इसमें खुदाई करने का समय नहीं था।
माइक मैकफारलैंड

सुझाव: helm-git-grepतेजी से होना चाहिएhelm-projectile-ag
PlagueHammer

यह तेज क्यों होना चाहिए?
रिचीएच
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.