2012-12-03 19 views
6

पर चल रहा है जिस तरह से और वर्तमान विकास संस्करण पर बहुत आशाजनक है: मेरे मामले में https://github.com/textmate/textmate/blob/master/README.mdमैं कैसे आर TextMate2 में चयनित पाठ (या एक लाइन) भेज सकते हैं आप TextMate का संस्करण 2 जानते हैं टर्मिनल

मैं टर्मिनल (मैकॉक्स माउंटेन शेर) में आर का उपयोग कर रहा हूं और मैं टेक्स्टमैट 2 के साथ अपना कोड विकसित करता हूं। TextMate के पिछले संस्करण के साथ (1.5.11) मैं निम्नलिखित चाल का इस्तेमाल किया मेरी टर्मिनल विंडो के लिए चयनित पाठ या लाइनों को भेजने के लिए:

-> देखें How can I send selected text (or a line) in TextMate to R running on Terminal

यह चाल मेरे लिए पूरी तरह से काम किया है, लेकिन मैं समझ नहीं TextMate2 के साथ समान व्यवहार कैसे प्राप्त करें।

कोई विचार? आपकी बहुमूल्य मदद के लिए मैं आपको अग्रिम धन्यवाद देता हूं।

उत्तर

1

एक अप्रत्यक्ष उत्तर का थोड़ा सा: मैं टेक्स्टमेट 2 में आर बंडल का उपयोग करता हूं (जो टेक्स्टमेट 1 में भी काम करता है)। बस उन लाइनों का चयन करें जिन्हें आप चलाना चाहते हैं और "चयन/आर ऐप भेजें" (मैंने इसे कमांड-आर से बांध दिया है, लेकिन मुझे यकीन नहीं है कि यह मूल बाध्यकारी है)

पहली बार यह आर ऐप खोलता है और कोड निष्पादित करें। बाद के समय यह सिर्फ कोड चिपकाता है और इसे चलाता है।

यह बिल्कुल "टर्मिनल को भेजें" है, लेकिन अभी भी

+0

धन्यवाद, लेकिन मुझे वास्तव में मैकॉक्स टर्मिनल के साथ सीधे काम करना पसंद है – bhaibeka

2

असल में पिछले एक जवाब (How can I send selected text (or a line) in TextMate to R running on Terminal), मैं निम्नलिखित कोड का उपयोग कर TextMate 2 में अपने खुद के बंडल बनाया के आधार पर काम करता है:

#!/bin/bash 

source "$TM_SUPPORT_PATH/lib/bash_init.sh" # might not be necessary 

# input is selection or document 
rawText="$(cat | sed 's///g;')" 

osascript -e 'on run(theCode)' \ 
      -e ' tell application "Terminal"' \ 
      -e ' do script theCode in window 1' \ 
      -e ' end tell' \ 
      -e 'end run' -- "$rawText" 

open "txmt://open?line=$(($TM_LINE_NUMBER+1))&column=1000000" & 

देखें नीचे स्क्रीनशॉट।

code and options for the new bundle एकमात्र समस्या यह है कि जब आप टेक्स्ट का एक हिस्सा चुनते हैं, तो कर्सर दस्तावेज़ की पहली पंक्ति पर कूद रहा है, जो एक बहुत ही परेशान व्यवहार है। चुनाव 'हिरण समस्या का समाधान नहीं' को 'रेखा' से इनपुट " 'बदल रहा है।

किसी भी विचार?

0

मैं इसे bhaibeka के जवाब पर कुछ परिवर्तन के साथ काम मिला है। जाहिर है $ TM_LINE_NUMBER खाली है और कि बनाता है कर्सर दस्तावेज़ की पहली पंक्ति के लिए कूद। तक अंतिम पंक्ति से छुटकारा पाने के लिए, यह समस्या का एक हिस्सा हल करती है।

#!/bin/bash 
[[ -f "${TM_SUPPORT_PATH}/lib/bash_init.sh" ]] && . "${TM_SUPPORT_PATH}/lib/bash_init.sh" 
rawText="`cat`" 

osascript -e 'on run(theCode)' \ 
     -e ' tell application "Terminal"' \ 
     -e ' do script theCode in window 1' \ 
     -e ' end tell' \ 
     -e 'end run' -- "$rawText" > /dev/null 

अन्य समस्या चयन के अंत में कर्सर ले जाने के लिए कैसे है। मैंने बनाया यह चयन के अंत में 'खाली' आउटपुट डालने से काम करता है (दाएं पैनल पर: आउटपुट: "इनपुट के बाद सम्मिलित करें" और प्रारूप: "टेक्स्ट")। शायद यह नहीं है ऐसा करने का सबसे शानदार तरीका है लेकिन यह काम करता है।

2

यह मेरे लिए काम करता है, और यह चयन के अंत में सही ढंग से जाता है। मैंने पिछले जवाब में ओस्क्रिप्ट लिपिक जोड़ा है, और इसे हंस-जोर्ग बिबिको द्वारा लिखे गए मूल आर बंडल में कोड में डाल दिया है। "scope selector" को "source.r" और "output" से "त्यागें" पर सेट करें। "इनपुट" को "लाइन" पर सेट करें और यह मेरी ज़रूरत है: यदि कुछ भी नहीं चुना गया है तो लाइन भेजें, और अन्यथा चयन भेजें।

संपादित करें: यह चयन के साथ पूरी तरह से काम करता है, लेकिन लाइन के साथ नहीं। जब आप टेक्स्ट का चयन नहीं करते हैं तो यह फ़ाइल

संपादन 2 के शीर्ष से सबकुछ फिर से चलाता है: हल किया गया, मैंने हंस-जोर्ग बिबिको को लिखा और उसने मुझे "इनपुट" चयन की ओर इशारा किया।

#!/usr/bin/env bash 

# input is selection or document 
rawText="$(cat | sed 's///g;')" 

curDir='' 
if [[ ${#TM_DIRECTORY} -gt 0 ]]; then 
    curDir="$TM_DIRECTORY" 
fi 

osascript -e 'on run(theCode)' \ 
      -e ' tell application "Terminal"' \ 
      -e ' do script theCode in window 1' \ 
      -e ' end tell' \ 
      -e 'end run' -- "$rawText" 

if [ "$TM_LINE_NUMBER" != "" ]; then 
    "$TM_MATE" -l "$(($TM_LINE_NUMBER+1)):1000000" 
elif [[ $TM_SELECTION =~ [1-9][0-9]*:?[0-9]*-([1-9][0-9]*):?[0-9]* ]]; then 
    # Regular Selection 
    "$TM_MATE" -l "$((${BASH_REMATCH[1]}+1)):1000000" 
elif [[ $TM_SELECTION =~ [1-9][0-9]*:?[0-9]*x([1-9][0-9]*):?[0-9]* ]]; then 
    # Block (option) selection 
    "$TM_MATE" -l "$((${BASH_REMATCH[1]}+1)):1000000" 
else 
    "$TM_MATE" 
fi