!!com.aptana.scripting.model.BundleElement
author: Christopher Williams, Andrew Shebanow
children:
- !!com.aptana.scripting.model.MenuElement
  children:
  - children: &id001 []
    commandName: 安装新bundle(&B)
    customProperties: null
    displayName: 安装新bundle(&B)
    id: null
    locationURI: null
    path: bundle.rb
    scope: null
  commandName: tool.ruby.installbundle
  customProperties: null
  displayName: tool.ruby.installbundle
  id: null
  locationURI: null
  path: bundle.rb
  scope: null
- !!com.aptana.scripting.model.MenuElement
  children:
  - children: *id001
    commandName: Show Scope
    customProperties: null
    displayName: Show Scope
    id: null
    locationURI: null
    path: bundle.rb
    scope: null
  - children: *id001
    commandName: Copy Scope
    customProperties: null
    displayName: Copy Scope
    id: null
    locationURI: null
    path: bundle.rb
    scope: null
  - children: *id001
    commandName: Show Scope and Matching Theme Rule
    customProperties: null
    displayName: Show Scope and Matching Theme Rule
    id: null
    locationURI: null
    path: bundle.rb
    scope: null
  - children: *id001
    commandName: '-'
    customProperties: null
    displayName: '-'
    id: null
    locationURI: null
    path: bundle.rb
    scope: null
  - children: *id001
    commandName: Show ENV
    customProperties: null
    displayName: Show ENV
    id: null
    locationURI: null
    path: bundle.rb
    scope: null
  - children: *id001
    commandName: '-'
    customProperties: null
    displayName: '-'
    id: null
    locationURI: null
    path: bundle.rb
    scope: null
  - children: *id001
    commandName: 安装新bundle(&B)
    customProperties: null
    displayName: 安装新bundle(&B)
    id: null
    locationURI: null
    path: bundle.rb
    scope: null
  - children: *id001
    commandName: Update User Bundles
    customProperties: null
    displayName: Update User Bundles
    id: null
    locationURI: null
    path: bundle.rb
    scope: null
  - children: *id001
    commandName: Flush Bundle Caches
    customProperties: null
    displayName: Flush Bundle Caches
    id: null
    locationURI: null
    path: bundle.rb
    scope: null
  - children: *id001
    commandName: '-'
    customProperties: null
    displayName: '-'
    id: null
    locationURI: null
    path: bundle.rb
    scope: null
  - children: *id001
    commandName: Show Command Bindings
    customProperties: null
    displayName: Show Command Bindings
    id: null
    locationURI: null
    path: bundle.rb
    scope: null
  - children: *id001
    commandName: Show Active Commands in Scope
    customProperties: null
    displayName: Show Active Commands in Scope
    id: null
    locationURI: null
    path: bundle.rb
    scope: null
  - children: *id001
    commandName: Show Active Snippets in Scope
    customProperties: null
    displayName: Show Active Snippets in Scope
    id: null
    locationURI: null
    path: bundle.rb
    scope: null
  - children: *id001
    commandName: '-'
    customProperties: null
    displayName: '-'
    id: null
    locationURI: null
    path: bundle.rb
    scope: null
  - children:
    - children: *id001
      commandName: Bundle.rb
      customProperties: null
      displayName: Bundle.rb
      id: null
      locationURI: null
      path: bundle.rb
      scope: null
    - children: *id001
      commandName: '-'
      customProperties: null
      displayName: '-'
      id: null
      locationURI: null
      path: bundle.rb
      scope: null
    - children: *id001
      commandName: Menu Command
      customProperties: null
      displayName: Menu Command
      id: null
      locationURI: null
      path: bundle.rb
      scope: null
    - children: *id001
      commandName: Menu Separator
      customProperties: null
      displayName: Menu Separator
      id: null
      locationURI: null
      path: bundle.rb
      scope: null
    - children: *id001
      commandName: Menu Block
      customProperties: null
      displayName: Menu Block
      id: null
      locationURI: null
      path: bundle.rb
      scope: null
    - children: *id001
      commandName: '-'
      customProperties: null
      displayName: '-'
      id: null
      locationURI: null
      path: bundle.rb
      scope: null
    - children: *id001
      commandName: Command
      customProperties: null
      displayName: Command
      id: null
      locationURI: null
      path: bundle.rb
      scope: null
    - children: *id001
      commandName: Snippet
      customProperties: null
      displayName: Snippet
      id: null
      locationURI: null
      path: bundle.rb
      scope: null
    - children: *id001
      commandName: '-'
      customProperties: null
      displayName: '-'
      id: null
      locationURI: null
      path: bundle.rb
      scope: null
    - children: *id001
      commandName: Content Assist Block
      customProperties: null
      displayName: Content Assist Block
      id: null
      locationURI: null
      path: bundle.rb
      scope: null
    - children: *id001
      commandName: With Defaults Block
      customProperties: null
      displayName: With Defaults Block
      id: null
      locationURI: null
      path: bundle.rb
      scope: null
    - children: *id001
      commandName: Environment
      customProperties: null
      displayName: Environment
      id: null
      locationURI: null
      path: bundle.rb
      scope: null
    - children: *id001
      commandName: Smart Typing Pairs Definition
      customProperties: null
      displayName: Smart Typing Pairs Definition
      id: null
      locationURI: null
      path: bundle.rb
      scope: null
    - children: *id001
      commandName: '-'
      customProperties: null
      displayName: '-'
      id: null
      locationURI: null
      path: bundle.rb
      scope: null
    - children: *id001
      commandName: File Template
      customProperties: null
      displayName: File Template
      id: null
      locationURI: null
      path: bundle.rb
      scope: null
    - children: *id001
      commandName: Project Template
      customProperties: null
      displayName: Project Template
      id: null
      locationURI: null
      path: bundle.rb
      scope: null
    commandName: Insert Bundle Section
    customProperties: null
    displayName: Insert Bundle Section
    id: null
    locationURI: null
    path: bundle.rb
    scope: null
  - children: *id001
    commandName: '-'
    customProperties: null
    displayName: '-'
    id: null
    locationURI: null
    path: bundle.rb
    scope: null
  - children: *id001
    commandName: Validate Snippets
    customProperties: null
    displayName: Validate Snippets
    id: null
    locationURI: null
    path: bundle.rb
    scope: null
  commandName: Bundle Development
  customProperties: null
  displayName: Bundle Development
  id: null
  locationURI: null
  path: bundle.rb
  scope: null
