redcar 0.9.2 → 0.10

Sign up to get free protection for your applications and to get access to all the features.
Files changed (234) hide show
  1. data/CHANGES +34 -4
  2. data/Rakefile +2 -1
  3. data/lib/redcar.rb +3 -3
  4. data/lib/redcar/installer.rb +2 -3
  5. data/plugins/application/features/step_definitions/dialog_steps.rb +7 -0
  6. data/plugins/application/features/step_definitions/key_steps.rb +18 -0
  7. data/plugins/application/features/step_definitions/menu_steps.rb +5 -6
  8. data/plugins/application/features/step_definitions/speedbar_steps.rb +29 -9
  9. data/plugins/application/features/step_definitions/tree_steps.rb +13 -0
  10. data/plugins/application/features/support/env.rb +39 -5
  11. data/plugins/application/features/support/fake_event.rb +12 -0
  12. data/plugins/application/lib/application.rb +5 -6
  13. data/plugins/application/lib/application/dialog.rb +53 -10
  14. data/plugins/application/lib/application/dialogs/modeless_list_dialog.rb +85 -0
  15. data/plugins/application/lib/application/keymap.rb +10 -8
  16. data/plugins/application/lib/application/menu.rb +38 -16
  17. data/plugins/application/lib/application/treebook.rb +30 -0
  18. data/plugins/application/lib/application/window.rb +20 -2
  19. data/plugins/application/spec/application/command/executor_spec.rb +1 -0
  20. data/plugins/application/spec/application/menu_spec.rb +26 -26
  21. data/plugins/application/spec/application/treebook_spec.rb +6 -6
  22. data/plugins/application/spec/spec_helper.rb +10 -1
  23. data/plugins/application_swt/lib/application_swt.rb +25 -3
  24. data/plugins/application_swt/lib/application_swt/dialog_adapter.rb +48 -27
  25. data/plugins/application_swt/lib/application_swt/dialogs/filter_list_dialog_controller.rb +22 -11
  26. data/plugins/application_swt/lib/application_swt/dialogs/modeless_dialog.rb +113 -0
  27. data/plugins/application_swt/lib/application_swt/dialogs/modeless_html_dialog.rb +85 -0
  28. data/plugins/application_swt/lib/application_swt/dialogs/modeless_list_dialog_controller.rb +143 -0
  29. data/plugins/application_swt/lib/application_swt/gradient.rb +61 -0
  30. data/plugins/application_swt/lib/application_swt/menu/binding_translator.rb +4 -4
  31. data/plugins/application_swt/lib/application_swt/notebook.rb +5 -8
  32. data/plugins/application_swt/lib/application_swt/speedbar.rb +1 -0
  33. data/plugins/application_swt/lib/application_swt/treebook.rb +6 -8
  34. data/plugins/application_swt/lib/application_swt/window.rb +85 -57
  35. data/plugins/application_swt/lib/swt/graphics_utils.rb +23 -0
  36. data/plugins/application_swt/lib/swt/vtab_folder.rb +7 -0
  37. data/plugins/application_swt/lib/swt/vtab_label.rb +1 -1
  38. data/plugins/application_swt/spec/application_swt/gradient_spec.rb +142 -0
  39. data/plugins/auto_completer/lib/auto_completer.rb +10 -42
  40. data/plugins/auto_completer/lib/auto_completer/list_dialog.rb +21 -0
  41. data/plugins/clojure/lib/clojure.rb +33 -0
  42. data/plugins/{repl/lib/repl/clojure_mirror.rb → clojure/lib/clojure/repl_mirror.rb} +16 -20
  43. data/plugins/clojure/plugin.rb +9 -0
  44. data/plugins/{repl/spec/repl/clojure_mirror_spec.rb → clojure/spec/clojure/repl_mirror_spec.rb} +12 -13
  45. data/plugins/clojure/spec/spec_helper.rb +5 -0
  46. data/plugins/{repl → clojure}/vendor/Wrapper.clj +0 -0
  47. data/plugins/{repl → clojure}/vendor/dummy +0 -0
  48. data/plugins/{repl → clojure}/vendor/enclojure-wrapper.jar +0 -0
  49. data/plugins/connection_manager/lib/connection_manager.rb +13 -13
  50. data/plugins/declarations/lib/declarations.rb +17 -6
  51. data/plugins/document_search/features/find.feature +389 -0
  52. data/plugins/document_search/features/find_and_replace.feature +723 -0
  53. data/plugins/document_search/features/replace.feature +69 -62
  54. data/plugins/document_search/lib/document_search.rb +81 -64
  55. data/plugins/document_search/lib/document_search/commands.rb +258 -0
  56. data/plugins/document_search/lib/document_search/find_and_replace_speedbar.rb +142 -0
  57. data/plugins/document_search/lib/document_search/find_speedbar.rb +102 -0
  58. data/plugins/document_search/lib/document_search/query_options.rb +45 -0
  59. data/plugins/edit_view/features/case_change.feature +9 -5
  60. data/plugins/edit_view/features/step_definitions/editing_steps.rb +19 -0
  61. data/plugins/edit_view/lib/edit_view.rb +15 -12
  62. data/plugins/edit_view/lib/edit_view/actions/arrow_keys.rb +12 -2
  63. data/plugins/edit_view/lib/edit_view/commands/text_conversion_commands.rb +1 -1
  64. data/plugins/edit_view/lib/edit_view/document.rb +129 -99
  65. data/plugins/edit_view_swt/lib/edit_view_swt.rb +33 -15
  66. data/plugins/encryption/encryption.rb +2 -0
  67. data/plugins/find-in-project/lib/find_in_project.rb +3 -5
  68. data/plugins/find-in-project/lib/find_in_project/views/index.html.erb +2 -0
  69. data/plugins/groovy/features/step_definitions/groovy_steps.rb +2 -2
  70. data/plugins/groovy/features/syntax_check_groovy.feature +3 -3
  71. data/plugins/groovy/lib/groovy.rb +38 -0
  72. data/plugins/groovy/lib/groovy/commands.rb +10 -0
  73. data/plugins/{repl/lib/repl/groovy_mirror.rb → groovy/lib/groovy/repl_mirror.rb} +33 -13
  74. data/plugins/groovy/lib/{syntax_check/groovy.rb → groovy/syntax_checker.rb} +13 -8
  75. data/plugins/groovy/plugin.rb +5 -4
  76. data/plugins/{repl/spec/repl/groovy_mirror_spec.rb → groovy/spec/groovy/repl_mirror_spec.rb} +14 -13
  77. data/plugins/groovy/spec/spec_helper.rb +5 -0
  78. data/plugins/html_view/assets/json2.js +476 -0
  79. data/plugins/html_view/lib/html_view.rb +1 -0
  80. data/plugins/java/features/fixtures/test.java +0 -0
  81. data/plugins/java/features/support/env.rb +27 -0
  82. data/plugins/java/features/syntax_check_java.feature +86 -0
  83. data/plugins/java/lib/syntax_check/java.rb +86 -0
  84. data/plugins/java/plugin.rb +7 -0
  85. data/plugins/javascript/features/fixtures/test2.js +5 -0
  86. data/plugins/javascript/features/step_definitions/javascript_steps.rb +16 -0
  87. data/plugins/javascript/features/support/env.rb +14 -0
  88. data/plugins/javascript/features/syntax_check_javascript.feature +46 -3
  89. data/plugins/javascript/lib/syntax_check/javascript.rb +15 -9
  90. data/plugins/line_tools/features/trim_line.feature +49 -0
  91. data/plugins/line_tools/lib/line_tools.rb +5 -1
  92. data/plugins/mirah/README +7 -0
  93. data/plugins/mirah/features/fixtures/test.mirah +2 -0
  94. data/plugins/mirah/features/syntax_check_mirah.feature +46 -0
  95. data/plugins/mirah/lib/mirah.rb +43 -0
  96. data/plugins/mirah/lib/mirah/my_error_handler.rb +22 -0
  97. data/plugins/mirah/lib/mirah/repl_mirror.rb +50 -0
  98. data/plugins/mirah/lib/mirah/syntax_checker.rb +38 -0
  99. data/plugins/mirah/plugin.rb +8 -0
  100. data/plugins/mirah/spec/mirah/repl_mirror_spec.rb +188 -0
  101. data/plugins/mirah/spec/spec_helper.rb +5 -0
  102. data/plugins/mirah/vendor/mirah-parser.jar +0 -0
  103. data/plugins/pair_highlighter/lib/pair_highlighter/document_controller.rb +24 -23
  104. data/plugins/plugin_manager_ui/lib/plugin_manager_ui.rb +10 -1
  105. data/plugins/plugin_manager_ui/views/index.html.erb +2 -0
  106. data/plugins/project/features/find_file.feature +40 -16
  107. data/plugins/project/features/highlight_focussed_tab.feature +16 -10
  108. data/plugins/project/features/step_definitions/find_file_steps.rb +11 -0
  109. data/plugins/project/features/step_definitions/project_tree_steps.rb +5 -1
  110. data/plugins/project/features/support/env.rb +5 -0
  111. data/plugins/project/lib/project/commands.rb +8 -1
  112. data/plugins/project/lib/project/dir_controller.rb +4 -1
  113. data/plugins/project/lib/project/find_file_dialog.rb +16 -12
  114. data/plugins/project/lib/project/manager.rb +30 -1
  115. data/plugins/project_search/vendor/lucene/CHANGELOG +147 -0
  116. data/plugins/project_search/vendor/lucene/CONTRIBUTORS +17 -0
  117. data/plugins/project_search/vendor/lucene/Gemfile +9 -0
  118. data/plugins/project_search/vendor/lucene/Gemfile.lock +33 -0
  119. data/plugins/project_search/vendor/lucene/LICENSE +19 -0
  120. data/plugins/project_search/vendor/lucene/README.rdoc +283 -0
  121. data/plugins/project_search/vendor/lucene/Rakefile +35 -0
  122. data/plugins/project_search/vendor/lucene/examples/active_model/serializers.rb +25 -0
  123. data/plugins/project_search/vendor/lucene/examples/active_model/validation.rb +26 -0
  124. data/plugins/project_search/vendor/lucene/examples/admin/Rakefile +4 -0
  125. data/plugins/project_search/vendor/lucene/examples/admin/admin.rb +29 -0
  126. data/plugins/project_search/vendor/lucene/examples/admin/public/jquery.js +4376 -0
  127. data/plugins/project_search/vendor/lucene/examples/admin/public/neo4j.css +153 -0
  128. data/plugins/project_search/vendor/lucene/examples/admin/public/neo_admin.js +18 -0
  129. data/plugins/project_search/vendor/lucene/examples/admin/spec/admin_spec.rb +26 -0
  130. data/plugins/project_search/vendor/lucene/examples/admin/views/index.erb +21 -0
  131. data/plugins/project_search/vendor/lucene/examples/filetree/README.rdoc +9 -0
  132. data/plugins/project_search/vendor/lucene/examples/filetree/app.rb +7 -0
  133. data/plugins/project_search/vendor/lucene/examples/filetree/batch.props +5 -0
  134. data/plugins/project_search/vendor/lucene/examples/filetree/features/step_definitions/add_steps.rb +121 -0
  135. data/plugins/project_search/vendor/lucene/examples/filetree/features/support/env.rb +30 -0
  136. data/plugins/project_search/vendor/lucene/examples/filetree/features/support/rspec_helper.rb +50 -0
  137. data/plugins/project_search/vendor/lucene/examples/filetree/features/treesizes.feature +19 -0
  138. data/plugins/project_search/vendor/lucene/examples/imdb/1_create_neo_db.rb +66 -0
  139. data/plugins/project_search/vendor/lucene/examples/imdb/2_index_db.rb +23 -0
  140. data/plugins/project_search/vendor/lucene/examples/imdb/README +12 -0
  141. data/plugins/project_search/vendor/lucene/examples/imdb/find_actors.rb +56 -0
  142. data/plugins/project_search/vendor/lucene/examples/imdb/install.sh +12 -0
  143. data/plugins/project_search/vendor/lucene/examples/imdb/model.rb +37 -0
  144. data/plugins/project_search/vendor/lucene/examples/railway/README +111 -0
  145. data/plugins/project_search/vendor/lucene/examples/railway/railnet-app.rb +31 -0
  146. data/plugins/project_search/vendor/lucene/examples/railway/railnet-data.rb +42 -0
  147. data/plugins/project_search/vendor/lucene/examples/rest/example.rb +41 -0
  148. data/plugins/project_search/vendor/lucene/examples/you_might_know/YouMightKnow.java +60 -0
  149. data/plugins/project_search/vendor/lucene/examples/you_might_know/all_simple_paths.rb +34 -0
  150. data/plugins/project_search/vendor/lucene/examples/you_might_know/nodes.rb +34 -0
  151. data/plugins/project_search/vendor/lucene/examples/you_might_know/you_might_know.rb +50 -0
  152. data/plugins/project_search/vendor/lucene/lib/lucene.rb +15 -0
  153. data/plugins/project_search/vendor/lucene/lib/lucene/config.rb +145 -0
  154. data/plugins/project_search/vendor/lucene/lib/lucene/document.rb +96 -0
  155. data/plugins/project_search/vendor/lucene/lib/lucene/field_info.rb +144 -0
  156. data/plugins/project_search/vendor/lucene/lib/lucene/hits.rb +54 -0
  157. data/plugins/project_search/vendor/lucene/lib/lucene/index.rb +267 -0
  158. data/plugins/project_search/vendor/lucene/lib/lucene/index_info.rb +146 -0
  159. data/plugins/project_search/vendor/lucene/lib/lucene/index_searcher.rb +157 -0
  160. data/plugins/project_search/vendor/lucene/lib/lucene/jars.rb +5 -0
  161. data/plugins/project_search/vendor/lucene/lib/lucene/query_dsl.rb +135 -0
  162. data/plugins/project_search/vendor/lucene/lib/lucene/transaction.rb +117 -0
  163. data/plugins/project_search/vendor/lucene/lib/lucene/version.rb +3 -0
  164. data/plugins/project_search/vendor/lucene/lucene.gemspec +23 -0
  165. data/plugins/project_search/vendor/lucene/spec/lucene/document_spec.rb +32 -0
  166. data/plugins/project_search/vendor/lucene/spec/lucene/field_info_spec.rb +70 -0
  167. data/plugins/project_search/vendor/lucene/spec/lucene/index_info_spec.rb +76 -0
  168. data/plugins/project_search/vendor/lucene/spec/lucene/index_spec.rb +643 -0
  169. data/plugins/project_search/vendor/lucene/spec/lucene/query_dsl_spec.rb +142 -0
  170. data/plugins/project_search/vendor/lucene/spec/lucene/sort_spec.rb +101 -0
  171. data/plugins/project_search/vendor/lucene/spec/lucene/spec_helper.rb +10 -0
  172. data/plugins/project_search/vendor/lucene/spec/lucene/transaction_spec.rb +118 -0
  173. data/plugins/redcar/features/alter_font_size.feature +25 -0
  174. data/plugins/redcar/features/step_definitions/font_steps.rb +34 -0
  175. data/plugins/redcar/redcar.rb +256 -43
  176. data/plugins/repl/features/command_editing.feature +55 -0
  177. data/plugins/repl/features/command_history.feature +75 -0
  178. data/plugins/repl/features/step_definitions/repl_steps.rb +17 -1
  179. data/plugins/repl/features/support/env.rb +24 -0
  180. data/plugins/repl/features/support/fake_repl.rb +16 -0
  181. data/plugins/repl/lib/repl.rb +17 -74
  182. data/plugins/repl/lib/repl/repl_command.rb +20 -0
  183. data/plugins/repl/lib/repl/repl_mirror.rb +168 -22
  184. data/plugins/repl/lib/repl/repl_tab.rb +131 -6
  185. data/plugins/repl/plugin.rb +1 -1
  186. data/plugins/repl/spec/repl/repl_mirror_spec.rb +72 -0
  187. data/plugins/repl/spec/spec_helper.rb +1 -1
  188. data/plugins/repl_swt/lib/repl_swt.rb +7 -0
  189. data/plugins/repl_swt/lib/repl_swt/key_listener.rb +43 -0
  190. data/plugins/repl_swt/plugin.rb +8 -0
  191. data/plugins/ruby/lib/ruby.rb +35 -0
  192. data/plugins/{repl/lib/repl/ruby_mirror.rb → ruby/lib/ruby/repl_mirror.rb} +12 -12
  193. data/plugins/ruby/lib/{syntax_check/ruby.rb → ruby/syntax_checker.rb} +3 -3
  194. data/plugins/ruby/plugin.rb +5 -4
  195. data/plugins/{repl/spec/repl/ruby_mirror_spec.rb → ruby/spec/ruby/repl_mirror_spec.rb} +38 -29
  196. data/plugins/ruby/spec/spec_helper.rb +5 -0
  197. data/plugins/runnables/lib/runnables.rb +2 -0
  198. data/plugins/runnables/lib/runnables/command_output_controller.rb +5 -0
  199. data/plugins/runnables/lib/runnables/output_processor.rb +14 -3
  200. data/plugins/runnables/views/command_output.html.erb +3 -2
  201. data/plugins/scm/lib/scm.rb +4 -2
  202. data/plugins/scm/lib/scm/diff_mirror.rb +6 -6
  203. data/plugins/scm_git/lib/scm_git.rb +136 -107
  204. data/plugins/scm_git/lib/scm_git/change.rb +28 -19
  205. data/plugins/snippets/lib/snippets/explorer.rb +2 -2
  206. data/plugins/swt/lib/swt/full_swt.rb +1 -0
  207. data/plugins/syntax_check/features/step_definitions/syntax_check_steps.rb +4 -0
  208. data/plugins/syntax_check/features/support/env.rb +3 -0
  209. data/plugins/syntax_check/lib/syntax_check.rb +71 -5
  210. data/plugins/syntax_check/lib/syntax_check/annotation.rb +61 -0
  211. data/plugins/test_runner/lib/test_runner.rb +39 -0
  212. data/plugins/test_runner/lib/test_runner/rspec_runner.rb +20 -0
  213. data/plugins/test_runner/lib/test_runner/run_test_command.rb +63 -0
  214. data/plugins/test_runner/lib/test_runner/runnable_test_runner.rb +26 -0
  215. data/plugins/test_runner/plugin.rb +8 -0
  216. data/plugins/test_runner/spec/run_test_command_spec.rb +51 -0
  217. data/plugins/test_runner/spec/spec_helper.rb +5 -0
  218. data/plugins/textmate/lib/textmate.rb +12 -2
  219. data/plugins/textmate/vendor/redcar-bundles/Bundles/HTML.tmbundle/Syntaxes/HTML.plist +0 -2
  220. data/plugins/textmate/vendor/redcar-bundles/Bundles/Mirah.tmbundle/Syntaxes/Mirah.plist +22 -0
  221. data/plugins/textmate/vendor/redcar-bundles/Bundles/Mirah.tmbundle/info.plist +12 -0
  222. data/plugins/textmate/vendor/redcar-bundles/Bundles/Ruby.tmbundle/Syntaxes/Ruby.plist +2 -0
  223. data/plugins/todo_list/lib/todo_list.rb +7 -0
  224. data/plugins/todo_list/lib/todo_list/todo_controller.rb +3 -1
  225. data/plugins/tree/lib/tree.rb +4 -0
  226. data/plugins/tree_view_swt/lib/tree_view_swt.rb +5 -0
  227. data/plugins/web_bookmarks/lib/web_bookmarks.rb +10 -0
  228. metadata +137 -22
  229. data/plugins/document_search/features/search.feature +0 -163
  230. data/plugins/document_search/lib/document_search/replace_all_command.rb +0 -27
  231. data/plugins/document_search/lib/document_search/replace_command.rb +0 -38
  232. data/plugins/document_search/lib/document_search/replace_next_command.rb +0 -27
  233. data/plugins/document_search/lib/document_search/search_and_replace.rb +0 -81
  234. data/plugins/ruby/README +0 -6
