| |   |
| 1 | <?xml version="1.0" encoding="UTF-8"?> |
| 2 | <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> |
| 3 | <plist version="1.0"> |
| 4 | <dict> |
| 5 | <key>beforeRunningCommand</key> |
| 6 | <string>nop</string> |
| 7 | <key>command</key> |
| 8 | <string>"$TMTOOLS" close allAuxiliaryWindows</string> |
| 9 | <key>input</key> |
| 10 | <string>none</string> |
| 11 | <key>name</key> |
| 12 | <string>Cleanup windows</string> |
| 13 | <key>output</key> |
| 14 | <string>discard</string> |
| 15 | <key>uuid</key> |
| 16 | <string>7BEFC54B-D3FD-4B88-916A-2E80304D5CD2</string> |
| 17 | </dict> |
| 18 | </plist> |
| toggle raw diff |
--- /dev/null
+++ b/Commands/Cleanup windows.tmCommand
@@ -0,0 +1,18 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE plist PUBLIC "-//Apple//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>"$TMTOOLS" close allAuxiliaryWindows</string>
+ <key>input</key>
+ <string>none</string>
+ <key>name</key>
+ <string>Cleanup windows</string>
+ <key>output</key>
+ <string>discard</string>
+ <key>uuid</key>
+ <string>7BEFC54B-D3FD-4B88-916A-2E80304D5CD2</string>
+</dict>
+</plist> |
| |   |
| 1 | <?xml version="1.0" encoding="UTF-8"?> |
| 2 | <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> |
| 3 | <plist version="1.0"> |
| 4 | <dict> |
| 5 | <key>beforeRunningCommand</key> |
| 6 | <string>nop</string> |
| 7 | <key>command</key> |
| 8 | <string>#!/usr/bin/env ruby |
| 9 | |
| 10 | require "#{ENV["TM_BUNDLE_SUPPORT"]}/lib/ruby_tm_helpers.rb" |
| 11 | require "#{ENV['TM_SUPPORT_PATH']}/lib/ui.rb" |
| 12 | |
| 13 | project_directory = ENV["TM_PROJECT_DIRECTORY"] |
| 14 | |
| 15 | if project_directory.nil? |
| 16 | puts "This command can only be used in a project" |
| 17 | exit_show_tool_tip |
| 18 | end |
| 19 | |
| 20 | open_files = `"$TMTOOLS" get openProjectFiles '{format=plain;}'`.split("\n") |
| 21 | |
| 22 | |
| 23 | # phase one - autocomplete from all words, regardless of order |
| 24 | # current_file = ENV['TM_FILEPATH'] |
| 25 | |
| 26 | file_contents = open_files.map{|f| File.read(f) } |
| 27 | |
| 28 | file_words = file_contents.map{|fc| fc.gsub(/[^a-z0-9_]/i, " ").split(/ +/).uniq}.flatten.uniq.sort |
| 29 | |
| 30 | current_word = `"$TMTOOLS" get wordHead` |
| 31 | current_word_regexp = Regexp.new(/^#{current_word}.+/) |
| 32 | matching_words = file_words.select{|w| current_word_regexp.match(w) } |
| 33 | |
| 34 | word = |
| 35 | if matching_words.length>1 |
| 36 | w_index = TextMate::UI.menu(matching_words) |
| 37 | exit_discard if w_index.nil? |
| 38 | matching_words[w_index] |
| 39 | else |
| 40 | matching_words.first |
| 41 | end |
| 42 | |
| 43 | if word.nil? |
| 44 | puts "No matches" |
| 45 | exit_show_tool_tip |
| 46 | end |
| 47 | |
| 48 | $> << word[current_word.length..-1] |
| 49 | |
| 50 | exit_insert_text</string> |
| 51 | <key>input</key> |
| 52 | <string>document</string> |
| 53 | <key>keyEquivalent</key> |
| 54 | <string>@;</string> |
| 55 | <key>name</key> |
| 56 | <string>Complete word from all open documents</string> |
| 57 | <key>output</key> |
| 58 | <string>showAsTooltip</string> |
| 59 | <key>uuid</key> |
| 60 | <string>5011F1E1-74CF-4D63-B901-1E2FB7760AFE</string> |
| 61 | </dict> |
| 62 | </plist> |
| toggle raw diff |
--- /dev/null
+++ b/Commands/Complete word from all open documents.tmCommand
@@ -0,0 +1,62 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE plist PUBLIC "-//Apple//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/env ruby
+
+require "#{ENV["TM_BUNDLE_SUPPORT"]}/lib/ruby_tm_helpers.rb"
+require "#{ENV['TM_SUPPORT_PATH']}/lib/ui.rb"
+
+project_directory = ENV["TM_PROJECT_DIRECTORY"]
+
+if project_directory.nil?
+ puts "This command can only be used in a project"
+ exit_show_tool_tip
+end
+
+open_files = `"$TMTOOLS" get openProjectFiles '{format=plain;}'`.split("\n")
+
+
+# phase one - autocomplete from all words, regardless of order
+# current_file = ENV['TM_FILEPATH']
+
+file_contents = open_files.map{|f| File.read(f) }
+
+file_words = file_contents.map{|fc| fc.gsub(/[^a-z0-9_]/i, " ").split(/ +/).uniq}.flatten.uniq.sort
+
+current_word = `"$TMTOOLS" get wordHead`
+current_word_regexp = Regexp.new(/^#{current_word}.+/)
+matching_words = file_words.select{|w| current_word_regexp.match(w) }
+
+word =
+ if matching_words.length>1
+ w_index = TextMate::UI.menu(matching_words)
+ exit_discard if w_index.nil?
+ matching_words[w_index]
+ else
+ matching_words.first
+ end
+
+if word.nil?
+ puts "No matches"
+ exit_show_tool_tip
+end
+
+$> << word[current_word.length..-1]
+
+exit_insert_text</string>
+ <key>input</key>
+ <string>document</string>
+ <key>keyEquivalent</key>
+ <string>@;</string>
+ <key>name</key>
+ <string>Complete word from all open documents</string>
+ <key>output</key>
+ <string>showAsTooltip</string>
+ <key>uuid</key>
+ <string>5011F1E1-74CF-4D63-B901-1E2FB7760AFE</string>
+</dict>
+</plist> |
| |   |
| 1 | <?xml version="1.0" encoding="UTF-8"?> |
| 2 | <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> |
| 3 | <plist version="1.0"> |
| 4 | <dict> |
| 5 | <key>beforeRunningCommand</key> |
| 6 | <string>nop</string> |
| 7 | <key>command</key> |
| 8 | <string>#!/usr/bin/env ruby |
| 9 | |
| 10 | require "#{ENV["TM_BUNDLE_SUPPORT"]}/lib/ruby_tm_helpers.rb" |
| 11 | input = $stdin.read |
| 12 | |
| 13 | if input.empty? |
| 14 | puts "Please select something" |
| 15 | exit_show_tool_tip |
| 16 | end |
| 17 | |
| 18 | |
| 19 | cdatas = [] |
| 20 | input.gsub!(/<!\[CDATA\[(.+?)\]\]>/m) { |m| cdatas << $1; "<!!CDATA!!>"} |
| 21 | |
| 22 | output = "" |
| 23 | |
| 24 | def convert_params(params = "") |
| 25 | params = params.dup |
| 26 | prefix = "" |
| 27 | params.gsub!(/ *([a-z0-9_]+) *= *(['"])(.*?)\2/i) do |
| 28 | o="#{prefix}:#{$1} => #{$2}#{$3}#{$2}" |
| 29 | prefix = ", " |
| 30 | o |
| 31 | end |
| 32 | params.strip! |
| 33 | params |
| 34 | end |
| 35 | |
| 36 | ignore_next_close = false |
| 37 | |
| 38 | input.scan(/(<[^>]+>)([^<]*)/m).each do |tag, space| |
| 39 | new_line_required = false |
| 40 | case tag |
| 41 | when "<!!CDATA!!>" |
| 42 | output << "x.cdata!(#{cdatas.shift.inspect})" |
| 43 | new_line_required = true |
| 44 | when /<\?([^\s\/>]+)\s*(.*?)\?>/ |
| 45 | tag_name = $1 |
| 46 | params = $2.strip |
| 47 | |
| 48 | output << "x.instruct! :#{tag_name}" |
| 49 | output << ", #{convert_params(params)}" unless params.empty? |
| 50 | new_line_required = true |
| 51 | when /^<\/([^\s\/>]+)\s*>/ |
| 52 | unless ignore_next_close |
| 53 | output << "}" |
| 54 | end |
| 55 | new_line_required = true |
| 56 | ignore_next_close = false |
| 57 | when /^<([^\s\/>]+)\s*(.*?)(\/){0,1}\s*>/ |
| 58 | tag_name = $1 |
| 59 | params = $2 |
| 60 | self_closing = ($3 == "/") |
| 61 | |
| 62 | tag_name.strip! |
| 63 | params = convert_params(params) |
| 64 | has_params = ! params.empty? |
| 65 | |
| 66 | if /[^\s]/.match(space) |
| 67 | output << "x.#{tag_name} #{space.inspect}" |
| 68 | output << ", #{params}" unless params.empty? |
| 69 | ignore_next_close = true |
| 70 | new_line_required = false |
| 71 | space = "" |
| 72 | else |
| 73 | output << "x.#{tag_name}" |
| 74 | if self_closing |
| 75 | new_line_required = true |
| 76 | output << " #{params}" if has_params |
| 77 | else |
| 78 | output << "(#{params})" if has_params |
| 79 | output << " { " |
| 80 | end |
| 81 | end |
| 82 | end |
| 83 | |
| 84 | output << "; " if new_line_required unless space.include?("\n") |
| 85 | |
| 86 | output << space |
| 87 | end |
| 88 | |
| 89 | puts output</string> |
| 90 | <key>fallbackInput</key> |
| 91 | <string>none</string> |
| 92 | <key>input</key> |
| 93 | <string>selection</string> |
| 94 | <key>name</key> |
| 95 | <string>Convert XML to Builder::XMLMarkup</string> |
| 96 | <key>output</key> |
| 97 | <string>replaceSelectedText</string> |
| 98 | <key>uuid</key> |
| 99 | <string>3E287237-8082-4068-8B31-0F814338710E</string> |
| 100 | </dict> |
| 101 | </plist> |
| toggle raw diff |
--- /dev/null
+++ b/Commands/Convert XML to Builder::XMLMarkup.tmCommand
@@ -0,0 +1,101 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE plist PUBLIC "-//Apple//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/env ruby
+
+require "#{ENV["TM_BUNDLE_SUPPORT"]}/lib/ruby_tm_helpers.rb"
+input = $stdin.read
+
+if input.empty?
+ puts "Please select something"
+ exit_show_tool_tip
+end
+
+
+cdatas = []
+input.gsub!(/<!\[CDATA\[(.+?)\]\]>/m) { |m| cdatas << $1; "<!!CDATA!!>"}
+
+output = ""
+
+def convert_params(params = "")
+ params = params.dup
+ prefix = ""
+ params.gsub!(/ *([a-z0-9_]+) *= *(['"])(.*?)\2/i) do
+ o="#{prefix}:#{$1} => #{$2}#{$3}#{$2}"
+ prefix = ", "
+ o
+ end
+ params.strip!
+ params
+end
+
+ignore_next_close = false
+
+input.scan(/(<[^>]+>)([^<]*)/m).each do |tag, space|
+ new_line_required = false
+ case tag
+ when "<!!CDATA!!>"
+ output << "x.cdata!(#{cdatas.shift.inspect})"
+ new_line_required = true
+ when /<\?([^\s\/>]+)\s*(.*?)\?>/
+ tag_name = $1
+ params = $2.strip
+
+ output << "x.instruct! :#{tag_name}"
+ output << ", #{convert_params(params)}" unless params.empty?
+ new_line_required = true
+ when /^<\/([^\s\/>]+)\s*>/
+ unless ignore_next_close
+ output << "}"
+ end
+ new_line_required = true
+ ignore_next_close = false
+ when /^<([^\s\/>]+)\s*(.*?)(\/){0,1}\s*>/
+ tag_name = $1
+ params = $2
+ self_closing = ($3 == "/")
+
+ tag_name.strip!
+ params = convert_params(params)
+ has_params = ! params.empty?
+
+ if /[^\s]/.match(space)
+ output << "x.#{tag_name} #{space.inspect}"
+ output << ", #{params}" unless params.empty?
+ ignore_next_close = true
+ new_line_required = false
+ space = ""
+ else
+ output << "x.#{tag_name}"
+ if self_closing
+ new_line_required = true
+ output << " #{params}" if has_params
+ else
+ output << "(#{params})" if has_params
+ output << " { "
+ end
+ end
+ end
+
+ output << "; " if new_line_required unless space.include?("\n")
+
+ output << space
+end
+
+puts output</string>
+ <key>fallbackInput</key>
+ <string>none</string>
+ <key>input</key>
+ <string>selection</string>
+ <key>name</key>
+ <string>Convert XML to Builder::XMLMarkup</string>
+ <key>output</key>
+ <string>replaceSelectedText</string>
+ <key>uuid</key>
+ <string>3E287237-8082-4068-8B31-0F814338710E</string>
+</dict>
+</plist> |
| |   |
| 1 | <?xml version="1.0" encoding="UTF-8"?> |
| 2 | <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> |
| 3 | <plist version="1.0"> |
| 4 | <dict> |
| 5 | <key>beforeRunningCommand</key> |
| 6 | <string>nop</string> |
| 7 | <key>command</key> |
| 8 | <string>#!/usr/bin/env ruby |
| 9 | |
| 10 | require "#{ENV["TM_BUNDLE_SUPPORT"]}/lib/rdebug_inspect_helpers.rb" |
| 11 | |
| 12 | i = RDebugInspect.new |
| 13 | |
| 14 | IO.popen('pbcopy', 'w'){ |pb| pb.puts( i.inspect_as_yaml )}; |
| 15 | |
| 16 | puts "Copied value of #{i.what} to clipboard"</string> |
| 17 | <key>input</key> |
| 18 | <string>document</string> |
| 19 | <key>keyEquivalent</key> |
| 20 | <string>^~i</string> |
| 21 | <key>name</key> |
| 22 | <string>Debug - Copy inspection to clipboard as YAML</string> |
| 23 | <key>output</key> |
| 24 | <string>showAsTooltip</string> |
| 25 | <key>uuid</key> |
| 26 | <string>90E13791-96CC-4380-8344-48EB84D9E616</string> |
| 27 | </dict> |
| 28 | </plist> |
| toggle raw diff |
--- /dev/null
+++ b/Commands/Debug - Copy inspection to clipboard as YAML.tmCommand
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE plist PUBLIC "-//Apple//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/env ruby
+
+require "#{ENV["TM_BUNDLE_SUPPORT"]}/lib/rdebug_inspect_helpers.rb"
+
+i = RDebugInspect.new
+
+IO.popen('pbcopy', 'w'){ |pb| pb.puts( i.inspect_as_yaml )};
+
+puts "Copied value of #{i.what} to clipboard"</string>
+ <key>input</key>
+ <string>document</string>
+ <key>keyEquivalent</key>
+ <string>^~i</string>
+ <key>name</key>
+ <string>Debug - Copy inspection to clipboard as YAML</string>
+ <key>output</key>
+ <string>showAsTooltip</string>
+ <key>uuid</key>
+ <string>90E13791-96CC-4380-8344-48EB84D9E616</string>
+</dict>
+</plist> |
| |   |
| 1 | <?xml version="1.0" encoding="UTF-8"?> |
| 2 | <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> |
| 3 | <plist version="1.0"> |
| 4 | <dict> |
| 5 | <key>beforeRunningCommand</key> |
| 6 | <string>nop</string> |
| 7 | <key>command</key> |
| 8 | <string>#!/usr/bin/env ruby |
| 9 | |
| 10 | require "#{ENV["TM_BUNDLE_SUPPORT"]}/lib/rdebug_inspect_helpers.rb" |
| 11 | |
| 12 | i = RDebugInspect.new |
| 13 | |
| 14 | IO.popen('pbcopy', 'w'){ |pb| pb.puts( i.inspect_as_pp )}; |
| 15 | |
| 16 | puts "Copied value of #{i.what} to clipboard"</string> |
| 17 | <key>input</key> |
| 18 | <string>document</string> |
| 19 | <key>keyEquivalent</key> |
| 20 | <string>^~i</string> |
| 21 | <key>name</key> |
| 22 | <string>Debug - Copy inspection to clipboard as pretty print</string> |
| 23 | <key>output</key> |
| 24 | <string>showAsTooltip</string> |
| 25 | <key>uuid</key> |
| 26 | <string>B79A89E1-3301-499B-9D5E-5E0B87EB15BD</string> |
| 27 | </dict> |
| 28 | </plist> |
| toggle raw diff |
--- /dev/null
+++ b/Commands/Debug - Copy inspection to clipboard as pretty print.tmCommand
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE plist PUBLIC "-//Apple//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/env ruby
+
+require "#{ENV["TM_BUNDLE_SUPPORT"]}/lib/rdebug_inspect_helpers.rb"
+
+i = RDebugInspect.new
+
+IO.popen('pbcopy', 'w'){ |pb| pb.puts( i.inspect_as_pp )};
+
+puts "Copied value of #{i.what} to clipboard"</string>
+ <key>input</key>
+ <string>document</string>
+ <key>keyEquivalent</key>
+ <string>^~i</string>
+ <key>name</key>
+ <string>Debug - Copy inspection to clipboard as pretty print</string>
+ <key>output</key>
+ <string>showAsTooltip</string>
+ <key>uuid</key>
+ <string>B79A89E1-3301-499B-9D5E-5E0B87EB15BD</string>
+</dict>
+</plist> |
| |   |
| 1 | <?xml version="1.0" encoding="UTF-8"?> |
| 2 | <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> |
| 3 | <plist version="1.0"> |
| 4 | <dict> |
| 5 | <key>beforeRunningCommand</key> |
| 6 | <string>nop</string> |
| 7 | <key>command</key> |
| 8 | <string>#!/usr/bin/env ruby |
| 9 | |
| 10 | require "#{ENV["TM_BUNDLE_SUPPORT"]}/lib/rdebug_inspect_helpers.rb" |
| 11 | |
| 12 | i = RDebugInspect.new |
| 13 | |
| 14 | IO.popen('pbcopy', 'w'){ |pb| pb << ( i.inspect_as_string )}; |
| 15 | |
| 16 | puts "Copied value of #{i.what} to clipboard" |
| 17 | </string> |
| 18 | <key>input</key> |
| 19 | <string>document</string> |
| 20 | <key>keyEquivalent</key> |
| 21 | <string>^~i</string> |
| 22 | <key>name</key> |
| 23 | <string>Debug - Copy inspection to clipboard as string</string> |
| 24 | <key>output</key> |
| 25 | <string>showAsTooltip</string> |
| 26 | <key>uuid</key> |
| 27 | <string>C6EC1187-A816-4B38-9975-F2E84C67B7C6</string> |
| 28 | </dict> |
| 29 | </plist> |
| toggle raw diff |
--- /dev/null
+++ b/Commands/Debug - Copy inspection to clipboard as string.tmCommand
@@ -0,0 +1,29 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE plist PUBLIC "-//Apple//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/env ruby
+
+require "#{ENV["TM_BUNDLE_SUPPORT"]}/lib/rdebug_inspect_helpers.rb"
+
+i = RDebugInspect.new
+
+IO.popen('pbcopy', 'w'){ |pb| pb << ( i.inspect_as_string )};
+
+puts "Copied value of #{i.what} to clipboard"
+</string>
+ <key>input</key>
+ <string>document</string>
+ <key>keyEquivalent</key>
+ <string>^~i</string>
+ <key>name</key>
+ <string>Debug - Copy inspection to clipboard as string</string>
+ <key>output</key>
+ <string>showAsTooltip</string>
+ <key>uuid</key>
+ <string>C6EC1187-A816-4B38-9975-F2E84C67B7C6</string>
+</dict>
+</plist> |
| |   |
| 1 | <?xml version="1.0" encoding="UTF-8"?> |
| 2 | <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> |
| 3 | <plist version="1.0"> |
| 4 | <dict> |
| 5 | <key>beforeRunningCommand</key> |
| 6 | <string>nop</string> |
| 7 | <key>command</key> |
| 8 | <string>#!/usr/bin/env ruby |
| 9 | require "#{ENV['TM_BUNDLE_SUPPORT']}/lib/spec_debugger" |
| 10 | |
| 11 | SpecDebugger.run(:file)</string> |
| 12 | <key>fallbackInput</key> |
| 13 | <string>line</string> |
| 14 | <key>input</key> |
| 15 | <string>selection</string> |
| 16 | <key>name</key> |
| 17 | <string>Debug - RSpec Examples</string> |
| 18 | <key>output</key> |
| 19 | <string>showAsHTML</string> |
| 20 | <key>scope</key> |
| 21 | <string>source.ruby.rspec</string> |
| 22 | <key>uuid</key> |
| 23 | <string>95931CFC-B32A-46A6-9214-CA33D2880981</string> |
| 24 | </dict> |
| 25 | </plist> |
| toggle raw diff |
--- /dev/null
+++ b/Commands/Debug Experiment RSpec.tmCommand
@@ -0,0 +1,25 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE plist PUBLIC "-//Apple//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/env ruby
+require "#{ENV['TM_BUNDLE_SUPPORT']}/lib/spec_debugger"
+
+SpecDebugger.run(:file)</string>
+ <key>fallbackInput</key>
+ <string>line</string>
+ <key>input</key>
+ <string>selection</string>
+ <key>name</key>
+ <string>Debug - RSpec Examples</string>
+ <key>output</key>
+ <string>showAsHTML</string>
+ <key>scope</key>
+ <string>source.ruby.rspec</string>
+ <key>uuid</key>
+ <string>95931CFC-B32A-46A6-9214-CA33D2880981</string>
+</dict>
+</plist> |
| |   |
| 1 | <?xml version="1.0" encoding="UTF-8"?> |
| 2 | <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> |
| 3 | <plist version="1.0"> |
| 4 | <dict> |
| 5 | <key>beforeRunningCommand</key> |
| 6 | <string>nop</string> |
| 7 | <key>command</key> |
| 8 | <string>#!/usr/bin/env ruby |
| 9 | require "#{ENV['TM_BUNDLE_SUPPORT']}/lib/rdebug_helpers.rb" |
| 10 | |
| 11 | |
| 12 | Thread.new { |
| 13 | # fire up an external terminal window for the debug console |
| 14 | require 'appscript' |
| 15 | term = Appscript::app("Terminal") |
| 16 | term.activate |
| 17 | term.do_script "cd #{ENV['TM_PROJECT_DIRECTORY'].to_s.inspect} && rdebug -c" |
| 18 | } |
| 19 | |
| 20 | init_dbg_breakpoint("load #{ENV['TM_FILEPATH'].to_s.inspect}") |
| 21 | |
| 22 | ARGV << "-s" |
| 23 | ARGV << RUN_FILE |
| 24 | |
| 25 | load 'rdebug'</string> |
| 26 | <key>fallbackInput</key> |
| 27 | <string>line</string> |
| 28 | <key>input</key> |
| 29 | <string>selection</string> |
| 30 | <key>name</key> |
| 31 | <string>Debug - Run current file</string> |
| 32 | <key>output</key> |
| 33 | <string>showAsHTML</string> |
| 34 | <key>uuid</key> |
| 35 | <string>61FE0786-CB5F-4E8F-8DFD-03C0128CDE50</string> |
| 36 | </dict> |
| 37 | </plist> |
| toggle raw diff |
--- /dev/null
+++ b/Commands/Debug Experiment.tmCommand
@@ -0,0 +1,37 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE plist PUBLIC "-//Apple//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/env ruby
+require "#{ENV['TM_BUNDLE_SUPPORT']}/lib/rdebug_helpers.rb"
+
+
+Thread.new {
+ # fire up an external terminal window for the debug console
+ require 'appscript'
+ term = Appscript::app("Terminal")
+ term.activate
+ term.do_script "cd #{ENV['TM_PROJECT_DIRECTORY'].to_s.inspect} && rdebug -c"
+}
+
+init_dbg_breakpoint("load #{ENV['TM_FILEPATH'].to_s.inspect}")
+
+ARGV << "-s"
+ARGV << RUN_FILE
+
+load 'rdebug'</string>
+ <key>fallbackInput</key>
+ <string>line</string>
+ <key>input</key>
+ <string>selection</string>
+ <key>name</key>
+ <string>Debug - Run current file</string>
+ <key>output</key>
+ <string>showAsHTML</string>
+ <key>uuid</key>
+ <string>61FE0786-CB5F-4E8F-8DFD-03C0128CDE50</string>
+</dict>
+</plist> |
| |   |
| 1 | <?xml version="1.0" encoding="UTF-8"?> |
| 2 | <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> |
| 3 | <plist version="1.0"> |
| 4 | <dict> |
| 5 | <key>beforeRunningCommand</key> |
| 6 | <string>nop</string> |
| 7 | <key>command</key> |
| 8 | <string>#!/usr/bin/env ruby |
| 9 | |
| 10 | require "#{ENV["TM_BUNDLE_SUPPORT"]}/lib/rdebug_cmd.rb" |
| 11 | |
| 12 | cmd = "del" |
| 13 | msg = 'Breakpoints deleted.' |
| 14 | |
| 15 | dcmd = DebuggerCmd.new |
| 16 | dcmd.send_command(cmd, msg)</string> |
| 17 | <key>fallbackInput</key> |
| 18 | <string>line</string> |
| 19 | <key>input</key> |
| 20 | <string>selection</string> |
| 21 | <key>keyEquivalent</key> |
| 22 | <string>^@b</string> |
| 23 | <key>name</key> |
| 24 | <string>Debug - Delete All Breakpoints</string> |
| 25 | <key>output</key> |
| 26 | <string>showAsTooltip</string> |
| 27 | <key>uuid</key> |
| 28 | <string>5193D698-4392-494D-946B-7D9BF1B7C9CA</string> |
| 29 | </dict> |
| 30 | </plist> |
| toggle raw diff |
--- /dev/null
+++ b/Commands/Delete All Breakpoints.tmCommand
@@ -0,0 +1,30 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE plist PUBLIC "-//Apple//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/env ruby
+
+require "#{ENV["TM_BUNDLE_SUPPORT"]}/lib/rdebug_cmd.rb"
+
+cmd = "del"
+msg = 'Breakpoints deleted.'
+
+dcmd = DebuggerCmd.new
+dcmd.send_command(cmd, msg)</string>
+ <key>fallbackInput</key>
+ <string>line</string>
+ <key>input</key>
+ <string>selection</string>
+ <key>keyEquivalent</key>
+ <string>^@b</string>
+ <key>name</key>
+ <string>Debug - Delete All Breakpoints</string>
+ <key>output</key>
+ <string>showAsTooltip</string>
+ <key>uuid</key>
+ <string>5193D698-4392-494D-946B-7D9BF1B7C9CA</string>
+</dict>
+</plist> |
| |   |
| 1 | <?xml version="1.0" encoding="UTF-8"?> |
| 2 | <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> |
| 3 | <plist version="1.0"> |
| 4 | <dict> |
| 5 | <key>beforeRunningCommand</key> |
| 6 | <string>nop</string> |
| 7 | <key>command</key> |
| 8 | <string>#!/usr/bin/env ruby |
| 9 | |
| 10 | require "#{ENV["TM_BUNDLE_SUPPORT"]}/lib/ruby_tm_helpers.rb" |
| 11 | require "#{ENV["TM_BUNDLE_SUPPORT"]}/lib/grep_helpers.rb" |
| 12 | require "#{ENV['TM_SUPPORT_PATH']}/lib/ui.rb" |
| 13 | project_directory = ENV['TM_PROJECT_DIRECTORY'] |
| 14 | |
| 15 | filepath = tm_expanded_selection( |
| 16 | :backward => /[\w\/.]+/, |
| 17 | :forward => /[\w\/.]+(:\d+){0,1}/ |
| 18 | ).strip |
| 19 | |
| 20 | filepath = TextMate::UI.request_string(:title => "Go to file", :prompt => "Enter a filename with path", :default => "" ) if filepath.empty? |
| 21 | |
| 22 | if filepath.nil? || filepath.empty? |
| 23 | puts "Canceled" |
| 24 | exit_show_tool_tip |
| 25 | end |
| 26 | |
| 27 | |
| 28 | if /^\//.match(filepath) && File.exists?(filepath) |
| 29 | tm_open(filepath) |
| 30 | exit_show_tool_tip |
| 31 | end |
| 32 | |
| 33 | line = nil |
| 34 | if /^(.+):(\d+)$/.match(filepath) |
| 35 | filepath = $1 |
| 36 | line = $2 |
| 37 | end |
| 38 | |
| 39 | filepath.gsub!(/\.{1,2}\//, "") |
| 40 | filepath.gsub!(/^\//, "") # remove the beginning slash |
| 41 | |
| 42 | /^(.*\/){0,1}([^\/]+)$/.match(filepath) |
| 43 | dir = $1 |
| 44 | file = $2 |
| 45 | regexp = /(^|\/)#{dir}_{0,1}#{file}($|\b[^\/]*$)/ |
| 46 | |
| 47 | |
| 48 | Dir.chdir(project_directory) |
| 49 | results = Finder.new(".").results |
| 50 | |
| 51 | matches = [] |
| 52 | |
| 53 | results.each do |result| |
| 54 | matches << result if regexp.match(result) |
| 55 | end |
| 56 | |
| 57 | if matches.length > 1 |
| 58 | i = TextMate::UI.menu(matches) |
| 59 | exit_discard if i.nil? |
| 60 | selected_match = matches[i] |
| 61 | elsif matches.length==1 |
| 62 | selected_match = matches.first |
| 63 | else |
| 64 | puts "No filenames matching '#{filepath}'" |
| 65 | exit_show_tool_tip |
| 66 | end |
| 67 | |
| 68 | tm_open(selected_match, line) |
| 69 | |
| 70 | exit_discard</string> |
| 71 | <key>fallbackInput</key> |
| 72 | <string>word</string> |
| 73 | <key>input</key> |
| 74 | <string>document</string> |
| 75 | <key>keyEquivalent</key> |
| 76 | <string>~g</string> |
| 77 | <key>name</key> |
| 78 | <string>Go to file</string> |
| 79 | <key>output</key> |
| 80 | <string>showAsTooltip</string> |
| 81 | <key>uuid</key> |
| 82 | <string>7443155B-3A9B-4B0A-8D3D-0B533B3B9125</string> |
| 83 | </dict> |
| 84 | </plist> |
| toggle raw diff |
--- /dev/null
+++ b/Commands/Go to file.tmCommand
@@ -0,0 +1,84 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE plist PUBLIC "-//Apple//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/env ruby
+
+require "#{ENV["TM_BUNDLE_SUPPORT"]}/lib/ruby_tm_helpers.rb"
+require "#{ENV["TM_BUNDLE_SUPPORT"]}/lib/grep_helpers.rb"
+require "#{ENV['TM_SUPPORT_PATH']}/lib/ui.rb"
+project_directory = ENV['TM_PROJECT_DIRECTORY']
+
+filepath = tm_expanded_selection(
+ :backward => /[\w\/.]+/,
+ :forward => /[\w\/.]+(:\d+){0,1}/
+).strip
+
+filepath = TextMate::UI.request_string(:title => "Go to file", :prompt => "Enter a filename with path", :default => "" ) if filepath.empty?
+
+if filepath.nil? || filepath.empty?
+ puts "Canceled"
+ exit_show_tool_tip
+end
+
+
+if /^\//.match(filepath) && File.exists?(filepath)
+ tm_open(filepath)
+ exit_show_tool_tip
+end
+
+line = nil
+if /^(.+):(\d+)$/.match(filepath)
+ filepath = $1
+ line = $2
+end
+
+filepath.gsub!(/\.{1,2}\//, "")
+filepath.gsub!(/^\//, "") # remove the beginning slash
+
+/^(.*\/){0,1}([^\/]+)$/.match(filepath)
+dir = $1
+file = $2
+regexp = /(^|\/)#{dir}_{0,1}#{file}($|\b[^\/]*$)/
+
+
+Dir.chdir(project_directory)
+results = Finder.new(".").results
+
+matches = []
+
+results.each do |result|
+ matches << result if regexp.match(result)
+end
+
+if matches.length > 1
+ i = TextMate::UI.menu(matches)
+ exit_discard if i.nil?
+ selected_match = matches[i]
+elsif matches.length==1
+ selected_match = matches.first
+else
+ puts "No filenames matching '#{filepath}'"
+ exit_show_tool_tip
+end
+
+tm_open(selected_match, line)
+
+exit_discard</string>
+ <key>fallbackInput</key>
+ <string>word</string>
+ <key>input</key>
+ <string>document</string>
+ <key>keyEquivalent</key>
+ <string>~g</string>
+ <key>name</key>
+ <string>Go to file</string>
+ <key>output</key>
+ <string>showAsTooltip</string>
+ <key>uuid</key>
+ <string>7443155B-3A9B-4B0A-8D3D-0B533B3B9125</string>
+</dict>
+</plist> |
| |   |
| 1 | <?xml version="1.0" encoding="UTF-8"?> |
| 2 | <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> |
| 3 | <plist version="1.0"> |
| 4 | <dict> |
| 5 | <key>beforeRunningCommand</key> |
| 6 | <string>nop</string> |
| 7 | <key>bundleUUID</key> |
| 8 | <string>5A9D4FC6-6CBE-11D9-A21B-000D93589AF6</string> |
| 9 | <key>command</key> |
| 10 | <string>#!/usr/bin/env ruby |
| 11 | require "#{ENV['TM_BUNDLE_SUPPORT']}/lib/grep_helpers.rb" |
| 12 | |
| 13 | grepper = GrepperMenu.new("Grep in Project") |
| 14 | grepper.run { |
| 15 | m = $stdin.read |
| 16 | |
| 17 | m = TextMate::UI.request_string(:title => "Grep for class", :prompt => "Enter a class you'd like to find:", :default => "" ).strip if m.empty? |
| 18 | |
| 19 | if m.nil? || m.empty? |
| 20 | puts "Canceled" |
| 21 | exit_show_tool_tip |
| 22 | end |
| 23 | |
| 24 | if /^[a-z]/.match(m) |
| 25 | require 'rubygems' |
| 26 | require 'activesupport' |
| 27 | m = m.classify |
| 28 | end |
| 29 | |
| 30 | grepper.include_files << ["*.rb"] |
| 31 | grepper.query = /(^|;) *(class|module) ([^<#]+::|)*#{m}\b([^:]|$)/ |
| 32 | grepper.query_highlight_regexp = Regexp.new(Regexp.escape(m)) |
| 33 | grepper.title = "Searching for Class/Module “#{ m }”" |
| 34 | } |
| 35 | </string> |
| 36 | <key>fallbackInput</key> |
| 37 | <string>word</string> |
| 38 | <key>input</key> |
| 39 | <string>selection</string> |
| 40 | <key>keyEquivalent</key> |
| 41 | <string>@C</string> |
| 42 | <key>name</key> |
| 43 | <string>Grep for Class/Module</string> |
| 44 | <key>output</key> |
| 45 | <string>showAsTooltip</string> |
| 46 | <key>uuid</key> |
| 47 | <string>23D5F39E-73CA-43FC-90B3-18BDBEDDD56B</string> |
| 48 | </dict> |
| 49 | </plist> |
| toggle raw diff |
--- /dev/null
+++ b/Commands/Grep for Class.tmCommand
@@ -0,0 +1,49 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE plist PUBLIC "-//Apple//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>bundleUUID</key>
+ <string>5A9D4FC6-6CBE-11D9-A21B-000D93589AF6</string>
+ <key>command</key>
+ <string>#!/usr/bin/env ruby
+require "#{ENV['TM_BUNDLE_SUPPORT']}/lib/grep_helpers.rb"
+
+grepper = GrepperMenu.new("Grep in Project")
+grepper.run {
+ m = $stdin.read
+
+ m = TextMate::UI.request_string(:title => "Grep for class", :prompt => "Enter a class you'd like to find:", :default => "" ).strip if m.empty?
+
+ if m.nil? || m.empty?
+ puts "Canceled"
+ exit_show_tool_tip
+ end
+
+ if /^[a-z]/.match(m)
+ require 'rubygems'
+ require 'activesupport'
+ m = m.classify
+ end
+
+ grepper.include_files << ["*.rb"]
+ grepper.query = /(^|;) *(class|module) ([^<#]+::|)*#{m}\b([^:]|$)/
+ grepper.query_highlight_regexp = Regexp.new(Regexp.escape(m))
+ grepper.title = "Searching for Class/Module “#{ m }”"
+}
+</string>
+ <key>fallbackInput</key>
+ <string>word</string>
+ <key>input</key>
+ <string>selection</string>
+ <key>keyEquivalent</key>
+ <string>@C</string>
+ <key>name</key>
+ <string>Grep for Class/Module</string>
+ <key>output</key>
+ <string>showAsTooltip</string>
+ <key>uuid</key>
+ <string>23D5F39E-73CA-43FC-90B3-18BDBEDDD56B</string>
+</dict>
+</plist> |
| |   |
| 1 | <?xml version="1.0" encoding="UTF-8"?> |
| 2 | <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> |
| 3 | <plist version="1.0"> |
| 4 | <dict> |
| 5 | <key>beforeRunningCommand</key> |
| 6 | <string>nop</string> |
| 7 | <key>bundleUUID</key> |
| 8 | <string>5A9D4FC6-6CBE-11D9-A21B-000D93589AF6</string> |
| 9 | <key>command</key> |
| 10 | <string>#!/usr/bin/env ruby |
| 11 | require "#{ENV['TM_BUNDLE_SUPPORT']}/lib/grep_helpers.rb" |
| 12 | |
| 13 | grepper = GrepperMenu.new("Grep for Fixture") |
| 14 | grepper.run { |
| 15 | m = $stdin.read |
| 16 | |
| 17 | m = TextMate::UI.request_string(:title => "Grep for fixture", :prompt => "Enter a fixture you'd like to find:", :default => "" ).strip if m.empty? |
| 18 | |
| 19 | if m.nil? || m.empty? |
| 20 | puts "Canceled" |
| 21 | exit_show_tool_tip |
| 22 | end |
| 23 | |
| 24 | grepper.include_files << ["*.yml"] |
| 25 | if /^[A-Z]/.match(m) |
| 26 | require 'rubygems' |
| 27 | require 'activesupport' |
| 28 | table_name = m.to_s.tableize |
| 29 | grepper.query = /^(#{m}|# Table name: (#{m}[ies]*|#{table_name}))\b/ |
| 30 | else |
| 31 | grepper.query = /^(#{m}|# Table name: #{m}[ies]*)\b/ |
| 32 | end |
| 33 | |
| 34 | grepper.query_highlight_regexp = Regexp.new(Regexp.escape(m)) |
| 35 | grepper.title = "Searching for fixture “#{ m }”" |
| 36 | }</string> |
| 37 | <key>fallbackInput</key> |
| 38 | <string>word</string> |
| 39 | <key>input</key> |
| 40 | <string>selection</string> |
| 41 | <key>keyEquivalent</key> |
| 42 | <string>@X</string> |
| 43 | <key>name</key> |
| 44 | <string>Grep for Fixture</string> |
| 45 | <key>output</key> |
| 46 | <string>showAsTooltip</string> |
| 47 | <key>uuid</key> |
| 48 | <string>E2D2F075-81CE-4604-9813-A08145995F96</string> |
| 49 | </dict> |
| 50 | </plist> |
| toggle raw diff |
--- /dev/null
+++ b/Commands/Grep for Fixture.tmCommand
@@ -0,0 +1,50 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE plist PUBLIC "-//Apple//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>bundleUUID</key>
+ <string>5A9D4FC6-6CBE-11D9-A21B-000D93589AF6</string>
+ <key>command</key>
+ <string>#!/usr/bin/env ruby
+require "#{ENV['TM_BUNDLE_SUPPORT']}/lib/grep_helpers.rb"
+
+grepper = GrepperMenu.new("Grep for Fixture")
+grepper.run {
+ m = $stdin.read
+
+ m = TextMate::UI.request_string(:title => "Grep for fixture", :prompt => "Enter a fixture you'd like to find:", :default => "" ).strip if m.empty?
+
+ if m.nil? || m.empty?
+ puts "Canceled"
+ exit_show_tool_tip
+ end
+
+ grepper.include_files << ["*.yml"]
+ if /^[A-Z]/.match(m)
+ require 'rubygems'
+ require 'activesupport'
+ table_name = m.to_s.tableize
+ grepper.query = /^(#{m}|# Table name: (#{m}[ies]*|#{table_name}))\b/
+ else
+ grepper.query = /^(#{m}|# Table name: #{m}[ies]*)\b/
+ end
+
+ grepper.query_highlight_regexp = Regexp.new(Regexp.escape(m))
+ grepper.title = "Searching for fixture “#{ m }”"
+}</string>
+ <key>fallbackInput</key>
+ <string>word</string>
+ <key>input</key>
+ <string>selection</string>
+ <key>keyEquivalent</key>
+ <string>@X</string>
+ <key>name</key>
+ <string>Grep for Fixture</string>
+ <key>output</key>
+ <string>showAsTooltip</string>
+ <key>uuid</key>
+ <string>E2D2F075-81CE-4604-9813-A08145995F96</string>
+</dict>
+</plist> |
| |   |
| 1 | <?xml version="1.0" encoding="UTF-8"?> |
| 2 | <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> |
| 3 | <plist version="1.0"> |
| 4 | <dict> |
| 5 | <key>beforeRunningCommand</key> |
| 6 | <string>nop</string> |
| 7 | <key>bundleUUID</key> |
| 8 | <string>5A9D4FC6-6CBE-11D9-A21B-000D93589AF6</string> |
| 9 | <key>command</key> |
| 10 | <string>#!/usr/bin/env ruby |
| 11 | require "#{ENV['TM_BUNDLE_SUPPORT']}/lib/grep_helpers.rb" |
| 12 | |
| 13 | grepper = GrepperMenu.new("Grep for Method") |
| 14 | grepper.run { |
| 15 | m = $stdin.read.strip |
| 16 | |
| 17 | m = TextMate::UI.request_string(:title => "Grep for method", :prompt => "Enter a method you'd like to find:", :default => "" ).strip if m.empty? |
| 18 | |
| 19 | if m.nil? || m.empty? |
| 20 | puts "Canceled" |
| 21 | exit_show_tool_tip |
| 22 | end |
| 23 | |
| 24 | grepper.include_files << ["*.rb"] |
| 25 | |
| 26 | grepper.query = /(^|;) *((def +(self\.|)#{m}\b)|(def_delegators[\( ][^,]+,.*\b#{m}\b)|(attr_(reader|writer|accessor).*\b#{m}\b)|((belongs_to|belongs_to_reciprocated|has_many|has_and_belongs_to_many)[\(: ]+#{m}\b)|(# #{m} +:)|(alias :{0,1}#{m}\b))/ |
| 27 | grepper.query_highlight_regexp = Regexp.new(Regexp.escape(m)) |
| 28 | grepper.title = "Searching for method “#{ m }”" |
| 29 | }</string> |
| 30 | <key>fallbackInput</key> |
| 31 | <string>word</string> |
| 32 | <key>input</key> |
| 33 | <string>selection</string> |
| 34 | <key>keyEquivalent</key> |
| 35 | <string>@M</string> |
| 36 | <key>name</key> |
| 37 | <string>Grep for Method</string> |
| 38 | <key>output</key> |
| 39 | <string>showAsTooltip</string> |
| 40 | <key>uuid</key> |
| 41 | <string>17830567-BC2D-4B99-B20F-F68903DA83A2</string> |
| 42 | </dict> |
| 43 | < |