- !!com.aptana.scripting.model.CommandElement
  async: false
  customProperties: null
  displayName: Show Active Commands in Scope
  id: null
  input: []
  inputPath: null
  keyBindingMap: null
  menuId: null
  outputPath: null
  outputType: create_new_document
  path: commands\active_scope_commands.rb
  runType: current_thread
  scope: null
  workingDirectoryType: UNDEFINED
- !!com.aptana.scripting.model.CommandElement
  async: false
  customProperties: null
  displayName: Show Active Snippets in Scope
  id: null
  input: []
  inputPath: null
  keyBindingMap: null
  menuId: null
  outputPath: null
  outputType: create_new_document
  path: commands\active_scope_snippets.rb
  runType: current_thread
  scope: null
  workingDirectoryType: UNDEFINED
- !!com.aptana.scripting.model.CommandElement
  async: false
  customProperties: null
  displayName: Show Command Bindings
  id: null
  input: []
  inputPath: null
  keyBindingMap: null
  menuId: null
  outputPath: null
  outputType: create_new_document
  path: commands\command_bindings.rb
  runType: current_thread
  scope: null
  workingDirectoryType: UNDEFINED
- !!com.aptana.scripting.model.CommandElement
  async: false
  customProperties: null
  displayName: Copy Scope
  id: null
  input: [none]
  inputPath: null
  keyBindingMap: null
  menuId: null
  outputPath: null
  outputType: copy_to_clipboard
  path: commands\copy_scope.rb
  runType: current_thread
  scope: null
  workingDirectoryType: UNDEFINED
- !!com.aptana.scripting.model.CommandElement
  async: false
  customProperties: null
  displayName: Show ENV
  id: null
  input: [none]
  inputPath: null
  keyBindingMap: null
  menuId: null
  outputPath: null
  outputType: show_as_tooltip
  path: commands\env.rb
  runType: current_thread
  scope: null
  workingDirectoryType: UNDEFINED
