redcar-dev 0.12.17dev
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/CHANGES +664 -0
- data/LICENSE +32 -0
- data/README.md +119 -0
- data/Rakefile +283 -0
- data/bin/redcar +29 -0
- data/lib/redcar.rb +307 -0
- data/lib/redcar/installer.rb +178 -0
- data/lib/redcar/instance_exec.rb +25 -0
- data/lib/redcar/logger.rb +64 -0
- data/lib/redcar/plist.rb +83 -0
- data/lib/redcar/ruby_extensions.rb +201 -0
- data/lib/redcar/runner.rb +130 -0
- data/lib/redcar/usage.rb +42 -0
- data/lib/redcar_quick_start.rb +100 -0
- data/lib/regex_replace.rb +221 -0
- data/lib/tasks/app-bundle.rake +63 -0
- data/plugins/application/features/main_menu.feature +9 -0
- data/plugins/application/features/navigation_history.feature +66 -0
- data/plugins/application/features/step_definitions/command_steps.rb +10 -0
- data/plugins/application/features/step_definitions/dialog_steps.rb +25 -0
- data/plugins/application/features/step_definitions/filter_list_dialog_steps.rb +42 -0
- data/plugins/application/features/step_definitions/key_steps.rb +18 -0
- data/plugins/application/features/step_definitions/menu_steps.rb +42 -0
- data/plugins/application/features/step_definitions/navigation_history_steps.rb +4 -0
- data/plugins/application/features/step_definitions/speedbar_steps.rb +88 -0
- data/plugins/application/features/step_definitions/tree_steps.rb +107 -0
- data/plugins/application/features/step_definitions/window_steps.rb +17 -0
- data/plugins/application/features/support/env.rb +257 -0
- data/plugins/application/features/support/fake_event.rb +26 -0
- data/plugins/application/lib/application.rb +425 -0
- data/plugins/application/lib/application/assets/file.png +0 -0
- data/plugins/application/lib/application/clipboard.rb +95 -0
- data/plugins/application/lib/application/command.rb +108 -0
- data/plugins/application/lib/application/command/executor.rb +80 -0
- data/plugins/application/lib/application/command/history.rb +54 -0
- data/plugins/application/lib/application/commands/application_commands.rb +21 -0
- data/plugins/application/lib/application/commands/notebook_commands.rb +73 -0
- data/plugins/application/lib/application/commands/tab_commands.rb +105 -0
- data/plugins/application/lib/application/commands/treebook_commands.rb +117 -0
- data/plugins/application/lib/application/commands/window_commands.rb +68 -0
- data/plugins/application/lib/application/dialog.rb +170 -0
- data/plugins/application/lib/application/dialogs/filter_list_dialog.rb +123 -0
- data/plugins/application/lib/application/dialogs/modeless_list_dialog.rb +85 -0
- data/plugins/application/lib/application/event_spewer.rb +32 -0
- data/plugins/application/lib/application/keymap.rb +41 -0
- data/plugins/application/lib/application/keymap/builder.rb +23 -0
- data/plugins/application/lib/application/menu.rb +117 -0
- data/plugins/application/lib/application/menu/builder.rb +80 -0
- data/plugins/application/lib/application/menu/builder/group.rb +47 -0
- data/plugins/application/lib/application/menu/item.rb +79 -0
- data/plugins/application/lib/application/menu/lazy_menu.rb +25 -0
- data/plugins/application/lib/application/navigation_history.rb +71 -0
- data/plugins/application/lib/application/notebook.rb +163 -0
- data/plugins/application/lib/application/sensitive.rb +57 -0
- data/plugins/application/lib/application/sensitivity.rb +82 -0
- data/plugins/application/lib/application/speedbar.rb +100 -0
- data/plugins/application/lib/application/tab.rb +92 -0
- data/plugins/application/lib/application/tab/command.rb +5 -0
- data/plugins/application/lib/application/toolbar.rb +83 -0
- data/plugins/application/lib/application/toolbar/builder.rb +80 -0
- data/plugins/application/lib/application/toolbar/builder/group.rb +47 -0
- data/plugins/application/lib/application/toolbar/item.rb +71 -0
- data/plugins/application/lib/application/toolbar/lazy_toolbar.rb +25 -0
- data/plugins/application/lib/application/tree.rb +94 -0
- data/plugins/application/lib/application/tree/command.rb +5 -0
- data/plugins/application/lib/application/tree/controller.rb +64 -0
- data/plugins/application/lib/application/tree/mirror.rb +132 -0
- data/plugins/application/lib/application/treebook.rb +83 -0
- data/plugins/application/lib/application/window.rb +274 -0
- data/plugins/application/plugin.rb +8 -0
- data/plugins/application/spec/application/application_spec.rb +23 -0
- data/plugins/application/spec/application/clipboard_spec.rb +55 -0
- data/plugins/application/spec/application/command/executor_spec.rb +78 -0
- data/plugins/application/spec/application/command/history_spec.rb +49 -0
- data/plugins/application/spec/application/command_spec.rb +78 -0
- data/plugins/application/spec/application/controllers/application_controller.rb +4 -0
- data/plugins/application/spec/application/controllers/notebook_controller.rb +4 -0
- data/plugins/application/spec/application/controllers/window_controller.rb +5 -0
- data/plugins/application/spec/application/keymap/builder_spec.rb +17 -0
- data/plugins/application/spec/application/menu/builder_spec.rb +61 -0
- data/plugins/application/spec/application/menu/menu_item_spec.rb +17 -0
- data/plugins/application/spec/application/menu_spec.rb +171 -0
- data/plugins/application/spec/application/navigation_history_spec.rb +96 -0
- data/plugins/application/spec/application/notebook_spec.rb +31 -0
- data/plugins/application/spec/application/sensitive_spec.rb +156 -0
- data/plugins/application/spec/application/speedbar_spec.rb +77 -0
- data/plugins/application/spec/application/treebook_spec.rb +27 -0
- data/plugins/application/spec/application/window_spec.rb +24 -0
- data/plugins/application/spec/spec_helper.rb +18 -0
- data/plugins/application_swt/build.xml +74 -0
- data/plugins/application_swt/lib/application_swt.rb +218 -0
- data/plugins/application_swt/lib/application_swt/bring_to_front.rb +53 -0
- data/plugins/application_swt/lib/application_swt/clipboard.rb +42 -0
- data/plugins/application_swt/lib/application_swt/dialog_adapter.rb +180 -0
- data/plugins/application_swt/lib/application_swt/dialogs/filter_list_dialog_controller.rb +233 -0
- data/plugins/application_swt/lib/application_swt/dialogs/input_dialog.rb +46 -0
- data/plugins/application_swt/lib/application_swt/dialogs/modeless_dialog.rb +113 -0
- data/plugins/application_swt/lib/application_swt/dialogs/modeless_html_dialog.rb +85 -0
- data/plugins/application_swt/lib/application_swt/dialogs/modeless_list_dialog_controller.rb +143 -0
- data/plugins/application_swt/lib/application_swt/dialogs/no_buttons_dialog.rb +24 -0
- data/plugins/application_swt/lib/application_swt/dialogs/text_and_file_dialog.rb +118 -0
- data/plugins/application_swt/lib/application_swt/gradient.rb +61 -0
- data/plugins/application_swt/lib/application_swt/html_tab.rb +79 -0
- data/plugins/application_swt/lib/application_swt/icon.rb +35 -0
- data/plugins/application_swt/lib/application_swt/listener_helpers.rb +20 -0
- data/plugins/application_swt/lib/application_swt/menu.rb +167 -0
- data/plugins/application_swt/lib/application_swt/menu/binding_translator.rb +94 -0
- data/plugins/application_swt/lib/application_swt/notebook.rb +148 -0
- data/plugins/application_swt/lib/application_swt/notebook/tab_drag_and_drop_listener.rb +124 -0
- data/plugins/application_swt/lib/application_swt/notebook/tab_transfer.rb +83 -0
- data/plugins/application_swt/lib/application_swt/speedbar.rb +185 -0
- data/plugins/application_swt/lib/application_swt/speedbar/button_item.rb +20 -0
- data/plugins/application_swt/lib/application_swt/speedbar/combo_item.rb +55 -0
- data/plugins/application_swt/lib/application_swt/speedbar/label_item.rb +15 -0
- data/plugins/application_swt/lib/application_swt/speedbar/slider_item.rb +32 -0
- data/plugins/application_swt/lib/application_swt/speedbar/text_box_item.rb +36 -0
- data/plugins/application_swt/lib/application_swt/speedbar/toggle_item.rb +29 -0
- data/plugins/application_swt/lib/application_swt/tab.rb +84 -0
- data/plugins/application_swt/lib/application_swt/toolbar.rb +138 -0
- data/plugins/application_swt/lib/application_swt/toolbar/binding_translator.rb +94 -0
- data/plugins/application_swt/lib/application_swt/treebook.rb +78 -0
- data/plugins/application_swt/lib/application_swt/window.rb +419 -0
- data/plugins/application_swt/lib/dist/application_swt.jar +0 -0
- data/plugins/application_swt/lib/swt/graphics_utils.rb +193 -0
- data/plugins/application_swt/lib/swt/vtab_folder.rb +177 -0
- data/plugins/application_swt/lib/swt/vtab_item.rb +78 -0
- data/plugins/application_swt/lib/swt/vtab_label.rb +127 -0
- data/plugins/application_swt/plugin.rb +8 -0
- data/plugins/application_swt/spec/application_swt/gradient_spec.rb +133 -0
- data/plugins/application_swt/spec/application_swt/menu/binding_translator_spec.rb +73 -0
- data/plugins/application_swt/spec/application_swt/menu_spec.rb +7 -0
- data/plugins/application_swt/spec/spec_helper.rb +20 -0
- data/plugins/application_swt/src/com/redcareditor/application_swt/CocoaUIEnhancer.java +313 -0
- data/plugins/auto_completer/features/auto_complete.feature +65 -0
- data/plugins/auto_completer/features/step_definitions/auto_complete_steps.rb +4 -0
- data/plugins/auto_completer/features/support/env.rb +2 -0
- data/plugins/auto_completer/lib/auto_completer.rb +129 -0
- data/plugins/auto_completer/lib/auto_completer/current_document_completion_source.rb +19 -0
- data/plugins/auto_completer/lib/auto_completer/document_controller.rb +52 -0
- data/plugins/auto_completer/lib/auto_completer/list_dialog.rb +21 -0
- data/plugins/auto_completer/lib/auto_completer/word_iterator.rb +48 -0
- data/plugins/auto_completer/lib/auto_completer/word_list.rb +47 -0
- data/plugins/auto_completer/plugin.rb +10 -0
- data/plugins/auto_indenter/features/java_style_indentation.feature +36 -0
- data/plugins/auto_indenter/features/ruby_style_indentation.feature +42 -0
- data/plugins/auto_indenter/features/step_definitions/indentation_steps.rb +15 -0
- data/plugins/auto_indenter/features/support/env.rb +1 -0
- data/plugins/auto_indenter/lib/auto_indenter.rb +108 -0
- data/plugins/auto_indenter/lib/auto_indenter/analyzer.rb +100 -0
- data/plugins/auto_indenter/lib/auto_indenter/commands.rb +66 -0
- data/plugins/auto_indenter/lib/auto_indenter/document_controller.rb +103 -0
- data/plugins/auto_indenter/lib/auto_indenter/rules.rb +41 -0
- data/plugins/auto_indenter/plugin.rb +9 -0
- data/plugins/auto_indenter/spec/auto_indenter/analyzer_spec.rb +151 -0
- data/plugins/auto_indenter/spec/spec_helper.rb +5 -0
- data/plugins/auto_pairer/features/auto_pairer.feature +92 -0
- data/plugins/auto_pairer/features/step_definitions/auto_pairer_steps.rb +0 -0
- data/plugins/auto_pairer/features/support/env.rb +1 -0
- data/plugins/auto_pairer/lib/auto_pairer.rb +12 -0
- data/plugins/auto_pairer/lib/auto_pairer/document_controller.rb +168 -0
- data/plugins/auto_pairer/lib/auto_pairer/pairs_for_scope.rb +57 -0
- data/plugins/auto_pairer/plugin.rb +9 -0
- data/plugins/clipboard-viewer/Screenshot.png +0 -0
- data/plugins/clipboard-viewer/lib/clipboard_viewer.rb +50 -0
- data/plugins/clipboard-viewer/lib/clipboard_viewer/browser_controller.rb +27 -0
- data/plugins/clipboard-viewer/lib/clipboard_viewer/clipboard_bar.rb +67 -0
- data/plugins/clipboard-viewer/plugin.rb +9 -0
- data/plugins/clipboard-viewer/views/clipboard.html.erb +19 -0
- data/plugins/clipboard-viewer/views/default.css +43 -0
- data/plugins/clipboard-viewer/views/redcar_small_icon.png +0 -0
- data/plugins/comment/features/line_comment.feature +249 -0
- data/plugins/comment/features/selection_comment.feature +21 -0
- data/plugins/comment/features/step_definitions/comment_steps.rb +7 -0
- data/plugins/comment/lib/comment.rb +268 -0
- data/plugins/comment/plugin.rb +7 -0
- data/plugins/comment/vendor/comment_lib.json +47 -0
- data/plugins/connection_manager/lib/connection_manager.rb +57 -0
- data/plugins/connection_manager/lib/connection_manager/commands.rb +14 -0
- data/plugins/connection_manager/lib/connection_manager/connection_store.rb +87 -0
- data/plugins/connection_manager/lib/connection_manager/controller.rb +100 -0
- data/plugins/connection_manager/lib/connection_manager/filter_dialog.rb +38 -0
- data/plugins/connection_manager/lib/connection_manager/private_key_store.rb +93 -0
- data/plugins/connection_manager/plugin.rb +12 -0
- data/plugins/connection_manager/views/index.html.erb +284 -0
- data/plugins/core/lib/core.rb +41 -0
- data/plugins/core/lib/core/controller.rb +23 -0
- data/plugins/core/lib/core/gui.rb +100 -0
- data/plugins/core/lib/core/has_spi.rb +10 -0
- data/plugins/core/lib/core/interface.rb +73 -0
- data/plugins/core/lib/core/model.rb +11 -0
- data/plugins/core/lib/core/observable.rb +115 -0
- data/plugins/core/lib/core/observable_struct.rb +34 -0
- data/plugins/core/lib/core/persistent_cache.rb +57 -0
- data/plugins/core/lib/core/plugin.rb +12 -0
- data/plugins/core/lib/core/plugin/storage.rb +133 -0
- data/plugins/core/lib/core/reentry_helpers.rb +13 -0
- data/plugins/core/lib/core/resource.rb +86 -0
- data/plugins/core/lib/core/task.rb +62 -0
- data/plugins/core/lib/core/task_queue.rb +72 -0
- data/plugins/core/plugin.rb +7 -0
- data/plugins/core/spec/core/base_storage_spec.rb +81 -0
- data/plugins/core/spec/core/gui_spec.rb +27 -0
- data/plugins/core/spec/core/observable_spec.rb +104 -0
- data/plugins/core/spec/core/persistent_cache_spec.rb +100 -0
- data/plugins/core/spec/core/resource_spec.rb +125 -0
- data/plugins/core/spec/core/shared_storage_spec.rb +49 -0
- data/plugins/core/spec/core/storage_spec.rb +27 -0
- data/plugins/core/spec/core/task_queue_spec.rb +199 -0
- data/plugins/core/spec/spec_helper.rb +27 -0
- data/plugins/declarations/lib/declarations.rb +159 -0
- data/plugins/declarations/lib/declarations/completion_source.rb +22 -0
- data/plugins/declarations/lib/declarations/file.rb +68 -0
- data/plugins/declarations/lib/declarations/parser.rb +186 -0
- data/plugins/declarations/lib/declarations/select_tag_dialog.rb +45 -0
- data/plugins/declarations/plugin.rb +7 -0
- data/plugins/declarations/spec/declarations/file_spec.rb +62 -0
- data/plugins/declarations/spec/fixtures/federalist.rb +15 -0
- data/plugins/declarations/spec/spec_helper.rb +5 -0
- data/plugins/document_search/Readme.md +14 -0
- data/plugins/document_search/features/find.feature +541 -0
- data/plugins/document_search/features/incremental_search.feature +351 -0
- data/plugins/document_search/features/replace.feature +178 -0
- data/plugins/document_search/features/step_definitions/find_steps.rb +16 -0
- data/plugins/document_search/features/support/env.rb +14 -0
- data/plugins/document_search/lib/document_search.rb +191 -0
- data/plugins/document_search/lib/document_search/commands.rb +307 -0
- data/plugins/document_search/lib/document_search/find_speedbar.rb +162 -0
- data/plugins/document_search/lib/document_search/incremental_search_speedbar.rb +70 -0
- data/plugins/document_search/lib/document_search/query_options.rb +21 -0
- data/plugins/document_search/plugin.rb +8 -0
- data/plugins/edit_view/features/align_assignment.feature +106 -0
- data/plugins/edit_view/features/case_change.feature +67 -0
- data/plugins/edit_view/features/cursor_navigation.feature +36 -0
- data/plugins/edit_view/features/cut_and_paste.feature +45 -0
- data/plugins/edit_view/features/grammar.feature +11 -0
- data/plugins/edit_view/features/indentation_commands.feature +49 -0
- data/plugins/edit_view/features/line_delimiter.feature +47 -0
- data/plugins/edit_view/features/multiple_notebooks.feature +52 -0
- data/plugins/edit_view/features/multiple_windows.feature +48 -0
- data/plugins/edit_view/features/new_tab.feature +11 -0
- data/plugins/edit_view/features/soft_tabs.feature +243 -0
- data/plugins/edit_view/features/sort_lines.feature +15 -0
- data/plugins/edit_view/features/step_definitions/editing_steps.rb +350 -0
- data/plugins/edit_view/features/step_definitions/grammar_steps.rb +4 -0
- data/plugins/edit_view/features/step_definitions/key_steps.rb +48 -0
- data/plugins/edit_view/features/step_definitions/notebook_steps.rb +59 -0
- data/plugins/edit_view/features/step_definitions/tab_steps.rb +113 -0
- data/plugins/edit_view/features/step_definitions/window_steps.rb +86 -0
- data/plugins/edit_view/features/support/env.rb +59 -0
- data/plugins/edit_view/features/switch_tabs.feature +106 -0
- data/plugins/edit_view/features/tabs.feature +146 -0
- data/plugins/edit_view/features/undo_and_redo.feature +73 -0
- data/plugins/edit_view/features/word_matching.feature +67 -0
- data/plugins/edit_view/lib/edit_view.rb +659 -0
- data/plugins/edit_view/lib/edit_view/actions/arrow_keys.rb +170 -0
- data/plugins/edit_view/lib/edit_view/actions/cmd_enter.rb +11 -0
- data/plugins/edit_view/lib/edit_view/actions/deletion.rb +40 -0
- data/plugins/edit_view/lib/edit_view/actions/esc.rb +15 -0
- data/plugins/edit_view/lib/edit_view/actions/tab.rb +70 -0
- data/plugins/edit_view/lib/edit_view/command.rb +14 -0
- data/plugins/edit_view/lib/edit_view/commands/align_assignment_command.rb +55 -0
- data/plugins/edit_view/lib/edit_view/commands/text_conversion_commands.rb +85 -0
- data/plugins/edit_view/lib/edit_view/document.rb +796 -0
- data/plugins/edit_view/lib/edit_view/document/command.rb +25 -0
- data/plugins/edit_view/lib/edit_view/document/controller.rb +43 -0
- data/plugins/edit_view/lib/edit_view/document/history.rb +41 -0
- data/plugins/edit_view/lib/edit_view/document/indentation.rb +40 -0
- data/plugins/edit_view/lib/edit_view/document/mirror.rb +42 -0
- data/plugins/edit_view/lib/edit_view/edit_tab.rb +59 -0
- data/plugins/edit_view/lib/edit_view/grammar.rb +58 -0
- data/plugins/edit_view/lib/edit_view/grammars/default.rb +10 -0
- data/plugins/edit_view/lib/edit_view/grammars/ruby.rb +10 -0
- data/plugins/edit_view/lib/edit_view/grammars/ruby_on_rails.rb +7 -0
- data/plugins/edit_view/lib/edit_view/info_speedbar.rb +98 -0
- data/plugins/edit_view/lib/edit_view/modified_tabs_checker.rb +35 -0
- data/plugins/edit_view/lib/edit_view/select_font_dialog.rb +45 -0
- data/plugins/edit_view/lib/edit_view/select_theme_dialog.rb +42 -0
- data/plugins/edit_view/lib/edit_view/tab_settings.rb +135 -0
- data/plugins/edit_view/plugin.rb +9 -0
- data/plugins/edit_view/spec/edit_view/document/indentation_spec.rb +112 -0
- data/plugins/edit_view/spec/edit_view/document_spec.rb +130 -0
- data/plugins/edit_view/spec/spec_helper.rb +5 -0
- data/plugins/edit_view_swt/lib/edit_view_swt.rb +621 -0
- data/plugins/edit_view_swt/lib/edit_view_swt/document.rb +224 -0
- data/plugins/edit_view_swt/lib/edit_view_swt/edit_tab.rb +50 -0
- data/plugins/edit_view_swt/lib/edit_view_swt/word_movement.rb +68 -0
- data/plugins/edit_view_swt/plugin.rb +9 -0
- data/plugins/edit_view_swt/spec/edit_view_swt/word_movement_spec.rb +29 -0
- data/plugins/edit_view_swt/spec/spec_helper.rb +5 -0
- data/plugins/encryption/encryption.rb +52 -0
- data/plugins/encryption/ezcrypto.rb +652 -0
- data/plugins/encryption/jarmor-1.1.jar +0 -0
- data/plugins/encryption/plugin.rb +9 -0
- data/plugins/execute_current_tab/lib/execute_current_tab.rb +68 -0
- data/plugins/execute_current_tab/plugin.rb +8 -0
- data/plugins/help/lib/help.rb +64 -0
- data/plugins/help/lib/help/help_tab.rb +11 -0
- data/plugins/help/lib/help/view_controller.rb +30 -0
- data/plugins/help/plugin.rb +9 -0
- data/plugins/help/views/default.css +31 -0
- data/plugins/help/views/index.html.erb +41 -0
- data/plugins/help/views/redcar_small_icon.png +0 -0
- data/plugins/html_view/assets/blueprint/ie.css +35 -0
- data/plugins/html_view/assets/blueprint/print.css +29 -0
- data/plugins/html_view/assets/blueprint/screen.css +257 -0
- data/plugins/html_view/assets/blueprint/src/forms.css +65 -0
- data/plugins/html_view/assets/blueprint/src/grid.css +281 -0
- data/plugins/html_view/assets/blueprint/src/grid.png +0 -0
- data/plugins/html_view/assets/blueprint/src/ie.css +76 -0
- data/plugins/html_view/assets/blueprint/src/print.css +85 -0
- data/plugins/html_view/assets/blueprint/src/reset.css +38 -0
- data/plugins/html_view/assets/blueprint/src/typography.css +106 -0
- data/plugins/html_view/assets/jquery-1.4.min.js +151 -0
- data/plugins/html_view/assets/json2.js +476 -0
- data/plugins/html_view/assets/redcar.css +44 -0
- data/plugins/html_view/features/browser_bar.feature +47 -0
- data/plugins/html_view/features/fixtures/other.html +1 -0
- data/plugins/html_view/features/fixtures/sample.html +1 -0
- data/plugins/html_view/features/step_definitions/html_view_steps.rb +64 -0
- data/plugins/html_view/features/step_definitions/web_view_steps.rb +12 -0
- data/plugins/html_view/features/support/env.rb +27 -0
- data/plugins/html_view/features/web_preview.feature +21 -0
- data/plugins/html_view/lib/html_controller.rb +50 -0
- data/plugins/html_view/lib/html_view.rb +170 -0
- data/plugins/html_view/lib/html_view/browser_bar.rb +82 -0
- data/plugins/html_view/lib/html_view/commands.rb +64 -0
- data/plugins/html_view/lib/html_view/default_controller.rb +23 -0
- data/plugins/html_view/lib/html_view/html_tab.rb +40 -0
- data/plugins/html_view/plugin.rb +13 -0
- data/plugins/html_view/views/default.css +117 -0
- data/plugins/html_view/views/index.html.erb +5 -0
- data/plugins/html_view/views/watermark-48.png +0 -0
- data/plugins/java/features/fixtures/lib/classes.jar +0 -0
- data/plugins/java/features/fixtures/test.java +0 -0
- data/plugins/java/features/support/env.rb +27 -0
- data/plugins/java/features/syntax_check_java.feature +86 -0
- data/plugins/java/lib/syntax_check/java.rb +86 -0
- data/plugins/java/plugin.rb +7 -0
- data/plugins/key_bindings/lib/key_bindings.rb +34 -0
- data/plugins/key_bindings/plugin.rb +8 -0
- data/plugins/key_bindings/spec/spec_helper.rb +5 -0
- data/plugins/line_tools/features/clear_line.feature +25 -0
- data/plugins/line_tools/features/kill_line.feature +25 -0
- data/plugins/line_tools/features/lower_text.feature +54 -0
- data/plugins/line_tools/features/raise_text.feature +50 -0
- data/plugins/line_tools/features/replace_line.feature +33 -0
- data/plugins/line_tools/features/step_definitions/line_tools_steps.rb +23 -0
- data/plugins/line_tools/features/support/env.rb +0 -0
- data/plugins/line_tools/features/trim_line.feature +73 -0
- data/plugins/line_tools/lib/line_tools.rb +217 -0
- data/plugins/line_tools/plugin.rb +9 -0
- data/plugins/macros/features/block_selection_in_macros.feature +48 -0
- data/plugins/macros/features/predictive_macros.feature +79 -0
- data/plugins/macros/features/record_and_run_macro.feature +87 -0
- data/plugins/macros/features/step_definitions/macro_steps.rb +11 -0
- data/plugins/macros/features/step_definitions/prediction_steps.rb +8 -0
- data/plugins/macros/features/support/env.rb +0 -0
- data/plugins/macros/lib/macros.rb +167 -0
- data/plugins/macros/lib/macros/action_sequence.rb +30 -0
- data/plugins/macros/lib/macros/commands.rb +108 -0
- data/plugins/macros/lib/macros/macro.rb +37 -0
- data/plugins/macros/lib/macros/manager_controller.rb +67 -0
- data/plugins/macros/lib/macros/predictive/document_controller.rb +69 -0
- data/plugins/macros/lib/macros/predictive/sequence_finder.rb +112 -0
- data/plugins/macros/plugin.rb +9 -0
- data/plugins/macros/spec/macros/predictive/sequence_finder_spec.rb +142 -0
- data/plugins/macros/spec/spec_helper.rb +6 -0
- data/plugins/macros/views/macro_manager.html.erb +92 -0
- data/plugins/my_plugin/lib/my_plugin.rb +47 -0
- data/plugins/my_plugin/plugin.rb +8 -0
- data/plugins/open_default_app/lib/open_default_app.rb +61 -0
- data/plugins/open_default_app/plugin.rb +8 -0
- data/plugins/open_default_app/screenshot.png +0 -0
- data/plugins/outline_view/features/outline_view.feature +79 -0
- data/plugins/outline_view/features/step_definitions/outline_steps.rb +45 -0
- data/plugins/outline_view/lib/outline_view.rb +66 -0
- data/plugins/outline_view/lib/outline_view/commands.rb +13 -0
- data/plugins/outline_view/plugin.rb +10 -0
- data/plugins/outline_view/spec/fixtures/some_project/javascript.js +10 -0
- data/plugins/outline_view/spec/fixtures/some_project/nothing_to_see.rb +0 -0
- data/plugins/outline_view/spec/fixtures/some_project/one_lonely_class.rb +2 -0
- data/plugins/outline_view/spec/fixtures/some_project/similar_names.rb +18 -0
- data/plugins/outline_view/spec/fixtures/some_project/something_fancy.rb +736 -0
- data/plugins/outline_view/spec/fixtures/some_project/trailing_space.rb +5 -0
- data/plugins/outline_view_swt/lib/outline_view_swt.rb +79 -0
- data/plugins/outline_view_swt/plugin.rb +7 -0
- data/plugins/pair_highlighter/lib/pair_highlighter.rb +34 -0
- data/plugins/pair_highlighter/lib/pair_highlighter/document_controller.rb +185 -0
- data/plugins/pair_highlighter/plugin.rb +9 -0
- data/plugins/plugin_manager_ui/lib/plugin_manager_ui.rb +122 -0
- data/plugins/plugin_manager_ui/plugin.rb +13 -0
- data/plugins/plugin_manager_ui/views/index.html.erb +62 -0
- data/plugins/project/features/close_directory_tree.feature +28 -0
- data/plugins/project/features/find_file.feature +119 -0
- data/plugins/project/features/highlight_focussed_tab.feature +53 -0
- data/plugins/project/features/move_and_rename_files.feature +25 -0
- data/plugins/project/features/open_and_save_files.feature +85 -0
- data/plugins/project/features/open_directory_tree.feature +93 -0
- data/plugins/project/features/refresh_directory_tree.feature +44 -0
- data/plugins/project/features/step_definitions/directory_steps.rb +35 -0
- data/plugins/project/features/step_definitions/drb_steps.rb +40 -0
- data/plugins/project/features/step_definitions/file_steps.rb +66 -0
- data/plugins/project/features/step_definitions/find_file_steps.rb +7 -0
- data/plugins/project/features/step_definitions/project_tree_steps.rb +7 -0
- data/plugins/project/features/sub_project.feature +15 -0
- data/plugins/project/features/support/env.rb +35 -0
- data/plugins/project/features/watch_for_modified_files.feature +109 -0
- data/plugins/project/lib/project.rb +266 -0
- data/plugins/project/lib/project/adapters/local.rb +82 -0
- data/plugins/project/lib/project/adapters/remote.rb +96 -0
- data/plugins/project/lib/project/adapters/remote_protocols/ftp.rb +93 -0
- data/plugins/project/lib/project/adapters/remote_protocols/protocol.rb +94 -0
- data/plugins/project/lib/project/adapters/remote_protocols/sftp.rb +181 -0
- data/plugins/project/lib/project/commands.rb +449 -0
- data/plugins/project/lib/project/dir_controller.rb +275 -0
- data/plugins/project/lib/project/dir_mirror.rb +176 -0
- data/plugins/project/lib/project/drb_service.rb +86 -0
- data/plugins/project/lib/project/file_list.rb +164 -0
- data/plugins/project/lib/project/file_mirror.rb +85 -0
- data/plugins/project/lib/project/find_file_dialog.rb +118 -0
- data/plugins/project/lib/project/find_recent_dialog.rb +30 -0
- data/plugins/project/lib/project/manager.rb +545 -0
- data/plugins/project/lib/project/project_tree_controller.rb +24 -0
- data/plugins/project/lib/project/recent.rb +64 -0
- data/plugins/project/lib/project/sub_project.rb +17 -0
- data/plugins/project/lib/project/support/recycle.js +2 -0
- data/plugins/project/lib/project/support/trash.rb +73 -0
- data/plugins/project/plugin.rb +11 -0
- data/plugins/project/spec/fixture_helper.rb +30 -0
- data/plugins/project/spec/project/adapters/remote_protocols/ftp_spec.rb +75 -0
- data/plugins/project/spec/project/adapters/remote_protocols/sftp_spec.rb +121 -0
- data/plugins/project/spec/project/adapters/remote_spec.rb +136 -0
- data/plugins/project/spec/project/dir_mirror_spec.rb +65 -0
- data/plugins/project/spec/project/file_list_spec.rb +151 -0
- data/plugins/project/spec/project/file_mirror_spec.rb +97 -0
- data/plugins/project/spec/spec_helper.rb +26 -0
- data/plugins/project/views/bulk_rename.html.erb +162 -0
- data/plugins/project_search/features/support/env.rb +6 -0
- data/plugins/project_search/features/word_search.feature +34 -0
- data/plugins/project_search/lib/project_search.rb +82 -0
- data/plugins/project_search/lib/project_search/binary_data_detector.rb +46 -0
- data/plugins/project_search/lib/project_search/commands.rb +50 -0
- data/plugins/project_search/lib/project_search/hit.rb +21 -0
- data/plugins/project_search/lib/project_search/images/spinner.gif +0 -0
- data/plugins/project_search/lib/project_search/lucene_index.rb +81 -0
- data/plugins/project_search/lib/project_search/lucene_refresh.rb +22 -0
- data/plugins/project_search/lib/project_search/project.rb +14 -0
- data/plugins/project_search/lib/project_search/query.rb +29 -0
- data/plugins/project_search/lib/project_search/stylesheets/style.css +279 -0
- data/plugins/project_search/lib/project_search/views/_file.html.erb +58 -0
- data/plugins/project_search/lib/project_search/views/index.html.erb +156 -0
- data/plugins/project_search/lib/project_search/word_search.rb +143 -0
- data/plugins/project_search/lib/project_search/word_search_controller.rb +219 -0
- data/plugins/project_search/plugin.rb +8 -0
- data/plugins/project_search/spec/fixtures/project/binary_file.bin +0 -0
- data/plugins/project_search/spec/fixtures/project/foo.txt +43 -0
- data/plugins/project_search/spec/fixtures/project/qux.rb +3 -0
- data/plugins/project_search/spec/project_search/binary_data_detector_spec.rb +24 -0
- data/plugins/project_search/spec/project_search/word_search_spec.rb +157 -0
- data/plugins/project_search/spec/spec_helper.rb +27 -0
- data/plugins/redcar/features/alter_font_size.feature +26 -0
- data/plugins/redcar/features/goto_line_command.feature +20 -0
- data/plugins/redcar/features/step_definitions/env.rb +5 -0
- data/plugins/redcar/features/step_definitions/font_steps.rb +34 -0
- data/plugins/redcar/features/text_editing.feature +34 -0
- data/plugins/redcar/features/text_navigation.feature +30 -0
- data/plugins/redcar/plugin.rb +17 -0
- data/plugins/redcar/redcar.rb +1097 -0
- data/plugins/redcar_debug/lib/redcar_debug.rb +91 -0
- data/plugins/redcar_debug/plugin.rb +8 -0
- data/plugins/redcar_debug/views/history.html.erb +34 -0
- data/plugins/redcar_debug/views/index.html.erb +36 -0
- data/plugins/repl/features/command_editing.feature +55 -0
- data/plugins/repl/features/command_history.feature +75 -0
- data/plugins/repl/features/step_definitions/repl_steps.rb +19 -0
- data/plugins/repl/features/support/env.rb +24 -0
- data/plugins/repl/features/support/fake_repl.rb +16 -0
- data/plugins/repl/lib/repl.rb +40 -0
- data/plugins/repl/lib/repl/repl_command.rb +20 -0
- data/plugins/repl/lib/repl/repl_mirror.rb +255 -0
- data/plugins/repl/lib/repl/repl_tab.rb +154 -0
- data/plugins/repl/plugin.rb +8 -0
- data/plugins/repl/spec/repl/repl_mirror_spec.rb +72 -0
- data/plugins/repl/spec/spec_helper.rb +5 -0
- data/plugins/repl_swt/lib/repl_swt.rb +7 -0
- data/plugins/repl_swt/lib/repl_swt/key_listener.rb +43 -0
- data/plugins/repl_swt/plugin.rb +8 -0
- data/plugins/ruby/features/fixtures/test.rb +0 -0
- data/plugins/ruby/features/support/env.rb +4 -0
- data/plugins/ruby/features/syntax_check_ruby.feature +26 -0
- data/plugins/ruby/lib/ruby.rb +35 -0
- data/plugins/ruby/lib/ruby/repl_mirror.rb +46 -0
- data/plugins/ruby/lib/ruby/syntax_checker.rb +30 -0
- data/plugins/ruby/plugin.rb +8 -0
- data/plugins/ruby/spec/ruby/repl_mirror_spec.rb +202 -0
- data/plugins/ruby/spec/spec_helper.rb +5 -0
- data/plugins/runnables/features/command_tree.feature +63 -0
- data/plugins/runnables/features/file_runner_input.feature +21 -0
- data/plugins/runnables/features/parameter_input.feature +43 -0
- data/plugins/runnables/features/run_alternate_command.feature +15 -0
- data/plugins/runnables/features/run_command_tab.feature +47 -0
- data/plugins/runnables/features/step_definitions/runnable_steps.rb +28 -0
- data/plugins/runnables/features/support/env.rb +124 -0
- data/plugins/runnables/lib/runnables.rb +180 -0
- data/plugins/runnables/lib/runnables/command_output_controller.rb +183 -0
- data/plugins/runnables/lib/runnables/commands.rb +82 -0
- data/plugins/runnables/lib/runnables/output_processor.rb +74 -0
- data/plugins/runnables/lib/runnables/running_process_checker.rb +34 -0
- data/plugins/runnables/lib/runnables/tree_mirror/nodes/runnable.rb +62 -0
- data/plugins/runnables/lib/runnables/tree_mirror/nodes/runnable_group.rb +45 -0
- data/plugins/runnables/lib/runnables/tree_mirror/nodes/runnable_type_group.rb +30 -0
- data/plugins/runnables/lib/runnables/tree_mirror/tree_controller.rb +36 -0
- data/plugins/runnables/lib/runnables/tree_mirror/tree_mirror.rb +66 -0
- data/plugins/runnables/plugin.rb +9 -0
- data/plugins/runnables/spec/runnables/output_processor_spec.rb +57 -0
- data/plugins/runnables/spec/spec_helper.rb +5 -0
- data/plugins/runnables/views/basic_ansi.css +34 -0
- data/plugins/runnables/views/color_tester.html +50 -0
- data/plugins/runnables/views/command_output.html.erb +32 -0
- data/plugins/runnables/views/default.css +79 -0
- data/plugins/runnables/views/indicator.gif +0 -0
- data/plugins/runnables/views/redcar_small_icon.png +0 -0
- data/plugins/runnables/views/reset.css +53 -0
- data/plugins/runnables/views/running_test.html +41 -0
- data/plugins/runnables/views/wedgeDown.png +0 -0
- data/plugins/runnables/views/wedgeRight.png +0 -0
- data/plugins/scm/lib/scm.rb +296 -0
- data/plugins/scm/lib/scm/commands.rb +48 -0
- data/plugins/scm/lib/scm/commit_mirror.rb +72 -0
- data/plugins/scm/lib/scm/diff_mirror.rb +31 -0
- data/plugins/scm/lib/scm/errors.rb +8 -0
- data/plugins/scm/lib/scm/model.rb +275 -0
- data/plugins/scm/lib/scm/scm_changes_controller.rb +107 -0
- data/plugins/scm/lib/scm/scm_changes_mirror.rb +51 -0
- data/plugins/scm/lib/scm/scm_changes_mirror/change.rb +63 -0
- data/plugins/scm/lib/scm/scm_changes_mirror/changes_node.rb +47 -0
- data/plugins/scm/lib/scm/scm_changes_mirror/drag_controller.rb +78 -0
- data/plugins/scm/lib/scm/scm_commits_controller.rb +49 -0
- data/plugins/scm/lib/scm/scm_commits_mirror.rb +36 -0
- data/plugins/scm/lib/scm/scm_commits_mirror/commit.rb +26 -0
- data/plugins/scm/lib/scm/scm_commits_mirror/commits_node.rb +38 -0
- data/plugins/scm/plugin.rb +8 -0
- data/plugins/scm/spec/spec_helper.rb +5 -0
- data/plugins/scm_git/lib/scm_git.rb +543 -0
- data/plugins/scm_git/lib/scm_git/change.rb +137 -0
- data/plugins/scm_git/lib/scm_git/commit.rb +18 -0
- data/plugins/scm_git/lib/scm_git/config_file.rb +31 -0
- data/plugins/scm_git/plugin.rb +7 -0
- data/plugins/scm_hg/lib/scm_hg.rb +30 -0
- data/plugins/scm_hg/plugin.rb +7 -0
- data/plugins/scm_svn/LICENSE +48 -0
- data/plugins/scm_svn/features/add_and_commit.feature +18 -0
- data/plugins/scm_svn/features/checkout.feature +5 -0
- data/plugins/scm_svn/features/edit_and_index.feature +12 -0
- data/plugins/scm_svn/features/ignore_files.feature +14 -0
- data/plugins/scm_svn/features/merge.feature +34 -0
- data/plugins/scm_svn/features/resolve_conflict.feature +23 -0
- data/plugins/scm_svn/features/revert_and_delete.feature +21 -0
- data/plugins/scm_svn/features/step_definitions/branch_and_merge_steps.rb +27 -0
- data/plugins/scm_svn/features/step_definitions/checkout_steps.rb +25 -0
- data/plugins/scm_svn/features/step_definitions/edit_and_index_steps.rb +50 -0
- data/plugins/scm_svn/features/step_definitions/scm_svn_steps.rb +57 -0
- data/plugins/scm_svn/features/support/env.rb +71 -0
- data/plugins/scm_svn/features/switch_branches.feature +53 -0
- data/plugins/scm_svn/features/update.feature +16 -0
- data/plugins/scm_svn/lib/scm_svn.rb +445 -0
- data/plugins/scm_svn/lib/scm_svn/change.rb +116 -0
- data/plugins/scm_svn/plugin.rb +7 -0
- data/plugins/snippets/features/snippet_indenting.feature +87 -0
- data/plugins/snippets/features/snippets.feature +398 -0
- data/plugins/snippets/features/step_definitions/snippet_steps.rb +16 -0
- data/plugins/snippets/features/support/env.rb +1 -0
- data/plugins/snippets/lib/snippets.rb +111 -0
- data/plugins/snippets/lib/snippets/document_controller.rb +591 -0
- data/plugins/snippets/lib/snippets/explorer.rb +48 -0
- data/plugins/snippets/lib/snippets/tab_handler.rb +117 -0
- data/plugins/snippets/plugin.rb +9 -0
- data/plugins/splash_screen/plugin.rb +8 -0
- data/plugins/splash_screen/splash_screen.rb +62 -0
- data/plugins/strip_trailing_spaces/features/fixtures/test.txt +3 -0
- data/plugins/strip_trailing_spaces/features/strip_trailing_spaces.feature +34 -0
- data/plugins/strip_trailing_spaces/lib/strip_trailing_spaces.rb +60 -0
- data/plugins/strip_trailing_spaces/plugin.rb +8 -0
- data/plugins/syntax_check/README +6 -0
- data/plugins/syntax_check/features/step_definitions/syntax_check_steps.rb +11 -0
- data/plugins/syntax_check/features/support/env.rb +3 -0
- data/plugins/syntax_check/lib/syntax_check.rb +100 -0
- data/plugins/syntax_check/lib/syntax_check/annotation.rb +61 -0
- data/plugins/syntax_check/lib/syntax_check/checker.rb +47 -0
- data/plugins/syntax_check/lib/syntax_check/error.rb +24 -0
- data/plugins/syntax_check/plugin.rb +7 -0
- data/plugins/task_manager/lib/task_manager.rb +30 -0
- data/plugins/task_manager/plugin.rb +11 -0
- data/plugins/task_manager/views/index.html.erb +70 -0
- data/plugins/test_runner/lib/test_runner.rb +40 -0
- data/plugins/test_runner/lib/test_runner/jasmine_test_runner.rb +15 -0
- data/plugins/test_runner/lib/test_runner/rspec_runner.rb +20 -0
- data/plugins/test_runner/lib/test_runner/run_test_command.rb +63 -0
- data/plugins/test_runner/lib/test_runner/runnable_test_runner.rb +42 -0
- data/plugins/test_runner/plugin.rb +8 -0
- data/plugins/test_runner/spec/run_test_command_spec.rb +51 -0
- data/plugins/test_runner/spec/spec_helper.rb +5 -0
- data/plugins/textmate/features/bundle_tree.feature +23 -0
- data/plugins/textmate/features/step_definitions/tree_steps.rb +57 -0
- data/plugins/textmate/features/support/env.rb +19 -0
- data/plugins/textmate/features/support/test_bundle.tmbundle/Snippets/If.tmSnippet +18 -0
- data/plugins/textmate/features/support/test_bundle.tmbundle/Snippets/If__Else.tmSnippet +20 -0
- data/plugins/textmate/features/support/test_bundle.tmbundle/Snippets/Include.tmSnippet +16 -0
- data/plugins/textmate/features/support/test_bundle.tmbundle/Snippets/Loop.tmSnippet +18 -0
- data/plugins/textmate/features/support/test_bundle.tmbundle/Snippets/Unless.tmSnippet +18 -0
- data/plugins/textmate/features/support/test_bundle.tmbundle/Snippets/Var.tmSnippet +16 -0
- data/plugins/textmate/features/support/test_bundle.tmbundle/Snippets/next_If__Else.tmSnippet +20 -0
- data/plugins/textmate/features/support/test_bundle.tmbundle/info.plist +26 -0
- data/plugins/textmate/lib/textmate.rb +202 -0
- data/plugins/textmate/lib/textmate/bundle.rb +100 -0
- data/plugins/textmate/lib/textmate/commands.rb +79 -0
- data/plugins/textmate/lib/textmate/environment.rb +76 -0
- data/plugins/textmate/lib/textmate/plist.rb +80 -0
- data/plugins/textmate/lib/textmate/preference.rb +125 -0
- data/plugins/textmate/lib/textmate/snippet.rb +47 -0
- data/plugins/textmate/lib/textmate/tree_mirror.rb +206 -0
- data/plugins/textmate/plugin.rb +8 -0
- data/plugins/textmate/views/installed_bundles.html.erb +24 -0
- data/plugins/todo_list/README.md +22 -0
- data/plugins/todo_list/features/support/env.rb +8 -0
- data/plugins/todo_list/features/todo_list.feature +26 -0
- data/plugins/todo_list/lib/todo_list.rb +49 -0
- data/plugins/todo_list/lib/todo_list/file_parser.rb +58 -0
- data/plugins/todo_list/lib/todo_list/todo_controller.rb +99 -0
- data/plugins/todo_list/plugin.rb +11 -0
- data/plugins/todo_list/spec/fixtures/project/FIXME.file +3 -0
- data/plugins/todo_list/spec/fixtures/project/NOTE.ignored.file +1 -0
- data/plugins/todo_list/spec/fixtures/project/OPTIMIZE_colon.file +1 -0
- data/plugins/todo_list/spec/fixtures/project/XXX.ignored +1 -0
- data/plugins/todo_list/spec/fixtures/project/ignored_directory/TODO.file +2 -0
- data/plugins/todo_list/spec/fixtures/settings.rb +11 -0
- data/plugins/todo_list/spec/spec_helper.rb +6 -0
- data/plugins/todo_list/spec/todo_list/file_parser_spec.rb +35 -0
- data/plugins/todo_list/views/default.css +15 -0
- data/plugins/todo_list/views/index.html.erb +19 -0
- data/plugins/todo_list/views/redcar_small_icon.png +0 -0
- data/plugins/tree_view_swt/lib/tree_view_swt.rb +496 -0
- data/plugins/tree_view_swt/plugin.rb +9 -0
- data/plugins/web_bookmarks/Screenshot.png +0 -0
- data/plugins/web_bookmarks/features/bookmark.feature +37 -0
- data/plugins/web_bookmarks/features/fixtures/other.html +1 -0
- data/plugins/web_bookmarks/features/fixtures/sample.html +1 -0
- data/plugins/web_bookmarks/features/step_definitions/web_steps.rb +4 -0
- data/plugins/web_bookmarks/features/support/env.rb +26 -0
- data/plugins/web_bookmarks/lib/web_bookmarks.rb +49 -0
- data/plugins/web_bookmarks/lib/web_bookmarks/bookmark.rb +52 -0
- data/plugins/web_bookmarks/lib/web_bookmarks/commands.rb +65 -0
- data/plugins/web_bookmarks/lib/web_bookmarks/tree.rb +74 -0
- data/plugins/web_bookmarks/plugin.rb +10 -0
- metadata +937 -0
|
@@ -0,0 +1,91 @@
|
|
|
1
|
+
|
|
2
|
+
module Redcar
|
|
3
|
+
class Debug
|
|
4
|
+
def self.menus
|
|
5
|
+
Menu::Builder.build do
|
|
6
|
+
sub_menu "Debug" do
|
|
7
|
+
group(:priority => 30) do
|
|
8
|
+
item "Command History", Debug::OpenHistoryCommand
|
|
9
|
+
sub_menu "Profile" do
|
|
10
|
+
item "Start Profiling", Debug::StartProfilingCommand
|
|
11
|
+
item "Stop Profiling", Debug::StopProfilingCommand
|
|
12
|
+
separator
|
|
13
|
+
item "Show Call Graph", Debug::ShowCallGraphCommand
|
|
14
|
+
item "Show Call Tree", Debug::ShowCallTreeCommand
|
|
15
|
+
end
|
|
16
|
+
end
|
|
17
|
+
end
|
|
18
|
+
end
|
|
19
|
+
end
|
|
20
|
+
|
|
21
|
+
def self.loaded
|
|
22
|
+
if ARGV.include?('--profile')
|
|
23
|
+
# #run causes errors since we're still loading.
|
|
24
|
+
StartProfilingCommand.new.execute
|
|
25
|
+
end
|
|
26
|
+
end
|
|
27
|
+
|
|
28
|
+
class << self
|
|
29
|
+
attr_accessor :profiling_result
|
|
30
|
+
end
|
|
31
|
+
|
|
32
|
+
class StartProfilingCommand < Redcar::Command
|
|
33
|
+
def execute
|
|
34
|
+
$:.unshift(File.dirname(__FILE__) + '/../vendor/jruby-prof/lib/')
|
|
35
|
+
require 'jruby-prof'
|
|
36
|
+
JRubyProf.start
|
|
37
|
+
end
|
|
38
|
+
end
|
|
39
|
+
|
|
40
|
+
class StopProfilingCommand < Redcar::Command
|
|
41
|
+
def execute
|
|
42
|
+
Debug.profiling_result = JRubyProf.stop
|
|
43
|
+
end
|
|
44
|
+
end
|
|
45
|
+
|
|
46
|
+
class ShowCallGraphCommand < Redcar::Command
|
|
47
|
+
def execute
|
|
48
|
+
path = Redcar.user_dir + "/profile_output.html"
|
|
49
|
+
JRubyProf.print_graph_html(Debug.profiling_result, path)
|
|
50
|
+
tab = win.new_tab(ConfigTab)
|
|
51
|
+
tab.html_view.contents = File.read(path)
|
|
52
|
+
tab.focus
|
|
53
|
+
FileUtils.rm_f(path)
|
|
54
|
+
end
|
|
55
|
+
end
|
|
56
|
+
|
|
57
|
+
class ShowCallTreeCommand < Redcar::Command
|
|
58
|
+
def execute
|
|
59
|
+
path = Redcar.user_dir + "/profile_output.html"
|
|
60
|
+
JRubyProf.print_tree_html(Debug.profiling_result, path)
|
|
61
|
+
tab = win.new_tab(ConfigTab)
|
|
62
|
+
tab.html_view.contents = File.read(path)
|
|
63
|
+
tab.focus
|
|
64
|
+
FileUtils.rm_f(path)
|
|
65
|
+
end
|
|
66
|
+
end
|
|
67
|
+
|
|
68
|
+
class OpenHistoryCommand < Redcar::Command
|
|
69
|
+
|
|
70
|
+
def execute
|
|
71
|
+
controller = Controller.new
|
|
72
|
+
tab = win.new_tab(ConfigTab)
|
|
73
|
+
tab.html_view.controller = controller
|
|
74
|
+
tab.focus
|
|
75
|
+
end
|
|
76
|
+
|
|
77
|
+
class Controller
|
|
78
|
+
include Redcar::HtmlController
|
|
79
|
+
|
|
80
|
+
def title
|
|
81
|
+
"History"
|
|
82
|
+
end
|
|
83
|
+
|
|
84
|
+
def index
|
|
85
|
+
rhtml = ERB.new(File.read(File.join(File.dirname(__FILE__), "..", "views", "history.html.erb")))
|
|
86
|
+
rhtml.result(binding)
|
|
87
|
+
end
|
|
88
|
+
end
|
|
89
|
+
end
|
|
90
|
+
end
|
|
91
|
+
end
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
<% watermark = File.expand_path(File.join(Redcar.root, %w(plugins html_view views watermark-48.png))) %>
|
|
2
|
+
<% redcar_css = File.expand_path(File.join(Redcar.root, %w(plugins html_view views default.css))) %>
|
|
3
|
+
<link rel="stylesheet" href="file://<%= redcar_css %>" type="text/css" media="screen">
|
|
4
|
+
<div id="top">
|
|
5
|
+
<img src="file://<%=watermark%>" id="watermark"/>
|
|
6
|
+
<h1>Command History</h1>
|
|
7
|
+
<a href="controller/index">Refresh</a>
|
|
8
|
+
</div>
|
|
9
|
+
<div class="main">
|
|
10
|
+
<table>
|
|
11
|
+
<tr>
|
|
12
|
+
<th>Completed</th>
|
|
13
|
+
<th>Description</th>
|
|
14
|
+
</tr>
|
|
15
|
+
<% Redcar.app.history.reverse.each do |command| %>
|
|
16
|
+
<tr class="<%= "error" if command.error %>">
|
|
17
|
+
<td><%#= command.completed_time.strftime("%X") %></td>
|
|
18
|
+
<td><%= CGI.escapeHTML(command.class.to_s) %></td>
|
|
19
|
+
</tr>
|
|
20
|
+
<% if e = command.error %>
|
|
21
|
+
<tr>
|
|
22
|
+
<td colspan="3">
|
|
23
|
+
<strong><%= e.class %></strong>
|
|
24
|
+
<%= CGI.escapeHTML(e.message) %>
|
|
25
|
+
<br /><br />
|
|
26
|
+
<% e.backtrace.each do |line| %>
|
|
27
|
+
<%= line %><br />
|
|
28
|
+
<% end %>
|
|
29
|
+
</td>
|
|
30
|
+
</tr>
|
|
31
|
+
<% end %>
|
|
32
|
+
<% end %>
|
|
33
|
+
</table>
|
|
34
|
+
</div>
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
<% redcar_css = File.expand_path(File.join(Redcar.root, %w(plugins html_view views default.css))) %>
|
|
2
|
+
<% watermark = File.expand_path(File.join(Redcar.root, %w(plugins html_view views watermark-48.png))) %>
|
|
3
|
+
<link rel="stylesheet" href="file://<%= redcar_css %>" type="text/css" media="screen">
|
|
4
|
+
|
|
5
|
+
<div id="top">
|
|
6
|
+
<img src="file://<%=watermark%>" id="watermark"/>
|
|
7
|
+
<h3>Command History</h3>
|
|
8
|
+
<a href="controller/index">Refresh</a>
|
|
9
|
+
</div>
|
|
10
|
+
<div class="main">
|
|
11
|
+
<table>
|
|
12
|
+
<tr>
|
|
13
|
+
<th>Completed</th>
|
|
14
|
+
<th>Description</th>
|
|
15
|
+
</tr>
|
|
16
|
+
<% Redcar.app.history.reverse.each do |command| %>
|
|
17
|
+
<tr class="<%= "error" if command.error %>">
|
|
18
|
+
<td><%#= command.completed_time.strftime("%X") %></td>
|
|
19
|
+
<td><%= CGI.escapeHTML(command.class.to_s) %></td>
|
|
20
|
+
</tr>
|
|
21
|
+
<% if e = command.error %>
|
|
22
|
+
<tr>
|
|
23
|
+
<td colspan="3">
|
|
24
|
+
<strong><%= e.class %></strong>
|
|
25
|
+
<%= CGI.escapeHTML(e.message) %>
|
|
26
|
+
<br /><br />
|
|
27
|
+
<% e.backtrace.each do |line| %>
|
|
28
|
+
<%= line %><br />
|
|
29
|
+
<% end %>
|
|
30
|
+
</td>
|
|
31
|
+
</tr>
|
|
32
|
+
<% end %>
|
|
33
|
+
<% end %>
|
|
34
|
+
</table>
|
|
35
|
+
</div>
|
|
36
|
+
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
Feature: Navigation and editing keys have special behaviour in a REPL
|
|
2
|
+
|
|
3
|
+
Background:
|
|
4
|
+
When I open a new repl
|
|
5
|
+
And I insert "clear" at the cursor
|
|
6
|
+
And I press the return key
|
|
7
|
+
And I insert "x = 4" at the cursor
|
|
8
|
+
When I move the cursor to the end of the document
|
|
9
|
+
|
|
10
|
+
Scenario: Backspace does not erase the prompt
|
|
11
|
+
And I press the backspace key
|
|
12
|
+
Then the current command should be "x = "
|
|
13
|
+
When I press the backspace key
|
|
14
|
+
Then the current command should be "x ="
|
|
15
|
+
When I press the backspace key
|
|
16
|
+
Then the current command should be "x "
|
|
17
|
+
When I press the backspace key
|
|
18
|
+
Then the current command should be "x"
|
|
19
|
+
When I press the backspace key
|
|
20
|
+
Then the current command should be blank
|
|
21
|
+
When I press the backspace key
|
|
22
|
+
Then the current command should be blank
|
|
23
|
+
And I should see ">> " in the edit tab
|
|
24
|
+
|
|
25
|
+
Scenario: Delete does not erase the prompt
|
|
26
|
+
When I move the cursor to 0
|
|
27
|
+
And I press the delete key
|
|
28
|
+
Then the current command should be "x = 4"
|
|
29
|
+
And I should see ">> " in the edit tab
|
|
30
|
+
|
|
31
|
+
Scenario: The home key sets the cursor at the start of the line and after the prompt
|
|
32
|
+
When I press the home key
|
|
33
|
+
Then the cursor should be at 3
|
|
34
|
+
When I replace 3 to 8 with "x = 4\ny = 9"
|
|
35
|
+
And I move the cursor to 11
|
|
36
|
+
And I press the home key
|
|
37
|
+
Then the cursor should be at 9
|
|
38
|
+
|
|
39
|
+
Scenario: Left and right arrow keys can be used to navigate the current command
|
|
40
|
+
When I press the left arrow key
|
|
41
|
+
Then the cursor should be at 7
|
|
42
|
+
When I press the left arrow key
|
|
43
|
+
Then the cursor should be at 6
|
|
44
|
+
When I press the left arrow key
|
|
45
|
+
Then the cursor should be at 5
|
|
46
|
+
When I press the right arrow key
|
|
47
|
+
Then the cursor should be at 6
|
|
48
|
+
|
|
49
|
+
Scenario: The left arrow key should not go beyond the prompt
|
|
50
|
+
When I press the return key
|
|
51
|
+
And I insert "clear" at the cursor
|
|
52
|
+
And I press the return key
|
|
53
|
+
Then the cursor should be at 3
|
|
54
|
+
When I press the left arrow key
|
|
55
|
+
Then the cursor should be at 3
|
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
Feature: Command history
|
|
2
|
+
|
|
3
|
+
Background:
|
|
4
|
+
When I open a new repl
|
|
5
|
+
And I insert "x = 4" at the cursor
|
|
6
|
+
And I press the return key
|
|
7
|
+
Then the current command should be blank
|
|
8
|
+
When I insert "y = 5" at the cursor
|
|
9
|
+
And I press the return key
|
|
10
|
+
|
|
11
|
+
Scenario: Command History can be browsed using the arrow keys
|
|
12
|
+
When I press the up arrow key
|
|
13
|
+
Then the current command should be "y = 5"
|
|
14
|
+
When I press the up arrow key
|
|
15
|
+
Then the current command should be "x = 4"
|
|
16
|
+
When I press the up arrow key
|
|
17
|
+
Then the current command should be "x = 4"
|
|
18
|
+
When I press the down arrow key
|
|
19
|
+
Then the current command should be "y = 5"
|
|
20
|
+
When I press the down arrow key
|
|
21
|
+
Then the current command should be blank
|
|
22
|
+
|
|
23
|
+
Scenario: Command history can be cleared from the screen but retained in the buffer
|
|
24
|
+
When I insert "clear" at the cursor
|
|
25
|
+
And I press the return key
|
|
26
|
+
And I press the up arrow key
|
|
27
|
+
Then the current command should be "clear"
|
|
28
|
+
When I press the up arrow key
|
|
29
|
+
Then the current command should be "y = 5"
|
|
30
|
+
When I press the up arrow key
|
|
31
|
+
Then the current command should be "x = 4"
|
|
32
|
+
|
|
33
|
+
Scenario: Command history can be reset
|
|
34
|
+
When I insert "reset" at the cursor
|
|
35
|
+
And I press the return key
|
|
36
|
+
And I press the up arrow key
|
|
37
|
+
Then the current command should be blank
|
|
38
|
+
And I press the up arrow key
|
|
39
|
+
Then the current command should be blank
|
|
40
|
+
And I press the down arrow key
|
|
41
|
+
Then the current command should be blank
|
|
42
|
+
|
|
43
|
+
Scenario: Command history is saved between REPL sessions
|
|
44
|
+
When I close the focussed tab
|
|
45
|
+
And I open a new repl
|
|
46
|
+
When I press the up arrow key
|
|
47
|
+
Then the current command should be "y = 5"
|
|
48
|
+
When I press the up arrow key
|
|
49
|
+
Then the current command should be "x = 4"
|
|
50
|
+
|
|
51
|
+
Scenario: Uncommitted command is saved when navigating history
|
|
52
|
+
When I insert "x - y" at the cursor
|
|
53
|
+
And I press the up arrow key
|
|
54
|
+
Then the current command should be "y = 5"
|
|
55
|
+
When I press the down arrow key
|
|
56
|
+
Then the current command should be "x - y"
|
|
57
|
+
|
|
58
|
+
Scenario: Command history buffer size can be set
|
|
59
|
+
When I insert "x * y" at the cursor
|
|
60
|
+
And I press the return key
|
|
61
|
+
When I insert "buffer 2" at the cursor
|
|
62
|
+
And I press the return key
|
|
63
|
+
Then the REPL output should be "Buffer size set to 2"
|
|
64
|
+
When I press the up arrow key
|
|
65
|
+
Then the current command should be "buffer 2"
|
|
66
|
+
And I press the up arrow key
|
|
67
|
+
Then the current command should be "x * y"
|
|
68
|
+
And I press the up arrow key
|
|
69
|
+
Then the current command should be "x * y"
|
|
70
|
+
When I press the return key
|
|
71
|
+
And I close the focussed tab
|
|
72
|
+
And I open a new repl
|
|
73
|
+
And I insert "buffer" at the cursor
|
|
74
|
+
And I press the return key
|
|
75
|
+
Then the REPL output should be "Current buffer size is 2"
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
When /^I open a "([^"]*)" repl$/ do |repl|
|
|
2
|
+
Redcar.const_get(repl.camelize).const_get("Open" + repl.camelize + "REPL").new.run
|
|
3
|
+
end
|
|
4
|
+
|
|
5
|
+
When /^I open a new repl$/ do
|
|
6
|
+
Redcar::REPL::OpenFakeREPL.new.run
|
|
7
|
+
end
|
|
8
|
+
|
|
9
|
+
Then /^the REPL output should be "([^"]*)"$/ do |output|
|
|
10
|
+
current_tab.edit_view.document.mirror.last_output.should == output
|
|
11
|
+
end
|
|
12
|
+
|
|
13
|
+
Then /^the current command should be "([^"]*)"$/ do |cmd|
|
|
14
|
+
current_tab.current_command.should == cmd
|
|
15
|
+
end
|
|
16
|
+
|
|
17
|
+
Then /^the current command should be blank$/ do
|
|
18
|
+
current_tab.current_command.should == nil
|
|
19
|
+
end
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
|
|
2
|
+
require File.join File.dirname(__FILE__), 'fake_repl'
|
|
3
|
+
|
|
4
|
+
Redcar::REPL::ReplMirror.class_eval do
|
|
5
|
+
def evaluator
|
|
6
|
+
@eval ||= Redcar::REPL::FakeEvaluator.new
|
|
7
|
+
end
|
|
8
|
+
|
|
9
|
+
def grammar_name
|
|
10
|
+
"Plain Text"
|
|
11
|
+
end
|
|
12
|
+
|
|
13
|
+
def format_error(e)
|
|
14
|
+
"An error was thrown: #{e}"
|
|
15
|
+
end
|
|
16
|
+
end
|
|
17
|
+
|
|
18
|
+
Before do
|
|
19
|
+
Redcar::REPL.storage['command_history'] = {}
|
|
20
|
+
end
|
|
21
|
+
|
|
22
|
+
def current_tab
|
|
23
|
+
Redcar.app.focussed_window.focussed_notebook_tab
|
|
24
|
+
end
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
|
|
2
|
+
require 'repl/repl_mirror'
|
|
3
|
+
require 'repl/repl_tab'
|
|
4
|
+
require 'repl/repl_command'
|
|
5
|
+
|
|
6
|
+
module Redcar
|
|
7
|
+
class REPL
|
|
8
|
+
|
|
9
|
+
DEFAULT_BUFFER_SIZE = 15
|
|
10
|
+
|
|
11
|
+
def self.sensitivities
|
|
12
|
+
[
|
|
13
|
+
Sensitivity.new(:open_repl_tab, Redcar.app, false, [:tab_focussed]) do |tab|
|
|
14
|
+
tab and
|
|
15
|
+
tab.is_a?(REPL::Tab) and
|
|
16
|
+
tab.edit_view.document.mirror.is_a?(REPL::ReplMirror)
|
|
17
|
+
end
|
|
18
|
+
]
|
|
19
|
+
end
|
|
20
|
+
|
|
21
|
+
def self.storage
|
|
22
|
+
@storage ||= begin
|
|
23
|
+
storage = Plugin::Storage.new('repl')
|
|
24
|
+
storage.set_default(
|
|
25
|
+
'command_history_buffer_size',
|
|
26
|
+
DEFAULT_BUFFER_SIZE)
|
|
27
|
+
storage.set_default('command_history', {})
|
|
28
|
+
storage
|
|
29
|
+
end
|
|
30
|
+
end
|
|
31
|
+
|
|
32
|
+
class OpenREPL < Command
|
|
33
|
+
def open_repl(mirror)
|
|
34
|
+
tab = win.new_tab(Redcar::REPL::Tab)
|
|
35
|
+
tab.repl_mirror = mirror
|
|
36
|
+
tab.focus
|
|
37
|
+
end
|
|
38
|
+
end
|
|
39
|
+
end
|
|
40
|
+
end
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
|
|
2
|
+
module Redcar
|
|
3
|
+
class REPL
|
|
4
|
+
class ReplCommand
|
|
5
|
+
|
|
6
|
+
attr_reader :title,:description,:regex
|
|
7
|
+
|
|
8
|
+
def initialize(title,regex,description,&block)
|
|
9
|
+
@title = title
|
|
10
|
+
@regex = regex
|
|
11
|
+
@description = description
|
|
12
|
+
@block = block
|
|
13
|
+
end
|
|
14
|
+
|
|
15
|
+
def call(match_data)
|
|
16
|
+
@block.call match_data
|
|
17
|
+
end
|
|
18
|
+
end
|
|
19
|
+
end
|
|
20
|
+
end
|
|
@@ -0,0 +1,255 @@
|
|
|
1
|
+
module Redcar
|
|
2
|
+
class REPL
|
|
3
|
+
class ReplMirror
|
|
4
|
+
attr_reader :history , :command_history,
|
|
5
|
+
:command_index, :current_offset ,
|
|
6
|
+
:last_output
|
|
7
|
+
|
|
8
|
+
# A ReplMirror is a type of Document::Mirror
|
|
9
|
+
include Redcar::Document::Mirror
|
|
10
|
+
|
|
11
|
+
def initialize
|
|
12
|
+
@history = initial_preamble
|
|
13
|
+
@mutex = Mutex.new
|
|
14
|
+
initialize_command_history
|
|
15
|
+
end
|
|
16
|
+
|
|
17
|
+
def initialize_command_history
|
|
18
|
+
@command_history = REPL.storage['command_history'][title] || []
|
|
19
|
+
@command_history_buffer_size = REPL.storage['command_history_buffer_size']
|
|
20
|
+
@command_index = @command_history.size
|
|
21
|
+
set_current_offset
|
|
22
|
+
end
|
|
23
|
+
|
|
24
|
+
# What to display when the REPL is opened. Defaults to the title followed
|
|
25
|
+
# by a prompt
|
|
26
|
+
#
|
|
27
|
+
# @return [String]
|
|
28
|
+
def initial_preamble
|
|
29
|
+
"# #{title}\n# type 'help' for help\n\n#{prompt} "
|
|
30
|
+
end
|
|
31
|
+
|
|
32
|
+
# What to display when the help command is run
|
|
33
|
+
#
|
|
34
|
+
# @return [String]
|
|
35
|
+
def help
|
|
36
|
+
help = "Hello! I am a #{title}. I am here to assist you in exploring language APIs.\n\nCommands:\n"
|
|
37
|
+
special_commands.each do |cmd|
|
|
38
|
+
help << "#{cmd.title} : #{cmd.description}\n"
|
|
39
|
+
end
|
|
40
|
+
help
|
|
41
|
+
end
|
|
42
|
+
|
|
43
|
+
# The special commands supported by the REPL outside of the
|
|
44
|
+
# standard REPL syntax. Each entry is a command and description.
|
|
45
|
+
#
|
|
46
|
+
# @return [Hash]
|
|
47
|
+
def special_commands
|
|
48
|
+
[
|
|
49
|
+
ReplCommand.new('clear', /^clear$/,'Clear command output') do |last|
|
|
50
|
+
clear_history
|
|
51
|
+
end,
|
|
52
|
+
ReplCommand.new('reset', /^reset$/,
|
|
53
|
+
'Reset REPL to initial state and clear all command history') do |last|
|
|
54
|
+
reset_history
|
|
55
|
+
end,
|
|
56
|
+
ReplCommand.new('help',/^help$/,'Display this help text') do |last|
|
|
57
|
+
append_to_history help
|
|
58
|
+
end,
|
|
59
|
+
ReplCommand.new('buffer',/^buffer$/,'Displays command history buffer size') do |last|
|
|
60
|
+
append_to_history "Current buffer size is #{command_history_buffer_size}"
|
|
61
|
+
end,
|
|
62
|
+
ReplCommand.new('buffer [int]',/buffer (\d+)$/, 'Sets command history buffer size') do |last|
|
|
63
|
+
set_buffer_size last.captures.first.to_i
|
|
64
|
+
append_to_history "Buffer size set to #{command_history_buffer_size}"
|
|
65
|
+
end
|
|
66
|
+
]
|
|
67
|
+
end
|
|
68
|
+
|
|
69
|
+
# The name of the textmate grammar to apply to the repl history.
|
|
70
|
+
#
|
|
71
|
+
# @return [String]
|
|
72
|
+
def grammar_name
|
|
73
|
+
raise "implement the grammar_name method on your REPL"
|
|
74
|
+
end
|
|
75
|
+
|
|
76
|
+
# The prompt to display when the REPL is ready to accept input.
|
|
77
|
+
# Default: ">>"
|
|
78
|
+
#
|
|
79
|
+
# @return [String]
|
|
80
|
+
def prompt
|
|
81
|
+
">>"
|
|
82
|
+
end
|
|
83
|
+
|
|
84
|
+
# The tab title and preamble to display
|
|
85
|
+
# Default: "REPL"
|
|
86
|
+
#
|
|
87
|
+
# @return [String]
|
|
88
|
+
def title
|
|
89
|
+
"REPL"
|
|
90
|
+
end
|
|
91
|
+
|
|
92
|
+
# This returns an object that implements:
|
|
93
|
+
# execute(str:String): String
|
|
94
|
+
def evaluator
|
|
95
|
+
raise "implement evaluator on your REPL"
|
|
96
|
+
end
|
|
97
|
+
|
|
98
|
+
# Format the language specific exception to be displayed in the Repl
|
|
99
|
+
#
|
|
100
|
+
# @param [Exception]
|
|
101
|
+
# @return [String]
|
|
102
|
+
def format_error(exception)
|
|
103
|
+
raise "implement format_error on your REPL"
|
|
104
|
+
end
|
|
105
|
+
|
|
106
|
+
# Execute a new statement. Accepts the entire pretty formatted history,
|
|
107
|
+
# within which it looks for the last statement and executes it.
|
|
108
|
+
#
|
|
109
|
+
# Do not override
|
|
110
|
+
#
|
|
111
|
+
# @param [String] a string with at least one prompt and statement in it
|
|
112
|
+
def commit(contents)
|
|
113
|
+
command = entered_expression(contents)
|
|
114
|
+
evaluate(command)
|
|
115
|
+
end
|
|
116
|
+
|
|
117
|
+
# What did the user just enter?
|
|
118
|
+
#
|
|
119
|
+
# @return [String]
|
|
120
|
+
def entered_expression(contents)
|
|
121
|
+
if contents.split("\n").last =~ /#{prompt}\s+$/
|
|
122
|
+
""
|
|
123
|
+
else
|
|
124
|
+
last = contents.split(prompt).last
|
|
125
|
+
if last
|
|
126
|
+
last.strip
|
|
127
|
+
else
|
|
128
|
+
""
|
|
129
|
+
end
|
|
130
|
+
end
|
|
131
|
+
end
|
|
132
|
+
|
|
133
|
+
# How many commands will be stored in command history
|
|
134
|
+
#
|
|
135
|
+
# @return [Integer]
|
|
136
|
+
def command_history_buffer_size
|
|
137
|
+
@command_history_buffer_size
|
|
138
|
+
end
|
|
139
|
+
|
|
140
|
+
def set_buffer_size(size)
|
|
141
|
+
@command_history_buffer_size = size
|
|
142
|
+
if @command_history.size > size
|
|
143
|
+
@command_history.shift(@command_history.size - size)
|
|
144
|
+
end
|
|
145
|
+
@command_index = @command_history.size
|
|
146
|
+
REPL.storage['command_history_buffer_size'] = size
|
|
147
|
+
end
|
|
148
|
+
|
|
149
|
+
# The previous command to the command currently displayed,
|
|
150
|
+
# or the last one executed, if none.
|
|
151
|
+
#
|
|
152
|
+
# @return [String]
|
|
153
|
+
def previous_command
|
|
154
|
+
if current = @command_index
|
|
155
|
+
if @command_history.size > 0 and current > 0
|
|
156
|
+
@command_index = current - 1
|
|
157
|
+
command = @command_history[@command_index]
|
|
158
|
+
end
|
|
159
|
+
end
|
|
160
|
+
command
|
|
161
|
+
end
|
|
162
|
+
|
|
163
|
+
# The next command to the command currently displayed,
|
|
164
|
+
# or blank, if none.
|
|
165
|
+
#
|
|
166
|
+
# @return [String]
|
|
167
|
+
def next_command
|
|
168
|
+
if @command_index and @command_history.size > @command_index + 1
|
|
169
|
+
@command_index = @command_index + 1
|
|
170
|
+
command = @command_history[@command_index]
|
|
171
|
+
else
|
|
172
|
+
@command_index = @command_history.size
|
|
173
|
+
end
|
|
174
|
+
command
|
|
175
|
+
end
|
|
176
|
+
|
|
177
|
+
# Evaluate an expression. Calls execute on the return value of evaluator
|
|
178
|
+
def evaluate(expr)
|
|
179
|
+
add_command(expr)
|
|
180
|
+
special = special_commands.select {|cmd| expr =~ cmd.regex}
|
|
181
|
+
if special.size > 0
|
|
182
|
+
cmd = special.first
|
|
183
|
+
expr =~ cmd.regex
|
|
184
|
+
cmd.call Regexp.last_match
|
|
185
|
+
else
|
|
186
|
+
begin
|
|
187
|
+
@last_output = evaluator.execute(expr)
|
|
188
|
+
@history += "=> " + @last_output
|
|
189
|
+
rescue Object => e
|
|
190
|
+
@history += "x> " + format_error(e)
|
|
191
|
+
end
|
|
192
|
+
@history += "\n" + prompt + " "
|
|
193
|
+
set_current_offset
|
|
194
|
+
notify_listeners(:change)
|
|
195
|
+
end
|
|
196
|
+
end
|
|
197
|
+
|
|
198
|
+
# Get the complete history as a pretty formatted string.
|
|
199
|
+
#
|
|
200
|
+
# @return [String]
|
|
201
|
+
def read
|
|
202
|
+
@history
|
|
203
|
+
end
|
|
204
|
+
|
|
205
|
+
def append_to_history(text)
|
|
206
|
+
@last_output = text
|
|
207
|
+
@history += "=> " + text
|
|
208
|
+
@history += "\n" + prompt + " "
|
|
209
|
+
set_current_offset
|
|
210
|
+
notify_listeners(:change)
|
|
211
|
+
end
|
|
212
|
+
|
|
213
|
+
def clear_history
|
|
214
|
+
@history = prompt + " "
|
|
215
|
+
set_current_offset
|
|
216
|
+
notify_listeners(:change)
|
|
217
|
+
end
|
|
218
|
+
|
|
219
|
+
def reset_history
|
|
220
|
+
@history = initial_preamble
|
|
221
|
+
history = REPL.storage['command_history']
|
|
222
|
+
history[title] = []
|
|
223
|
+
REPL.storage['command_history'] = history
|
|
224
|
+
initialize_command_history
|
|
225
|
+
notify_listeners(:change)
|
|
226
|
+
end
|
|
227
|
+
|
|
228
|
+
# REPLs always exist because there is no external resource to represent.
|
|
229
|
+
# Therefore, this returns true.
|
|
230
|
+
def exists?
|
|
231
|
+
true
|
|
232
|
+
end
|
|
233
|
+
|
|
234
|
+
# REPLs never change except for after commit operations.
|
|
235
|
+
def changed?
|
|
236
|
+
false
|
|
237
|
+
end
|
|
238
|
+
|
|
239
|
+
# Appends a command to history
|
|
240
|
+
def add_command(expr)
|
|
241
|
+
@history += expr + "\n"
|
|
242
|
+
@command_history.push expr
|
|
243
|
+
size = @command_history.size
|
|
244
|
+
buffer_size = @command_history_buffer_size
|
|
245
|
+
@command_history.shift(size - buffer_size) if size > buffer_size
|
|
246
|
+
@command_index = @command_history.size
|
|
247
|
+
end
|
|
248
|
+
|
|
249
|
+
# Set the position at which a command can begin
|
|
250
|
+
def set_current_offset
|
|
251
|
+
@current_offset = @history.split(//).length
|
|
252
|
+
end
|
|
253
|
+
end
|
|
254
|
+
end
|
|
255
|
+
end
|