Skip to content

Commit

Permalink
Add bundle from Hans-Jörg Bibiko.
Browse files Browse the repository at this point in the history
git-svn-id: http://svn.textmate.org/trunk/Review/Bundles/R Console (R_app).tmbundle@9103 dfb7d73b-c2ec-0310-8fea-fb051d288c6d
  • Loading branch information
infininight committed Mar 14, 2008
0 parents commit 16fda51
Show file tree
Hide file tree
Showing 13 changed files with 562 additions and 0 deletions.
29 changes: 29 additions & 0 deletions Commands/Copy Commands into Clipboard.tmCommand
@@ -0,0 +1,29 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>beforeRunningCommand</key>
<string>nop</string>
<key>command</key>
<string>ruby -e '
require ENV["TM_BUNDLE_SUPPORT"] + "/lib/historyList.rb"
print HistoryList.new(STDIN.read + "\n&gt; ").list.join("\n")
' | pbcopy
echo "Commands from selection/document placed into pasteboard"</string>
<key>fallbackInput</key>
<string>document</string>
<key>input</key>
<string>selection</string>
<key>keyEquivalent</key>
<string>@C</string>
<key>name</key>
<string>Copy Commands into Clipboard</string>
<key>output</key>
<string>showAsTooltip</string>
<key>scope</key>
<string>source.rapp-console</string>
<key>uuid</key>
<string>48E1CB3A-8349-46E4-86B0-671663712005</string>
</dict>
</plist>
39 changes: 39 additions & 0 deletions Commands/Execute Line : Selection.tmCommand
@@ -0,0 +1,39 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>beforeRunningCommand</key>
<string>nop</string>
<key>command</key>
<string>echo
test=`tail -c+2`
osascript &lt;&lt;-APPLESCRIPT | tail -n +2 | perl -pe 'BEGIN {$/=undef} s/\n\z//'
tell application "System Events"
-- Get a reference to the text field
set text_area to (process "R")'s (window "R Console")'s (scroll area 1)'s text area 1
-- Get text before and after our command
set oldtext to text_area's value
tell application "R" to cmd "${test//\"/\"}"
set newtext to text_area's value
-- Find the difference between old and new
text from (oldtext's length + 1) to -1 of newtext
end tell
APPLESCRIPT</string>
<key>fallbackInput</key>
<string>line</string>
<key>input</key>
<string>selection</string>
<key>keyEquivalent</key>
<string></string>
<key>name</key>
<string>Execute Line / Selection</string>
<key>output</key>
<string>afterSelectedText</string>
<key>scope</key>
<string>source.rapp-console</string>
<key>uuid</key>
<string>7AF6ADAA-E6F0-4B9D-B146-A62BDE600D74</string>
</dict>
</plist>
Expand Down
75 changes: 75 additions & 0 deletions Commands/Help.tmCommand
@@ -0,0 +1,75 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>beforeRunningCommand</key>
<string>nop</string>
<key>command</key>
<string>. "$TM_SUPPORT_PATH/lib/webpreview.sh"
html_header "R Console (R.app) Bundle Help" "R"
"$TM_SUPPORT_PATH/lib/markdown_to_help.rb" &lt;&lt;'MARKDOWN'
# Introduction
The "R Console (R.app)" bundle provides some commands to remote the Mac OSX GUI R.app using AppleScript.
# Commands
- __Send Selection / Document to R.app__
Executes the current document or selection in R.app and switches to R.app's Console.
- __Show Line Output as Tool Tip__
Executes the current line or selection in R.app and shows only the result as tooltip.
- __Execute Line / Selection__
Executes the current line or selection in R.app and inserts the result into the current document.
- __Copy Commands into Clipboard__
Parses the current document or selection for lines beginning with "&gt; " and pastes all found commands into the clipboard.
- __Show History List__
Shows as inline menu all commands entered in the current document.
- __Next/Previous History Item__
Inserts the next/previous command found in the current document.
***Notes***
&lt;blockquote&gt;
All commands specified within the "R" bundle can be used.
&lt;/blockquote&gt;
&lt;blockquote&gt;
If the "Rdaemon" also runs in the background and the library "CarbonEL" is loaded the communication between TextMate and R.app wont't work.
&lt;/blockquote&gt;
# Main Bundle Maintainer
***Date: Jan 09 2008***
&lt;pre&gt;
- Charilaos Skiadas&amp;nbsp;&lt;a href="mailto:cskiadas@gmail.com"&gt;cskiadas@gmail.com&lt;/a&gt;
- Hans-Jörg Bibiko&amp;nbsp;&amp;nbsp;&lt;a href="mailto:bibiko@eva.mpg.de"&gt;bibiko@eva.mpg.de&lt;/a&gt;
&lt;/pre&gt;
MARKDOWN
html_footer</string>
<key>input</key>
<string>none</string>
<key>keyEquivalent</key>
<string></string>
<key>name</key>
<string>Help</string>
<key>output</key>
<string>showAsHTML</string>
<key>scope</key>
<string>source.rapp-console</string>
<key>uuid</key>
<string>CAEB703B-1D79-4D3A-90BB-2A2C2BD846F7</string>
</dict>
</plist>
31 changes: 31 additions & 0 deletions Commands/Next History Item.tmCommand
@@ -0,0 +1,31 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>beforeRunningCommand</key>
<string>nop</string>
<key>command</key>
<string>#!/usr/bin/ruby
require ENV['TM_BUNDLE_SUPPORT'] + "/lib/historyList.rb"
require ENV['TM_SUPPORT_PATH'] + "/lib/exit_codes.rb"
require ENV['TM_SUPPORT_PATH'] + "/lib/escape.rb"
doc = STDIN.read
new_doc = HistoryList.move_down(doc)
TextMate.exit_discard if new_doc == doc
print e_sn(new_doc)</string>
<key>fallbackInput</key>
<string>document</string>
<key>input</key>
<string>selection</string>
<key>keyEquivalent</key>
<string></string>
<key>name</key>
<string>Next History Item</string>
<key>output</key>
<string>insertAsSnippet</string>
<key>scope</key>
<string>source.rapp-console</string>
<key>uuid</key>
<string>C1302FC5-FDC8-4560-8DFF-2CEC85EFCD19</string>
</dict>
</plist>
31 changes: 31 additions & 0 deletions Commands/Previous History Item.tmCommand
@@ -0,0 +1,31 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>beforeRunningCommand</key>
<string>nop</string>
<key>command</key>
<string>#!/usr/bin/ruby
require ENV['TM_BUNDLE_SUPPORT'] + "/lib/historyList.rb"
require ENV['TM_SUPPORT_PATH'] + "/lib/exit_codes.rb"
require ENV['TM_SUPPORT_PATH'] + "/lib/escape.rb"
doc = STDIN.read
new_doc = HistoryList.move_up(doc)
TextMate.exit_discard if new_doc == doc
print e_sn(new_doc)</string>
<key>fallbackInput</key>
<string>document</string>
<key>input</key>
<string>selection</string>
<key>keyEquivalent</key>
<string></string>
<key>name</key>
<string>Previous History Item</string>
<key>output</key>
<string>insertAsSnippet</string>
<key>scope</key>
<string>source.rapp-console</string>
<key>uuid</key>
<string>2CE460A3-ADAE-47B6-8A89-EE142C714CC2</string>
</dict>
</plist>
35 changes: 35 additions & 0 deletions Commands/Send Selection : Document to R_app.tmCommand
@@ -0,0 +1,35 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>beforeRunningCommand</key>
<string>nop</string>
<key>command</key>
<string># input is selection or document
rawText="`cat`"
curDir=''
if [[ ${#TM_DIRECTORY} -gt 0 ]]; then
curDir="$TM_DIRECTORY"
fi
osascript -e 'on run(theCode)' \
-e 'tell application "R" to activate' \
-e 'if (item 2 of theCode) is not "" then tell application "R" to cmd "setwd('\''" &amp; (item 2 of theCode) &amp; "'\'')"' \
-e 'tell application "R" to cmd (item 1 of theCode)' \
-e 'end run' -- "$rawText" "$curDir"
</string>
<key>input</key>
<string>selection</string>
<key>keyEquivalent</key>
<string>@R</string>
<key>name</key>
<string>Send Selection / Document to R.app</string>
<key>output</key>
<string>showAsTooltip</string>
<key>scope</key>
<string>source.rapp-console</string>
<key>uuid</key>
<string>B2E62E8B-6E70-11D9-A369-000D93B3A10E</string>
</dict>
</plist>
33 changes: 33 additions & 0 deletions Commands/Show History List.tmCommand
@@ -0,0 +1,33 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>beforeRunningCommand</key>
<string>nop</string>
<key>command</key>
<string>#!/usr/bin/ruby
require ENV['TM_BUNDLE_SUPPORT'] + "/lib/historyList.rb"
require ENV['TM_SUPPORT_PATH'] + "/lib/ui.rb"
require ENV['TM_SUPPORT_PATH'] + "/lib/exit_codes.rb"
require ENV['TM_SUPPORT_PATH'] + "/lib/escape.rb"
doc = STDIN.read
list = HistoryList.new(doc)
choice = TextMate::UI.menu(list.list)
TextMate.exit_discard if choice.nil?
print e_sn(list.add_line(list.list[choice]))</string>
<key>fallbackInput</key>
<string>document</string>
<key>input</key>
<string>selection</string>
<key>keyEquivalent</key>
<string>^~</string>
<key>name</key>
<string>Show History List</string>
<key>output</key>
<string>insertAsSnippet</string>
<key>scope</key>
<string>source.rapp-console</string>
<key>uuid</key>
<string>613CDD87-1F8B-484E-B741-74B95F3C878B</string>
</dict>
</plist>
40 changes: 40 additions & 0 deletions Commands/Show Line Output as Tool Tip.tmCommand
@@ -0,0 +1,40 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>beforeRunningCommand</key>
<string>nop</string>
<key>command</key>
<string>echo
#test=`tail -c+2`
test=$(cat)
osascript &lt;&lt;-APPLESCRIPT | tail -n +2 | perl -pe 'BEGIN {$/=undef} s/&gt; $//;s/\n\z//'
tell application "System Events"
-- Get a reference to the text field
set text_area to (process "R")'s (window "R Console")'s (scroll area 1)'s text area 1
-- Get text before and after our command
set oldtext to text_area's value
tell application "R" to cmd "${test//\"/\"}"
set newtext to text_area's value
-- Find the difference between old and new
text from (oldtext's length + 1) to -1 of newtext
end tell
APPLESCRIPT</string>
<key>fallbackInput</key>
<string>line</string>
<key>input</key>
<string>selection</string>
<key>keyEquivalent</key>
<string>@T</string>
<key>name</key>
<string>Show Line Output as Tool Tip</string>
<key>output</key>
<string>showAsTooltip</string>
<key>scope</key>
<string>source.rapp-console</string>
<key>uuid</key>
<string>1A8EC6F7-D254-4888-9095-75C9DBA519F7</string>
</dict>
</plist>
47 changes: 47 additions & 0 deletions Support/lib/historyList.rb
@@ -0,0 +1,47 @@
def extract_command(string)
return "" if string.nil?
return string.gsub(/^>\s*|\s*\z/,"")
end
class HistoryList
attr_reader :list, :last_line, :text
def initialize(text)
@text = text.split("\n")
@last_line = @text.pop
@list = @text.grep(/^>(.*)$/).map{|m| extract_command(m)}.grep(/./)
@list = @list.reverse.uniq.reverse
end
def next_item(command)
cmd = extract_command(command)
return @list[0] if cmd.empty?
if i=@list.index(cmd) and i<=@list.length then
return @list[i+1]
end
return nil
end
def previous_item(command)
cmd = extract_command(command)
return @list.last if cmd.empty?
if i=@list.index(cmd) and i>=1 then
return @list[i-1]
end
return nil
end
def text
@text.join("\n") + "\n"
end
def add_line(line)
self.text + "> #{extract_command(line)}"
end
def move_up
add_line(previous_item(@last_line))
end
def move_down
add_line(next_item(@last_line))
end
def self.move_up(text)
self.new(text).move_up
end
def self.move_down(text)
self.new(text).move_down
end
end

0 comments on commit 16fda51

Please sign in to comment.