- !!com.aptana.scripting.model.CommandElement
  async: false
  customProperties: null
  displayName: Flush Bundle Caches
  id: null
  input: [none]
  inputPath: null
  keyBindingMap: null
  menuId: null
  outputPath: null
  outputType: show_as_tooltip
  path: commands\flush_cache.rb
  runType: current_thread
  scope: null
  workingDirectoryType: UNDEFINED
- !!com.aptana.scripting.model.CommandElement
  async: false
  customProperties: null
  displayName: 安装新bundle(&B)
  id: null
  input: [none]
  inputPath: null
  keyBindingMap: null
  menuId: null
  outputPath: null
  outputType: undefined
  path: commands\install_bundle.rb
  runType: current_thread
  scope: null
  workingDirectoryType: UNDEFINED
- !!com.aptana.scripting.model.CommandElement
  async: false
  customProperties: null
  displayName: Show Scope
  id: null
  input: [none]
  inputPath: null
  keyBindingMap: null
  menuId: null
  outputPath: null
  outputType: show_as_tooltip
  path: commands\show_scope.rb
  runType: current_thread
  scope: null
  workingDirectoryType: UNDEFINED
- !!com.aptana.scripting.model.CommandElement
  async: false
  customProperties: null
  displayName: Show Scope and Matching Theme Rule
  id: null
  input: [none]
  inputPath: null
  keyBindingMap: null
  menuId: null
  outputPath: null
  outputType: show_as_tooltip
  path: commands\show_theme.rb
  runType: current_thread
  scope: null
  workingDirectoryType: UNDEFINED
- !!com.aptana.scripting.model.CommandElement
  async: false
  customProperties: null
  displayName: Update User Bundles
  id: null
  input: [none]
  inputPath: null
  keyBindingMap: null
  menuId: null
  outputPath: null
  outputType: discard
  path: commands\update.rb
  runType: current_thread
  scope: null
  workingDirectoryType: UNDEFINED
- !!com.aptana.scripting.model.CommandElement
  async: false
  customProperties: null
  displayName: Validate Snippets
  id: null
  input: [none]
  inputPath: null
  keyBindingMap: null
  menuId: null
  outputPath: null
  outputType: create_new_document
  path: commands\validate_snippets.rb
  runType: current_thread
  scope: null
  workingDirectoryType: UNDEFINED
- !!com.aptana.scripting.model.SnippetElement
  async: false
  category: null
  customProperties:
    prefix_values: [sn]
  description: null
  displayName: Snippet
  expansion: "snippet '${1:name}' do |s|\n  s.trigger = '${2:trigger}'\n  s.scope\
    \ = '${3:source.ruby}'\n  s.expansion = \"${4:example}\"\nend"
  iconPath: null
  id: null
  input: [none]
  inputPath: null
  keyBindingMap: null
  locationType: null
  menuId: null
  needApplyReContentAssist: false
  outputPath: null
  outputType: insert_as_snippet
  path: snippets\snippets.rb
  runType: current_thread
  scope: source.ruby
  tags: *id001
  version: null
  workingDirectoryType: UNDEFINED
- !!com.aptana.scripting.model.SnippetElement
  async: false
  category: null
  customProperties:
    prefix_values: [m.]
  description: null
  displayName: Menu Command
  expansion: 'm.command ''${1:command_or_snippet_name}''

    m.$0'
  iconPath: null
  id: null
  input: [none]
  inputPath: null
  keyBindingMap: null
  locationType: null
  menuId: null
  needApplyReContentAssist: false
  outputPath: null
  outputType: insert_as_snippet
  path: snippets\snippets.rb
  runType: current_thread
  scope: source.ruby
  tags: *id001
  version: null
  workingDirectoryType: UNDEFINED
- !!com.aptana.scripting.model.SnippetElement
  async: false
  category: null
  customProperties:
    prefix_values: [m.]
  description: null
  displayName: Menu Separator
  expansion: 'm.separator

    m.$0'
  iconPath: null
  id: null
  input: [none]
  inputPath: null
  keyBindingMap: null
  locationType: null
  menuId: null
  needApplyReContentAssist: false
  outputPath: null
  outputType: insert_as_snippet
  path: snippets\snippets.rb
  runType: current_thread
  scope: source.ruby
  tags: *id001
  version: null
  workingDirectoryType: UNDEFINED