@@ -0,0 +1,142 @@
1
+ $LOAD_PATH << File.expand_path(File.dirname(__FILE__) + "/../../lib")
2
+ $LOAD_PATH << File.expand_path(File.dirname(__FILE__) + "/..")
3
+ require 'lucene'
4
+ require 'lucene/spec_helper'
5
+
6
+
7
+ describe Lucene::QueryDSL, 'used from Index.find' do
8
+
9
+ before(:each) do
10
+ setup_lucene
11
+ @index = Index.new('my_index')
12
+ @index.field_infos[:value][:type] = Fixnum
13
+ @index << {:id => '42', :name => 'andreas', :foo => 'bar', :value => 1}
14
+ @index << {:id => '43', :name => 'andreas', :foo => 'baaz', :value => 2}
15
+ @index << {:id => '44', :name => 'x', :foo => 'bar', :value => 3}
16
+ @index << {:id => '45', :name => ['x','y','z']}
17
+
18
+ @doc1 = @index.uncommited['42']
19
+ @doc2 = @index.uncommited['43']
20
+ @doc3 = @index.uncommited['44']
21
+ @doc4 = @index.uncommited['45']
22
+ @index.commit
23
+ end
24
+
25
+ it "should find a document using a simple dsl query" do
26
+ hits = @index.find { name == 'andreas'}
27
+
28
+ hits.size.should == 2
29
+ hits.should include(@doc1, @doc2)
30
+ end
31
+
32
+ it "should find a document using a compound | expression" do
33
+ hits = @index.find { (name == 'andreas') | (name == 'x')}
34
+ hits.size.should == 4
35
+ hits.should include(@doc1, @doc2, @doc3, @doc4)
36
+
37
+ hits = @index.find { (name == 'andreasx') | (name == 'x')}
38
+ hits.size.should == 2
39
+ hits.should include(@doc3, @doc4)
40
+
41
+ end
42
+
43
+ it "should find a document using a compound & expression with the same key" do
44
+ hits = @index.find { (name == 'y') & (name == 'x')}
45
+ hits.size.should == 1
46
+ hits.should include(@doc4)
47
+
48
+ hits = @index.find { (name == 'y') & (name == 'x') & (name == 'a')}
49
+ hits.size.should == 0
50
+ end
51
+
52
+ it "should find with Range" do
53
+ hits = @index.find { value == 2..9 }
54
+ hits.size.should == 2
55
+ hits.should include(@doc2, @doc3)
56
+ end
57
+
58
+ it "should find with Range in a compound expression " do
59
+ hits = @index.find { (name == 'andreas') & (value == 2..9) }
60
+ hits.size.should == 1
61
+ hits.should include(@doc2)
62
+ end
63
+
64
+
65
+ it "should find with a compound & expression" do
66
+ hits = @index.find { (name == 'andreas') & (foo == 'bar')}
67
+
68
+ hits.size.should == 1
69
+ hits.should include(@doc1)
70
+ end
71
+
72
+ end
73
+
74
+ describe Lucene::QueryDSL do
75
+
76
+ it "should parse & expressions" do
77
+ expr = Lucene::QueryDSL.parse{ (name == 'andreas') & (age == 30)}
78
+ expr.op.should == :&
79
+ expr.left.left.should == :name
80
+ expr.left.right.should == 'andreas'
81
+
82
+ expr.right.left.should == :age
83
+ expr.right.right.should == 30
84
+ end
85
+
86
+ it "should parse | expressions" do
87
+ expr = Lucene::QueryDSL.parse{ (name == 'andreas') | (age == 30)}
88
+ expr.op.should == :|
89
+ expr.left.left.should == :name
90
+ expr.left.right.should == 'andreas'
91
+
92
+ expr.right.left.should == :age
93
+ expr.right.right.should == 30
94
+ end
95
+
96
+ it "should parse range expressions" do
97
+ expr = Lucene::QueryDSL.parse{ name == 1..3}
98
+
99
+ expr.left.should == :name
100
+ expr.right.should be_kind_of(Range)
101
+ expr.right.first.should == 1
102
+ expr.right.last.should == 3
103
+ end
104
+
105
+ it "should generate a lucene query" do
106
+ expr = Lucene::QueryDSL.parse{ name == 'andreas' }
107
+ query = expr.to_lucene(Lucene::IndexInfo.new(:id))
108
+ query.should be_kind_of(Java::OrgApacheLuceneSearch::TermQuery)
109
+ term = query.getTerm
110
+ term.field.should == 'name'
111
+ term.text.should == 'andreas'
112
+ end
113
+
114
+ it "should know which fields are being used in a query" do
115
+ expr = Lucene::QueryDSL.parse{ name == 'andreas' }
116
+ expr._fields.should == [:name]
117
+
118
+ expr = Lucene::QueryDSL.parse{ (name == 'andreas') | (age == 1) }
119
+ expr._fields.should == [:name, :age]
120
+ end
121
+
122
+
123
+ it "should generate a lucene query" do
124
+ expr = Lucene::QueryDSL.parse{ (name == 'andreas') & (age == 1) }
125
+ query = expr.to_lucene(Lucene::IndexInfo.new(:id))
126
+
127
+ query.should be_kind_of(Java::OrgApacheLuceneSearch::BooleanQuery)
128
+
129
+ clauses = query.getClauses()
130
+ clauses.size.should == 2
131
+
132
+ term0 = clauses[0].getQuery.getTerm
133
+ term0.field.should == 'name'
134
+ term0.text.should == 'andreas'
135
+
136
+ term1 = clauses[1].getQuery.getTerm
137
+ term1.field.should == 'age'
138
+ term1.text.should == '1'
139
+ end
140
+
141
+ end
142
+
@@ -0,0 +1,101 @@
1
+ $LOAD_PATH << File.expand_path(File.dirname(__FILE__) + "/../../lib")
2
+ $LOAD_PATH << File.expand_path(File.dirname(__FILE__) + "/..")
3
+ require 'lucene'
4
+ require 'lucene/spec_helper'
5
+
6
+ describe "Index.find and sort" do
7
+ before(:all) do
8
+ setup_lucene
9
+ @index = Index.new('myindex')
10
+ @index.clear
11
+ @index << {:id => '1', :name => 'zzz', :category=>'abc', :group=>'z'}
12
+ @index << {:id => '2', :name => 'andreas', :category=>'abc',:group=>'z'}
13
+ @index << {:id => '3', :name => 'ted', :category=>'xyz',:group=>'z'}
14
+ @index << {:id => '4', :name => 'zoo', :category=>'abc',:group=>'z'}
15
+ @index << {:id => '5', :name => 'ted', :category=>'abc',:group=>'z'}
16
+ @index << {:id => '6', :name => 'ted', :category=>'zyx',:group=>'z'}
17
+ @index.commit
18
+ end
19
+
20
+ it "should handle find and sort by name using Asc" do
21
+ r = @index.find(:group => 'z', :sort_by=>Asc[:name])
22
+ r.size.should == 6
23
+ r[0][:id].should == '2'
24
+ r[4][:id].should == '4'
25
+ r[5][:id].should == '1'
26
+ end
27
+
28
+ it "should handle find and sort by name using Asc" do
29
+ r = @index.find(:group => 'z', :sort_by=>Desc[:name])
30
+ r.size.should == 6
31
+ r[0][:id].should == '1'
32
+ r[1][:id].should == '4'
33
+ r[5][:id].should == '2'
34
+ end
35
+
36
+ it "should handle find and sort by name" do
37
+ r = @index.find(:group => 'z', :sort_by=>:name)
38
+ r.size.should == 6
39
+ r[0][:id].should == '2'
40
+ r[4][:id].should == '4'
41
+ r[5][:id].should == '1'
42
+
43
+ sort_category = r[1][:id] == '5' &&
44
+ r[2][:id] == '3' &&
45
+ r[3][:id] == '6'
46
+ sort_category.should == false
47
+ end
48
+
49
+ it "should handle find and sort by name and category using Asc" do
50
+ r = @index.find(:group => 'z', :sort_by=>Asc[:name, :category])
51
+ r.size.should == 6
52
+ r[0][:id].should == '2'
53
+ r[4][:id].should == '4'
54
+ r[5][:id].should == '1'
55
+ r[1][:id].should == '5'
56
+ r[2][:id].should == '3'
57
+ r[3][:id].should == '6'
58
+ end
59
+
60
+ it "should handle find and sort by name and category using two Asc" do
61
+ r = @index.find(:group => 'z', :sort_by=>[Asc[:name], Asc[:category]])
62
+ r.size.should == 6
63
+ r[0][:id].should == '2'
64
+ r[4][:id].should == '4'
65
+ r[5][:id].should == '1'
66
+ r[1][:id].should == '5'
67
+ r[2][:id].should == '3'
68
+ r[3][:id].should == '6'
69
+ end
70
+
71
+ it "should handle find and sort by ASC name and DESC category" do
72
+ r = @index.find(:group => 'z', :sort_by=>[Asc[:name], Desc[:category]])
73
+ r.size.should == 6
74
+ r[0][:id].should == '2'
75
+ r[4][:id].should == '4'
76
+ r[5][:id].should == '1'
77
+ r[1][:id].should == '6'
78
+ r[2][:id].should == '3'
79
+ r[3][:id].should == '5'
80
+ end
81
+
82
+ it "should handle find and sort by name and category" do
83
+ r = @index.find(:group => 'z', :sort_by=>[:name,:category])
84
+ r.size.should == 6
85
+ r[0][:id].should == '2'
86
+ r[4][:id].should == '4'
87
+ r[5][:id].should == '1'
88
+ r[1][:id].should == '5'
89
+ r[2][:id].should == '3'
90
+ r[3][:id].should == '6'
91
+ end
92
+
93
+ it "should handle find with string and sort by name" do
94
+ r = @index.find("group:z", :sort_by=>:name)
95
+ r.size.should == 6
96
+ r[0][:id].should == '2'
97
+ r[4][:id].should == '4'
98
+ r[5][:id].should == '1'
99
+ end
100
+
101
+ end
@@ -0,0 +1,10 @@
1
+ require 'fileutils'
2
+
3
+ include Lucene
4
+
5
+ def setup_lucene
6
+ # make sure any previous transaction has commited
7
+ Lucene::Transaction.current.commit if Lucene::Transaction.running?
8
+ Lucene::Config.delete_all
9
+ Lucene::Config[:store_on_file] = false
10
+ end
@@ -0,0 +1,118 @@
1
+ $LOAD_PATH << File.expand_path(File.dirname(__FILE__) + "/../../lib")
2
+ $LOAD_PATH << File.expand_path(File.dirname(__FILE__) + "/..")
3
+ require 'lucene'
4
+ require 'lucene/spec_helper'
5
+
6
+
7
+ describe Lucene::Transaction do
8
+
9
+ before(:each) do
10
+ setup_lucene
11
+ end
12
+
13
+ it "should have a to_s method" do
14
+ t = Lucene::Transaction.new
15
+ t.to_s.should match(/Transaction \[commited=false, rollback=false, indexes=0, object_id=/)
16
+ end
17
+
18
+ it "should reuse Index instance in the same transaction" do
19
+ # given
20
+ index = nil
21
+ Lucene::Transaction.run do
22
+ index1 = Index.new('var/index/foo')
23
+ index2 = Index.new('var/index/foo')
24
+ index1.object_id.should == index2.object_id
25
+ end # when it commits&
26
+ end
27
+
28
+ it "should create a new instance of Index if running in a new transaction" do
29
+ # given
30
+ index1 = nil
31
+ index2 = nil
32
+ Lucene::Transaction.run do
33
+ index1 = Index.new('var/index/foo')
34
+ end
35
+
36
+ Lucene::Transaction.run do
37
+ index2 = Index.new('var/index/foo')
38
+ end
39
+
40
+ index1.object_id.should_not == index2.object_id
41
+ end
42
+
43
+ it "should update all indexes when it commits" do
44
+ # given
45
+ index = nil
46
+ Lucene::Transaction.run do
47
+ index = Index.new('var/index/foo')
48
+ index << {:id => '1', :name => 'andreas'}
49
+ end # when it commits&
50
+
51
+ # then
52
+ result = index.find('name' => 'andreas')
53
+ result.size.should == 1
54
+ result[0][:id].should == '1'
55
+ end
56
+
57
+ it "should not index docuements when transaction has rolled back" do
58
+ # given
59
+ index = nil
60
+ Lucene::Transaction.run do |t|
61
+ index = Index.new('var/index/foo')
62
+ index << {:id => '1', :name => 'andreas'}
63
+ t.failure
64
+ end # when it commits
65
+
66
+ # then
67
+ result = index.find('name' => 'andreas')
68
+ result.size.should == 0
69
+ end
70
+
71
+
72
+ it "should not find uncommited documents for a different thread" do
73
+ # given
74
+ t1 = Thread.start do
75
+ Lucene::Transaction.new
76
+ index = Index.new('var/index/foo')
77
+ index << {:id => '1', :name => 'andreas'}
78
+ index = Index.new('var/index/foo')
79
+ index.uncommited['1'].should_not be_nil
80
+ end
81
+
82
+ t1.join
83
+ index = Index.new('var/index/foo')
84
+ index.uncommited['1'].should be_nil
85
+ end
86
+
87
+ it "should update an index from several threads" do
88
+ threads = []
89
+ for i in 1..10 do
90
+ for k in 1..5 do
91
+ threads << Thread.start(i,k) do |ii,kk|
92
+ Lucene::Transaction.run do |t|
93
+ index = Index.new('var/index/foo')
94
+ id = (ii*10 + kk).to_s
95
+ value = "thread#{ii}#{kk}"
96
+ index << {:id => id, :name => value}
97
+ end # when it commits&
98
+ end
99
+ end
100
+ end
101
+
102
+
103
+ threads.each {|t| t.join}
104
+
105
+ # make sure we can find those
106
+ index = Index.new 'var/index/foo'
107
+ for i in 1..10 do
108
+ for k in 1..5 do
109
+ value = "thread#{i}#{k}"
110
+ result = index.find(:name => value)
111
+ result.size.should == 1
112
+ result[0][:id].should == (i*10 +k).to_s
113
+ end
114
+ end
115
+ end
116
+
117
+ end
118
+
@@ -0,0 +1,25 @@
1
+ Feature: The font size can be increased and decreased within bounds
2
+
3
+ Background:
4
+ Given I open a new edit tab
5
+ And I replace the contents with "Hello! Hello! Hello!"
6
+
7
+ Scenario: The font size can be increased until it reaches maximum size
8
+ When I set the font size to 14
9
+ Then the font size should be 14
10
+ And I increase the font size
11
+ Then the font size should be 15
12
+ When I set the font size to maximum
13
+ And I increase the font size
14
+ And I increase the font size
15
+ Then the font size should be maximum
16
+
17
+ Scenario: The font size can be decreased until it reaches minimum size
18
+ When I set the font size to 21
19
+ Then the font size should be 21
20
+ And I decrease the font size
21
+ Then the font size should be 20
22
+ When I set the font size to minimum
23
+ And I decrease the font size
24
+ And I decrease the font size
25
+ Then the font size should be minimum
@@ -0,0 +1,34 @@
1
+ When /^I set the font size to (\d+|maximum|minimum)$/ do |arg1|
2
+ if arg1 =~ /\d+/
3
+ size = arg1.to_i
4
+ elsif arg1 == 'maximum'
5
+ size = Redcar::EditView::MAX_FONT_SIZE
6
+ else
7
+ size = Redcar::EditView::MIN_FONT_SIZE
8
+ end
9
+ Given "I would type \"#{size}\" in an input box"
10
+ When "I set the font size"
11
+ end
12
+
13
+ When /^I (de|in)crease the font size$/ do |direction|
14
+ if direction == 'in'
15
+ Redcar::Top::IncreaseFontSize.new.run
16
+ else
17
+ Redcar::Top::DecreaseFontSize.new.run
18
+ end
19
+ end
20
+
21
+ When /^I set the font size$/ do
22
+ Redcar::Top::SelectFontSize.new.run
23
+ end
24
+
25
+ Then /^the font size should be (\d+|maximum|minimum)$/ do |size|
26
+ current = Redcar::EditView.font_size
27
+ if size =~ /\d+/
28
+ current.should == size.to_i
29
+ elsif size == 'maximum'
30
+ current.should == Redcar::EditView::MAX_FONT_SIZE
31
+ else
32
+ current.should == Redcar::EditView::MIN_FONT_SIZE
33
+ end
34
+ end
@@ -16,11 +16,13 @@ module Redcar
16
16
  end
17
17
 
18
18
  def self.update_gui
19
+ result = nil
19
20
  Swt.sync_exec do
20
21
  safely do
21
- yield
22
+ result = yield
22
23
  end
23
24
  end
25
+ result
24
26
  end
25
27
 
26
28
  class TimeoutError < StandardError; end
@@ -95,12 +97,12 @@ module Redcar
95
97
  end
96
98
 
97
99
  class NewNotebookCommand < Command
98
- sensitize :single_notebook
100
+ # sensitize :single_notebook
99
101
 
100
102
  def execute
101
- unless win.notebooks.length > 1
103
+ #unless win.notebooks.length > 1
102
104
  win.create_notebook
103
- end
105
+ # end
104
106
  end
105
107
  end
106
108
 
@@ -263,12 +265,57 @@ module Redcar
263
265
 
264
266
  def execute
265
267
  current_notebook = tab.notebook
266
- target_notebook = win.notebooks.detect {|nb| nb != current_notebook}
268
+ i = win.notebooks.index current_notebook
269
+
270
+ target_notebook = win.notebooks[ (i + 1) % win.notebooks.length ]
267
271
  target_notebook.grab_tab_from(current_notebook, tab)
268
272
  tab.focus
269
273
  end
270
274
  end
271
275
 
276
+ class OpenTreeFinderCommand < TreeCommand
277
+
278
+ def execute
279
+ if win = Redcar.app.focussed_window
280
+ if trees = win.treebook.trees and trees.any?
281
+ titles = []
282
+ trees.each {|t| titles << t.tree_mirror.title}
283
+ dialog = TreeFuzzyFilter.new(win,titles)
284
+ dialog.open
285
+ end
286
+ end
287
+ end
288
+
289
+ class TreeFuzzyFilter < FilterListDialog
290
+
291
+ def initialize(win,titles)
292
+ super()
293
+ @win = win
294
+ @titles = titles
295
+ end
296
+
297
+ def selected(text,ix)
298
+ if tree = @win.treebook.trees.detect do |tree|
299
+ tree.tree_mirror.title == text
300
+ end
301
+ if @win.treebook.focussed_tree == tree
302
+ @win.set_trees_visible(true) if not @win.trees_visible?
303
+ else
304
+ @win.treebook.focus_tree(tree)
305
+ end
306
+ tree.focus
307
+ close
308
+ end
309
+ end
310
+
311
+ def update_list(filter)
312
+ @titles.select do |t|
313
+ t.downcase.include?(filter.downcase)
314
+ end
315
+ end
316
+ end
317
+ end
318
+
272
319
  class CloseTreeCommand < TreeCommand
273
320
  def execute
274
321
  win = Redcar.app.focussed_window
@@ -302,9 +349,9 @@ Ruby Version: #{RUBY_VERSION}
302
349
  Jruby version: #{JRUBY_VERSION}
303
350
  Redcar.environment: #{Redcar.environment}
304
351
  TXT
305
- new_tab.title= 'About'
306
352
  new_tab.edit_view.reset_undo
307
353
  new_tab.document.set_modified(false)
354
+ new_tab.title= 'About'
308
355
  end
309
356
  end
310
357
 
@@ -312,9 +359,9 @@ Redcar.environment: #{Redcar.environment}
312
359
  def execute
313
360
  new_tab = Top::NewCommand.new.run
314
361
  new_tab.document.text = File.read(File.join(File.dirname(__FILE__), "..", "..", "CHANGES"))
315
- new_tab.title = 'Changes'
316
362
  new_tab.edit_view.reset_undo
317
363
  new_tab.edit_view.document.set_modified(false)
364
+ new_tab.title = 'Changes'
318
365
  end
319
366
  end
320
367
 
@@ -342,6 +389,7 @@ Redcar.environment: #{Redcar.environment}
342
389
  def execute
343
390
  if tab.is_a?(EditTab)
344
391
  if tab.edit_view.document.modified?
392
+ tab.focus
345
393
  result = Application::Dialog.message_box(
346
394
  "This tab has unsaved changes. \n\nSave before closing?",
347
395
  :buttons => :yes_no_cancel
@@ -359,6 +407,7 @@ Redcar.environment: #{Redcar.environment}
359
407
  end
360
408
  elsif tab.is_a?(HtmlTab)
361
409
  if tab.html_view.controller and message = tab.html_view.controller.ask_before_closing
410
+ tab.focus
362
411
  result = Application::Dialog.message_box(
363
412
  message,
364
413
  :buttons => :yes_no_cancel
@@ -391,6 +440,45 @@ Redcar.environment: #{Redcar.environment}
391
440
  end
392
441
  end
393
442
 
443
+ class CloseAll < Redcar::Command
444
+ def execute
445
+ window = Redcar.app.focussed_window
446
+ tabs = window.all_tabs
447
+ tabs.each do |t|
448
+ Redcar::Top::CloseTabCommand.new(t).run
449
+ end
450
+ end
451
+ end
452
+
453
+ class CloseOthers < Redcar::Command
454
+ def execute
455
+ window = Redcar.app.focussed_window
456
+ current_tab = Redcar.app.focussed_notebook_tab
457
+ tabs = window.all_tabs
458
+ tabs.each do |t|
459
+ unless t == current_tab
460
+ Redcar::Top::CloseTabCommand.new(t).run
461
+ end
462
+ end
463
+ end
464
+ end
465
+
466
+ class SwitchTreeDownCommand < TreeCommand
467
+
468
+ def execute
469
+ win = Redcar.app.focussed_window
470
+ win.treebook.switch_down
471
+ end
472
+ end
473
+
474
+ class SwitchTreeUpCommand < TreeCommand
475
+
476
+ def execute
477
+ win = Redcar.app.focussed_window
478
+ win.treebook.switch_up
479
+ end
480
+ end
481
+
394
482
  class SwitchTabDownCommand < TabCommand
395
483
 
396
484
  def execute
@@ -438,6 +526,10 @@ Redcar.environment: #{Redcar.environment}
438
526
  class MoveHomeCommand < DocumentCommand
439
527
 
440
528
  def execute
529
+ if doc.mirror.is_a?(Redcar::REPL::ReplMirror)
530
+ # do not do the default home command on a line with a prompt
531
+ return unless tab.go_to_home?
532
+ end
441
533
  line_ix = doc.line_at_offset(doc.cursor_offset)
442
534
  line = doc.get_line(line_ix)
443
535
  prefix = line[0...doc.cursor_line_offset]
@@ -759,6 +851,53 @@ Redcar.environment: #{Redcar.environment}
759
851
  end
760
852
  end
761
853
 
854
+ class TreebookWidthCommand < Command
855
+ sensitize :open_trees
856
+
857
+ def increment
858
+ raise "Please implement me!"
859
+ end
860
+
861
+ def execute
862
+ if win = Redcar.app.focussed_window
863
+ if increment > 0
864
+ win.adjust_treebook_width(true)
865
+ else
866
+ win.adjust_treebook_width(false)
867
+ end
868
+ end
869
+ end
870
+ end
871
+
872
+ ["In","De"].each do |prefix|
873
+ const_set("#{prefix}creaseTreebookWidthCommand", Class.new(TreebookWidthCommand)).class_eval do
874
+ define_method :increment do
875
+ prefix == "In" ? 1 : -1
876
+ end
877
+ end
878
+ end
879
+
880
+ class EnlargeNotebookCommand < Command
881
+ sensitize :multiple_notebooks
882
+ def index
883
+ raise "Please define me!"
884
+ end
885
+
886
+ def execute
887
+ if win = Redcar.app.focussed_window
888
+ win.enlarge_notebook(index)
889
+ end
890
+ end
891
+ end
892
+
893
+ ["First","Second"].each do |book|
894
+ const_set("Enlarge#{book}NotebookCommand", Class.new(EnlargeNotebookCommand)).class_eval do
895
+ define_method :index do
896
+ book == "First" ? 0 : 1
897
+ end
898
+ end
899
+ end
900
+
762
901
  # define commands from SelectTab1Command to SelectTab9Command
763
902
  (1..9).each do |tab_num|
764
903
  const_set("SelectTab#{tab_num}Command", Class.new(Redcar::TabCommand)).class_eval do
@@ -769,6 +908,16 @@ Redcar.environment: #{Redcar.environment}
769
908
  end
770
909
  end
771
910
 
911
+ class ResetNotebookWidthsCommand < Command
912
+ sensitize :multiple_notebooks
913
+
914
+ def execute
915
+ if win = Redcar.app.focussed_window
916
+ win.reset_notebook_widths
917
+ end
918
+ end
919
+ end
920
+
772
921
  class ToggleFullscreen < Command
773
922
  def execute
774
923
  Redcar.app.focussed_window.fullscreen = !Redcar.app.focussed_window.fullscreen
@@ -795,13 +944,13 @@ Redcar.environment: #{Redcar.environment}
795
944
  end
796
945
  end
797
946
 
798
- class SelectNewFont < Command
947
+ class SelectNewFont < EditTabCommand
799
948
  def execute
800
949
  Redcar::EditView::SelectFontDialog.new.open
801
950
  end
802
951
  end
803
952
 
804
- class SelectTheme < Command
953
+ class SelectTheme < EditTabCommand
805
954
  def execute
806
955
  Redcar::EditView::SelectThemeDialog.new.open
807
956
  end
@@ -818,16 +967,39 @@ Redcar.environment: #{Redcar.environment}
818
967
  def execute; end
819
968
  end
820
969
 
821
- class SelectFontSize < Command
970
+ class SelectFontSize < EditTabCommand
822
971
  def execute
823
- result = Application::Dialog.input("Font Size", "Please enter new font size", Redcar::EditView.font_size.to_s) do |text|
824
- if text.to_i > 1 and text.to_i < 25
825
- nil
972
+ max = Redcar::EditView::MAX_FONT_SIZE
973
+ min = Redcar::EditView::MIN_FONT_SIZE
974
+ result = Application::Dialog.input(
975
+ "Font Size",
976
+ "Please enter new font size",
977
+ Redcar::EditView.font_size.to_s)
978
+ if result[:button] == :ok
979
+ value = result[:value].to_i
980
+ if value >= min and value <= max
981
+ Redcar::EditView.font_size = value
826
982
  else
827
- "the font size must be > 1 and < 25"
983
+ Application::Dialog.message_box(
984
+ "The font size must be between #{min} and #{max}")
828
985
  end
829
- end
830
- Redcar::EditView.font_size = result[:value].to_i if result[:button ] == :ok
986
+ end
987
+ end
988
+ end
989
+
990
+ class IncreaseFontSize < EditTabCommand
991
+ def execute
992
+ unless (current = Redcar::EditView.font_size) >= Redcar::EditView::MAX_FONT_SIZE
993
+ Redcar::EditView.font_size = current+1
994
+ end
995
+ end
996
+ end
997
+
998
+ class DecreaseFontSize < EditTabCommand
999
+ def execute
1000
+ unless (current = Redcar::EditView.font_size) <= Redcar::EditView::MIN_FONT_SIZE
1001
+ Redcar::EditView.font_size = current-1
1002
+ end
831
1003
  end
832
1004
  end
833
1005
 
@@ -844,11 +1016,12 @@ Redcar.environment: #{Redcar.environment}
844
1016
  link "Cmd+Shift+S", Project::FileSaveAsCommand
845
1017
  link "Cmd+W", CloseTabCommand
846
1018
  link "Cmd+Shift+W", CloseWindowCommand
1019
+ link "Alt+Shift+W", CloseTreeCommand
847
1020
  link "Cmd+Q", QuitCommand
848
1021
 
849
1022
  #link "Cmd+Return", MoveNextLineCommand
850
1023
 
851
- link "Cmd+Shift+E", EditView::InfoSpeedbarCommand
1024
+ link "Ctrl+Shift+E", EditView::InfoSpeedbarCommand
852
1025
  link "Cmd+Z", UndoCommand
853
1026
  link "Cmd+Shift+Z", RedoCommand
854
1027
  link "Cmd+X", CutCommand
@@ -865,16 +1038,14 @@ Redcar.environment: #{Redcar.environment}
865
1038
  link "Cmd+]", IncreaseIndentCommand
866
1039
  link "Cmd+Shift+I", AutoIndenter::IndentCommand
867
1040
  link "Cmd+L", GotoLineCommand
868
- link "Cmd+F", DocumentSearch::SearchForwardCommand
869
- link "Cmd+H", DocumentSearch::SearchAndReplaceCommand
870
- #link "Cmd+Shift+F", DocumentSearch::RepeatPreviousSearchForwardCommand
871
- link "Cmd+Ctrl+F", DocumentSearch::SearchAndReplaceCommand
872
- link "Cmd+Shift+F", Redcar::FindInProject::OpenSearch
873
1041
  link "Cmd+A", SelectAllCommand
874
1042
  link "Ctrl+W", SelectWordCommand
1043
+ link "Ctrl+L", SelectLineCommand
875
1044
  link "Cmd+B", ToggleBlockSelectionCommand
876
- #link "Escape", AutoCompleter::AutoCompleteCommand
877
- link "Ctrl+Escape", AutoCompleter::MenuAutoCompleterCommand
1045
+ link "Escape", AutoCompleter::AutoCompleteCommand
1046
+ link "Ctrl+Escape", AutoCompleter::MenuAutoCompleterCommand
1047
+ link "Ctrl+Space", AutoCompleter::AutoCompleteCommand
1048
+ link "Ctrl+Shift+Space", AutoCompleter::MenuAutoCompleterCommand
878
1049
 
879
1050
  link "Ctrl+U", EditView::UpcaseTextCommand
880
1051
  link "Ctrl+Shift+U", EditView::DowncaseTextCommand
@@ -882,23 +1053,35 @@ Redcar.environment: #{Redcar.environment}
882
1053
  link "Ctrl+G", EditView::OppositeCaseTextCommand
883
1054
  link "Ctrl+_", EditView::CamelSnakePascalRotateTextCommand
884
1055
  link "Ctrl+=", EditView::AlignAssignmentCommand
1056
+ link "Ctrl+Shift+^", SortLinesCommand
885
1057
 
1058
+ link "Cmd+Shift+F", Redcar::FindInProject::OpenSearch
886
1059
  link "Cmd+T", Project::FindFileCommand
887
1060
  link "Cmd+Shift+Alt+O", MoveTabToOtherNotebookCommand
888
1061
  link "Cmd+Alt+O", SwitchNotebookCommand
1062
+ link "Alt+Shift+[", SwitchTreeUpCommand
1063
+ link "Alt+Shift+]", SwitchTreeDownCommand
889
1064
  link "Cmd+Shift+[", SwitchTabDownCommand
890
1065
  link "Cmd+Shift+]", SwitchTabUpCommand
891
1066
  link "Ctrl+Shift+[", MoveTabDownCommand
892
1067
  link "Ctrl+Shift+]", MoveTabUpCommand
893
- link "F11", ToggleFullscreen
1068
+ link "Cmd+Shift++", ToggleFullscreen
1069
+ link "Cmd+Shift+T", OpenTreeFinderCommand
1070
+ link "Alt+Shift+J", IncreaseTreebookWidthCommand
1071
+ link "Alt+Shift+H", DecreaseTreebookWidthCommand
1072
+ link "Cmd+Shift+>", EnlargeFirstNotebookCommand
1073
+ link "Cmd+Shift+<", EnlargeSecondNotebookCommand
1074
+ link "Cmd+Shift+L", ResetNotebookWidthsCommand
1075
+ link "Cmd+Shift+:", RotateNotebooksCommand
1076
+ link "Alt+Shift+N", CloseNotebookCommand
894
1077
  link "Cmd+Alt+I", ToggleInvisibles
895
- link "Ctrl+R", Runnables::RunEditTabCommand
896
- link "Cmd+I", OutlineView::OpenOutlineViewCommand
1078
+ link "Cmd++", IncreaseFontSize
1079
+ link "Cmd+-", DecreaseFontSize
897
1080
 
898
1081
  link "Ctrl+Shift+P", PrintScopeCommand
899
1082
  link "Cmd+Shift+H", ToggleTreesCommand
900
1083
 
901
- link "Cmd+Shift+R", PluginManagerUi::ReloadLastReloadedCommand
1084
+ # link "Cmd+Shift+R", PluginManagerUi::ReloadLastReloadedCommand
902
1085
 
903
1086
  link "Cmd+Alt+S", Snippets::OpenSnippetExplorer
904
1087
  #Textmate.attach_keybindings(self, :osx)
@@ -921,6 +1104,7 @@ Redcar.environment: #{Redcar.environment}
921
1104
  link "Ctrl+Shift+S", Project::FileSaveAsCommand
922
1105
  link "Ctrl+W", CloseTabCommand
923
1106
  link "Ctrl+Shift+W", CloseWindowCommand
1107
+ link "Alt+Shift+W", CloseTreeCommand
924
1108
  link "Ctrl+Q", QuitCommand
925
1109
 
926
1110
  link "Ctrl+Enter", MoveNextLineCommand
@@ -935,47 +1119,59 @@ Redcar.environment: #{Redcar.environment}
935
1119
 
936
1120
  link "Ctrl+Home", MoveTopCommand
937
1121
  link "Home", MoveHomeCommand
1122
+ link "Ctrl+Alt+A", MoveHomeCommand
938
1123
  link "End", MoveEndCommand
1124
+ link "Ctrl+Alt+E", MoveEndCommand
939
1125
  link "Ctrl+End", MoveBottomCommand
940
1126
 
941
1127
  link "Ctrl+[", DecreaseIndentCommand
942
1128
  link "Ctrl+]", IncreaseIndentCommand
943
1129
  link "Ctrl+Shift+[", AutoIndenter::IndentCommand
944
1130
  link "Ctrl+L", GotoLineCommand
945
- link "Ctrl+F", DocumentSearch::SearchForwardCommand
946
- link "Ctrl+H", DocumentSearch::SearchAndReplaceCommand
947
- link "F3", DocumentSearch::RepeatPreviousSearchForwardCommand
948
- link "Ctrl+Shift+F", Redcar::FindInProject::OpenSearch
949
- link "Ctrl+A", SelectAllCommand
1131
+ link "Ctrl+A", SelectAllCommand
950
1132
  link "Ctrl+Alt+W", SelectWordCommand
1133
+ link "Ctrl+Alt+L", SelectLineCommand
951
1134
  link "Ctrl+B", ToggleBlockSelectionCommand
952
- link "Ctrl+Space", AutoCompleter::AutoCompleteCommand
1135
+ link "Escape", AutoCompleter::AutoCompleteCommand
1136
+ link "Ctrl+Escape", AutoCompleter::MenuAutoCompleterCommand
1137
+ link "Ctrl+Space", AutoCompleter::AutoCompleteCommand
953
1138
  link "Ctrl+Shift+Space", AutoCompleter::MenuAutoCompleterCommand
954
1139
 
955
1140
  link "Ctrl+U", EditView::UpcaseTextCommand
956
1141
  link "Ctrl+Shift+U", EditView::DowncaseTextCommand
957
1142
  link "Ctrl+Alt+U", EditView::TitlizeTextCommand
958
- link "Ctrl+G", EditView::OppositeCaseTextCommand
1143
+ link "Ctrl+Alt+Shift+U", EditView::OppositeCaseTextCommand
959
1144
  link "Ctrl+_", EditView::CamelSnakePascalRotateTextCommand
960
1145
  link "Ctrl+=", EditView::AlignAssignmentCommand
1146
+ link "Ctrl+Shift+^", SortLinesCommand
961
1147
 
1148
+ link "Ctrl+Shift+F", Redcar::FindInProject::OpenSearch
962
1149
  link "Ctrl+T", Project::FindFileCommand
963
1150
  link "Ctrl+Shift+Alt+O", MoveTabToOtherNotebookCommand
964
1151
 
965
- link "Ctrl+R", Runnables::RunEditTabCommand
966
-
967
1152
  link "Ctrl+Shift+P", PrintScopeCommand
968
1153
 
969
1154
  link "Ctrl+Alt+O", SwitchNotebookCommand
970
1155
  link "Ctrl+Shift+H", ToggleTreesCommand
1156
+ link "Alt+Page Up", SwitchTreeUpCommand
1157
+ link "Alt+Page Down", SwitchTreeDownCommand
971
1158
  link "Ctrl+Page Up", SwitchTabDownCommand
972
1159
  link "Ctrl+Page Down", SwitchTabUpCommand
973
1160
  link "Ctrl+Shift+Page Up", MoveTabDownCommand
974
1161
  link "Ctrl+Shift+Page Down", MoveTabUpCommand
975
- link "Ctrl+Shift+R", PluginManagerUi::ReloadLastReloadedCommand
1162
+ link "Ctrl+Shift+T", OpenTreeFinderCommand
1163
+ link "Alt+Shift+J", IncreaseTreebookWidthCommand
1164
+ link "Alt+Shift+H", DecreaseTreebookWidthCommand
1165
+ link "Ctrl+Shift+>", EnlargeFirstNotebookCommand
1166
+ link "Ctrl+Shift+<", EnlargeSecondNotebookCommand
1167
+ link "Ctrl+Shift+L", ResetNotebookWidthsCommand
1168
+ link "Ctrl+Shift+:", RotateNotebooksCommand
1169
+ link "Alt+Shift+N", CloseNotebookCommand
1170
+ # link "Ctrl+Shift+R", PluginManagerUi::ReloadLastReloadedCommand
976
1171
  link "F11", ToggleFullscreen
977
1172
  link "Ctrl+Alt+I", ToggleInvisibles
978
- link "Ctrl+I", OutlineView::OpenOutlineViewCommand
1173
+ link "Ctrl++", IncreaseFontSize
1174
+ link "Ctrl+-", DecreaseFontSize
979
1175
 
980
1176
  link "Ctrl+Alt+S", Snippets::OpenSnippetExplorer
981
1177
 
@@ -1018,6 +1214,8 @@ Redcar.environment: #{Redcar.environment}
1018
1214
  item "Close Tab", CloseTabCommand
1019
1215
  item "Close Tree", CloseTreeCommand
1020
1216
  item "Close Window", CloseWindowCommand
1217
+ item "Close Others", CloseOthers
1218
+ item "Close All", CloseAll
1021
1219
  end
1022
1220
 
1023
1221
  group(:priority => :last) do
@@ -1084,17 +1282,28 @@ Redcar.environment: #{Redcar.environment}
1084
1282
  end
1085
1283
  sub_menu "View", :priority => 30 do
1086
1284
  sub_menu "Appearance", :priority => 5 do
1087
- item "Font", SelectNewFont
1088
- item "Font Size", SelectFontSize
1089
- item "Theme", SelectTheme
1285
+ item "Select Theme", SelectTheme
1286
+ separator
1287
+ item "Select Font" , SelectNewFont
1288
+ item "Select Font Size" , SelectFontSize
1289
+ item "Increase Font Size", IncreaseFontSize
1290
+ item "Decrease Font Size", DecreaseFontSize
1090
1291
  end
1091
1292
  group(:priority => 10) do
1092
1293
  separator
1093
- item "Toggle Tree Visibility", :command => ToggleTreesCommand
1094
1294
  item "Toggle Fullscreen", :command => ToggleFullscreen, :type => :check, :active => window ? window.fullscreen : false
1095
1295
  end
1096
1296
  group(:priority => 15) do
1097
1297
  separator
1298
+ sub_menu "Trees" do
1299
+ item "Open Tree Finder", OpenTreeFinderCommand
1300
+ item "Toggle Tree Visibility", ToggleTreesCommand
1301
+ item "Increase Tree Width", IncreaseTreebookWidthCommand
1302
+ item "Decrease Tree Width", DecreaseTreebookWidthCommand
1303
+ separator
1304
+ item "Previous Tree", SwitchTreeUpCommand
1305
+ item "Next Tree", SwitchTreeDownCommand
1306
+ end
1098
1307
  lazy_sub_menu "Windows" do
1099
1308
  GenerateWindowsMenu.new(self).run
1100
1309
  end
@@ -1104,6 +1313,10 @@ Redcar.environment: #{Redcar.environment}
1104
1313
  item "Rotate Notebooks", RotateNotebooksCommand
1105
1314
  item "Move Tab To Other Notebook", MoveTabToOtherNotebookCommand
1106
1315
  item "Switch Notebooks", SwitchNotebookCommand
1316
+ separator
1317
+ item "Enlarge First Notebook", EnlargeFirstNotebookCommand
1318
+ item "Enlarge Second Notebook", EnlargeSecondNotebookCommand
1319
+ item "Reset Notebook Widths", ResetNotebookWidthsCommand
1107
1320
  end
1108
1321
  sub_menu "Tabs" do
1109
1322
  item "Previous Tab", SwitchTabDownCommand