- !!com.aptana.scripting.model.SnippetElement
  async: false
  category: null
  customProperties:
    prefix_values: [m.]
  description: null
  displayName: Menu Block
  expansion: "m.menu '${1:submenu}' do |m|\n  m.$0\nend"
  iconPath: null
  id: null
  input: [none]
  inputPath: null
  keyBindingMap: null
  locationType: null
  menuId: null
  needApplyReContentAssist: false
  outputPath: null
  outputType: insert_as_snippet
  path: snippets\snippets.rb
  runType: current_thread
  scope: source.ruby
  tags: *id001
  version: null
  workingDirectoryType: UNDEFINED
- !!com.aptana.scripting.model.SnippetElement
  async: false
  category: null
  customProperties:
    prefix_values: [co]
  description: null
  displayName: Command
  expansion: "require 'ruble'\n\ncommand '${1:name}' do |cmd|\n  cmd.input = :${2:none/document/selection/word/right_character/left_character/line/clipboard/selected_lines}\n\
    \  cmd.output = :${3:discard/show_as_tooltip/replace_selection/replace_line/replace_word/show_as_html/insert_as_text/insert_as_snippet/create_new_document}\n\
    \  #cmd.key_binding = '${4:CONTROL+SHIFT+E}'\n  cmd.scope = '${5:source.ruby}'\n\
    \  cmd.invoke do |context|\n    # Write your ruby code here. If there's a non-nil\
    \ return value for the block that will be used as output/result value.\n    #\
    \ Otherwise we'll take what was piped to STDOUT\n    nil\n  end\nend"
  iconPath: null
  id: null
  input: [none]
  inputPath: null
  keyBindingMap: null
  locationType: null
  menuId: null
  needApplyReContentAssist: false
  outputPath: null
  outputType: insert_as_snippet
  path: snippets\snippets.rb
  runType: current_thread
  scope: source.ruby
  tags: *id001
  version: null
  workingDirectoryType: UNDEFINED
- !!com.aptana.scripting.model.CommandElement
  async: false
  customProperties:
    prefix_values: [bu]
  displayName: Bundle.rb
  id: null
  input: [none]
  inputPath: null
  keyBindingMap: null
  menuId: null
  outputPath: null
  outputType: insert_as_snippet
  path: snippets\snippets.rb
  runType: current_thread
  scope: source.ruby
  workingDirectoryType: UNDEFINED
- !!com.aptana.scripting.model.SnippetElement
  async: false
  category: null
  customProperties:
    prefix_values: [ca]
  description: null
  displayName: Content Assist Block
  expansion: "require 'ruble'\n\ncontent_assist '${1:name}' do |ca|\n  ca.scope =\
    \ '${2:source.ruby}'\n  ca.invoke do |context|\n    # Write your ruby code here.\
    \ If there's a non-nil return value for the block that will be used as output/result\
    \ value.\n    # Otherwise we'll take what was piped to STDOUT\n    \n    # Content\
    \ Assist is a little odd, it assumes the return value is a string that can be\
    \ eval'd to an \n    # Array of strings or hashes that are the list of completion\
    \ proposals.\n    [${3:'example', 'values'}].inspect\n  end\nend"
  iconPath: null
  id: null
  input: [none]
  inputPath: null
  keyBindingMap: null
  locationType: null
  menuId: null
  needApplyReContentAssist: false
  outputPath: null
  outputType: insert_as_snippet
  path: snippets\snippets.rb
  runType: current_thread
  scope: source.ruby
  tags: *id001
  version: null
  workingDirectoryType: UNDEFINED
- !!com.aptana.scripting.model.SnippetElement
  async: false
  category: null
  customProperties:
    prefix_values: [wi]
  description: null
  displayName: With Defaults Block
  expansion: "with_defaults :${1:scope} => '${2:source.ruby}' do\n  $0\nend"
  iconPath: null
  id: null
  input: [none]
  inputPath: null
  keyBindingMap: null
  locationType: null
  menuId: null
  needApplyReContentAssist: false
  outputPath: null
  outputType: insert_as_snippet
  path: snippets\snippets.rb
  runType: current_thread
  scope: source.ruby
  tags: *id001
  version: null
  workingDirectoryType: UNDEFINED
- !!com.aptana.scripting.model.SnippetElement
  async: false
  category: null
  customProperties:
    prefix_values: [env]
  description: null
  displayName: Environment
  expansion: "env '${1:source.ruby}' do |e|\n  e['${2:TM_COMMENT_START}'] = '${3:#\
    \ }'\nend"
  iconPath: null
  id: null
  input: [none]
  inputPath: null
  keyBindingMap: null
  locationType: null
  menuId: null
  needApplyReContentAssist: false
  outputPath: null
  outputType: insert_as_snippet
  path: snippets\snippets.rb
  runType: current_thread
  scope: source.ruby
  tags: *id001
  version: null
  workingDirectoryType: UNDEFINED
- !!com.aptana.scripting.model.SnippetElement
  async: false
  category: null
  customProperties:
    prefix_values: [stp]
  description: null
  displayName: Smart Typing Pairs Definition
  expansion: smart_typing_pairs['${1:source.ruby}'] = ['${2:"}', '$2']
  iconPath: null
  id: null
  input: [none]
  inputPath: null
  keyBindingMap: null
  locationType: null
  menuId: null
  needApplyReContentAssist: false
  outputPath: null
  outputType: insert_as_snippet
  path: snippets\snippets.rb
  runType: current_thread
  scope: source.ruby
  tags: *id001
  version: null
  workingDirectoryType: UNDEFINED
- !!com.aptana.scripting.model.SnippetElement
  async: false
  category: null
  customProperties:
    prefix_values: [ft]
  description: null
  displayName: File Template
  expansion: "template '${1:name}' do |t|\n  t.filetype = \"*.${2:txt}\"\n  t.invoke\
    \ do |context|\n    raw_contents = IO.read(\"#{ENV['TM_BUNDLE_PATH']}/templates/${3:template.txt}\"\
    )\n    raw_contents.gsub(/\\${([^}]*)}/) {|match| ENV[match[2..-2]] }\n  end\n\
    end"
  iconPath: null
  id: null
  input: [none]
  inputPath: null
  keyBindingMap: null
  locationType: null
  menuId: null
  needApplyReContentAssist: false
  outputPath: null
  outputType: insert_as_snippet
  path: snippets\snippets.rb
  runType: current_thread
  scope: source.ruby
  tags: *id001
  version: null
  workingDirectoryType: UNDEFINED
- !!com.aptana.scripting.model.SnippetElement
  async: false
  category: null
  customProperties:
    prefix_values: [pt]
  description: null
  displayName: Project Template
  expansion: "project_template '${1:name}' do |t|\n  t.type = :${2:name}\n  t.location\
    \ = '${3:relative_path_and_filename.zip}'\n  t.description = '${4:description}'\n\
    \  t.replace_parameters = false\nend"
  iconPath: null
  id: null
  input: [none]
  inputPath: null
  keyBindingMap: null
  locationType: null
  menuId: null
  needApplyReContentAssist: false
  outputPath: null
  outputType: insert_as_snippet
  path: snippets\snippets.rb
  runType: current_thread
  scope: source.ruby
  tags: *id001
  version: null
  workingDirectoryType: UNDEFINED
- !!com.aptana.scripting.model.ProjectTemplateElement
  customProperties: {replace_parameters: true}
  description: A simple Ruble sample
  displayName: Ruble Template
  icon: null
  id: Ruble Template
  location: templates/ruble_template.zip
  natureID: null
  path: templates\template.rb
  priority: 0
  scope: null
  tags: [Ruby]
  type: RUBY
copyright: (C) Copyright 2011 Appcelerator Inc. Distributed under the MIT license.
customProperties: null
decreaseIndentMarkers: &id002 {}
description: A bundle to help develop your own bundles, grab 3rd-party bundles, convert TextMate bundles, and see scope/theme information.
displayName: Bundle Development
fileTypeRegistry: *id002
fileTypes: *id001
foldingStartMarkers: *id002
foldingStopMarkers: *id002
increaseIndentMarkers: *id002
license: null
licenseUrl: null
path: bundle.rb
repository: git://github.com/aptana/bundle-dev.ruble.git
visible: true
