redcar 0.10 → 0.11.0dev

Sign up to get free protection for your applications and to get access to all the features.
Files changed (77) hide show
  1. data/CHANGES +14 -0
  2. data/Rakefile +68 -29
  3. data/lib/redcar.rb +2 -2
  4. data/plugins/application/lib/application/dialogs/filter_list_dialog.rb +2 -1
  5. data/plugins/application_swt/spec/application_swt/gradient_spec.rb +3 -12
  6. data/plugins/core/lib/core/resource.rb +13 -5
  7. data/plugins/document_search/features/find.feature +366 -214
  8. data/plugins/document_search/features/incremental_search.feature +351 -0
  9. data/plugins/document_search/features/replace.feature +16 -16
  10. data/plugins/document_search/features/step_definitions/find_steps.rb +16 -0
  11. data/plugins/document_search/features/support/env.rb +11 -0
  12. data/plugins/document_search/lib/document_search.rb +149 -109
  13. data/plugins/document_search/lib/document_search/commands.rb +251 -202
  14. data/plugins/document_search/lib/document_search/find_speedbar.rb +138 -81
  15. data/plugins/document_search/lib/document_search/incremental_search_speedbar.rb +70 -0
  16. data/plugins/document_search/lib/document_search/query_options.rb +15 -39
  17. data/plugins/document_search/plugin.rb +1 -1
  18. data/plugins/edit_view/features/step_definitions/editing_steps.rb +6 -2
  19. data/plugins/edit_view_swt/lib/edit_view_swt.rb +2 -2
  20. data/plugins/file_parser/lib/file_parser.rb +6 -1
  21. data/plugins/html_view/features/step_definitions/web_view_steps.rb +12 -0
  22. data/plugins/html_view/features/support/env.rb +16 -0
  23. data/plugins/html_view/lib/html_view.rb +5 -1
  24. data/plugins/line_tools/lib/line_tools.rb +16 -0
  25. data/plugins/project/features/find_file.feature +28 -0
  26. data/plugins/project/features/open_and_save_files.feature +11 -0
  27. data/plugins/project/features/step_definitions/file_steps.rb +6 -1
  28. data/plugins/project/features/support/env.rb +2 -0
  29. data/plugins/project/lib/project.rb +49 -6
  30. data/plugins/project/lib/project/commands.rb +18 -6
  31. data/plugins/project/lib/project/find_file_dialog.rb +19 -8
  32. data/plugins/project/lib/project/find_recent_dialog.rb +30 -0
  33. data/plugins/project/lib/project/manager.rb +41 -10
  34. data/plugins/project/lib/project/recent.rb +64 -0
  35. data/plugins/project/spec/fixtures/myproject/vendor/bar.rb +0 -0
  36. data/plugins/project/spec/fixtures/myproject/vendor/plugins/bar.rb +0 -0
  37. data/plugins/{find-in-project → project_search}/TODO.md +3 -3
  38. data/plugins/project_search/features/support/env.rb +6 -0
  39. data/plugins/project_search/features/word_search.feature +34 -0
  40. data/plugins/project_search/lib/project_search.rb +73 -0
  41. data/plugins/project_search/lib/project_search/binary_data_detector.rb +46 -0
  42. data/plugins/project_search/lib/project_search/commands.rb +62 -0
  43. data/plugins/project_search/lib/project_search/hit.rb +17 -0
  44. data/plugins/{find-in-project/lib/find_in_project → project_search/lib/project_search}/images/collapsed.png +0 -0
  45. data/plugins/{find-in-project/lib/find_in_project → project_search/lib/project_search}/images/expanded.png +0 -0
  46. data/plugins/{find-in-project/lib/find_in_project → project_search/lib/project_search}/images/spinner.gif +0 -0
  47. data/plugins/project_search/lib/project_search/lucene_index.rb +64 -0
  48. data/plugins/project_search/lib/project_search/lucene_refresh.rb +22 -0
  49. data/plugins/project_search/lib/project_search/project.rb +14 -0
  50. data/plugins/project_search/lib/project_search/query.rb +29 -0
  51. data/plugins/{find-in-project/lib/find_in_project → project_search/lib/project_search}/stylesheets/style.css +14 -3
  52. data/plugins/project_search/lib/project_search/views/_file.html.erb +60 -0
  53. data/plugins/{find-in-project/lib/find_in_project → project_search/lib/project_search}/views/index.html.erb +12 -9
  54. data/plugins/project_search/lib/project_search/word_search.rb +105 -0
  55. data/plugins/project_search/lib/project_search/word_search_controller.rb +207 -0
  56. data/plugins/project_search/plugin.rb +8 -0
  57. data/plugins/project_search/spec/fixtures/project/binary_file.bin +0 -0
  58. data/plugins/project_search/spec/fixtures/project/foo.txt +43 -0
  59. data/plugins/project_search/spec/fixtures/project/qux.rb +3 -0
  60. data/plugins/project_search/spec/project_search/binary_data_detector_spec.rb +24 -0
  61. data/plugins/project_search/spec/project_search/word_search_spec.rb +157 -0
  62. data/plugins/project_search/spec/spec_helper.rb +27 -0
  63. data/plugins/redcar/redcar.rb +77 -71
  64. data/plugins/ruby/lib/ruby/syntax_checker.rb +1 -1
  65. data/plugins/snippets/features/snippets.feature +12 -0
  66. data/plugins/snippets/lib/snippets/tab_handler.rb +1 -1
  67. metadata +46 -25
  68. data/plugins/document_search/features/find_and_replace.feature +0 -723
  69. data/plugins/document_search/lib/document_search/find_and_replace_speedbar.rb +0 -142
  70. data/plugins/find-in-project/lib/find_in_project.rb +0 -35
  71. data/plugins/find-in-project/lib/find_in_project/commands.rb +0 -30
  72. data/plugins/find-in-project/lib/find_in_project/controllers.rb +0 -170
  73. data/plugins/find-in-project/lib/find_in_project/views/_divider.html.erb +0 -4
  74. data/plugins/find-in-project/lib/find_in_project/views/_file_heading.html.erb +0 -10
  75. data/plugins/find-in-project/lib/find_in_project/views/_file_line.html.erb +0 -6
  76. data/plugins/find-in-project/plugin.rb +0 -11
  77. data/plugins/project/lib/project/recent_directories.rb +0 -54
@@ -0,0 +1,8 @@
1
+
2
+ Plugin.define do
3
+ name "project_search"
4
+ version "1.0"
5
+ file "lib", "project_search"
6
+ object "ProjectSearch"
7
+ dependencies "project", ">0"
8
+ end
@@ -0,0 +1,43 @@
1
+ Foo Bar Baz
2
+ foo bar baz
3
+ Corge Corge Corge
4
+
5
+ 111
6
+ 222
7
+ 333
8
+ 444
9
+ 555
10
+ 666
11
+ 777
12
+ 888
13
+ 999
14
+ 000
15
+ ,,,
16
+ aaa
17
+ bbb xxx
18
+ ccc xxx
19
+ ddd
20
+ eee xxx
21
+ fff
22
+ ggg
23
+ hhh xxx
24
+ iii
25
+ jjj
26
+ kkk
27
+ lll xxx
28
+ mmm
29
+ nnn
30
+ ooo
31
+ ppp
32
+ qqq xxx
33
+ rrr
34
+ sss
35
+ ttt
36
+ uuu
37
+ vvv
38
+ www xxx
39
+ yyy
40
+ zzz
41
+ ...
42
+
43
+ Christmas
@@ -0,0 +1,3 @@
1
+ qux.quux
2
+
3
+ Christmas
@@ -0,0 +1,24 @@
1
+
2
+ require File.dirname(__FILE__) + '/../spec_helper'
3
+
4
+ describe ProjectSearch::BinaryDataDetector do
5
+
6
+ it "should detect plain text files" do
7
+ txt1 = File.read(project_search_fixture_dir + "/foo.txt")
8
+ txt2 = File.read(project_search_fixture_dir + "/qux.rb")
9
+
10
+ ProjectSearch::BinaryDataDetector.textual?(txt1).should be_true
11
+ ProjectSearch::BinaryDataDetector.textual?(txt2).should be_true
12
+
13
+ ProjectSearch::BinaryDataDetector.binary?(txt1).should be_false
14
+ ProjectSearch::BinaryDataDetector.binary?(txt2).should be_false
15
+ end
16
+
17
+ it "should detect binary files" do
18
+ bin = File.read(project_search_fixture_dir + "/binary_file.bin")
19
+
20
+ ProjectSearch::BinaryDataDetector.textual?(bin).should be_false
21
+
22
+ ProjectSearch::BinaryDataDetector.binary?(bin).should be_true
23
+ end
24
+ end
@@ -0,0 +1,157 @@
1
+
2
+ require File.dirname(__FILE__) + "/../spec_helper"
3
+
4
+ describe ProjectSearch::WordSearch do
5
+ after do
6
+ FileUtils.rm_rf(project_search_fixture_dir + "/.redcar")
7
+ ProjectSearch.indexes.clear
8
+ end
9
+
10
+ describe "options of the search" do
11
+ it "should have a query_string method" do
12
+ make_search("testset").query_string.should == "testset"
13
+ end
14
+
15
+ it "should construct a regex to match the query string" do
16
+ make_search("asdf", false).regex.should == /asdf/i
17
+ make_search("asdf", true).regex.should == /asdf/
18
+ end
19
+
20
+ it "should respond whether matching case or not" do
21
+ make_search("asdf", nil).match_case?.should == false
22
+ make_search("asdf", 123).match_case?.should == true
23
+ end
24
+ end
25
+
26
+ def fixture_project
27
+ @fixture_project ||= Redcar::Project.new(project_search_fixture_dir)
28
+ end
29
+
30
+ def make_search(query, match_case=true, context=0)
31
+ ProjectSearch::WordSearch.new(fixture_project, query, match_case, context)
32
+ end
33
+
34
+ describe "finding hits" do
35
+ it "should find one occurrence" do
36
+ results = make_search("Foo").results
37
+ results.length.should == 1
38
+ result = results.first
39
+ result.should be_an_instance_of(ProjectSearch::Hit)
40
+ result.file.should == project_search_fixture_dir + "/foo.txt"
41
+ result.line_num.should == 0
42
+ result.line("<b>", "</b>").should == "<b>Foo</b> Bar Baz"
43
+ end
44
+
45
+ it "should ignore binary files" do
46
+ results = make_search("HoHo").results
47
+ results.length.should == 0
48
+ end
49
+
50
+ it "should find every occurrence" do
51
+ results = make_search("xxx").results
52
+ results.length.should == 7
53
+ results.map {|r| r.line_num}.should == [16, 17, 19, 22, 26, 31, 37]
54
+ end
55
+
56
+ it "should ignore case if asked" do
57
+ results = make_search("Foo", false).results
58
+ results.length.should == 2
59
+ results.map {|r| r.line_num}.should == [0, 1]
60
+ results[0].file.should =~ /foo.txt$/
61
+ results[1].file.should =~ /foo.txt$/
62
+ end
63
+ end
64
+
65
+ describe "hits" do
66
+ it "should enwrap every occurrence" do
67
+ results = make_search("Corge").results
68
+ results.length.should == 1
69
+ result = results.first
70
+ result.should be_an_instance_of(ProjectSearch::Hit)
71
+ result.file.should == project_search_fixture_dir + "/foo.txt"
72
+ result.line_num.should == 2
73
+ result.line("<b>", "</b>").should == "<b>Corge</b> <b>Corge</b> <b>Corge</b>"
74
+ end
75
+ end
76
+
77
+ describe "pre context" do
78
+ it "should return pre context" do
79
+ results = make_search("333", true, 2).results
80
+ results.length.should == 1
81
+ result = results.first
82
+ result.pre_context.should == ["111", "222"]
83
+ end
84
+
85
+ it "should return no pre context for first line" do
86
+ results = make_search("Foo", true, 2).results
87
+ results.length.should == 1
88
+ result = results.first
89
+ result.pre_context.should == []
90
+ end
91
+
92
+ it "should return short pre context for second line" do
93
+ results = make_search("foo", true, 2).results
94
+ results.length.should == 1
95
+ result = results.first
96
+ result.pre_context.should == ["Foo Bar Baz"]
97
+ end
98
+
99
+ it "should return pre context for hits right after one another" do
100
+ results = make_search("xxx", true, 2).results
101
+ results[0].pre_context.should == [",,,", "aaa"]
102
+ results[1].pre_context.should == ["aaa", "bbb xxx"]
103
+ end
104
+ end
105
+
106
+ describe "post context" do
107
+ it "should return post context" do
108
+ results = make_search("333", true, 2).results
109
+ results.length.should == 1
110
+ result = results.first
111
+ result.post_context.should == ["444", "555"]
112
+ end
113
+
114
+ it "should return post context for hits right after one another" do
115
+ results = make_search("xxx", true, 2).results
116
+ results[0].post_context.should == ["ccc xxx", "ddd"]
117
+ results[1].post_context.should == ["ddd", "eee xxx"]
118
+ end
119
+ end
120
+
121
+ describe "when there are changes to the file system" do
122
+ it "should not return results for deleted files" do
123
+ test_file = File.expand_path(project_search_fixture_dir + "/jscar.txt")
124
+ File.open(test_file, "w") do |fout|
125
+ fout.puts "aa testword bb"
126
+ end
127
+
128
+ # indexing should have happened by now
129
+ search = make_search("testword")
130
+ search.results.map {|r| File.expand_path(r.file)}.should include(test_file)
131
+
132
+ FileUtils.rm_rf(test_file)
133
+
134
+ # should still work but should not include the result
135
+ search = make_search("testword")
136
+ search.results.map {|r| File.expand_path(r.file)}.should_not include(test_file)
137
+ end
138
+ end
139
+
140
+ describe "streaming search results" do
141
+ it "should stream by file" do
142
+ search = make_search("Christmas")
143
+ results_by_file = []
144
+ search.on_file_results do |file_hits|
145
+ results_by_file << file_hits
146
+ end
147
+ search.results
148
+ results_by_file.length.should == 2
149
+ results_by_file.map {|r| r.first.file.split("/").last}.sort.should == ["foo.txt", "qux.rb"].sort
150
+ end
151
+ end
152
+ end
153
+
154
+
155
+
156
+
157
+
@@ -0,0 +1,27 @@
1
+ $:.push File.expand_path(File.dirname(__FILE__) + '../../../lib')
2
+
3
+ require 'redcar'
4
+ Redcar.environment = :test
5
+ Redcar.load_unthreaded
6
+
7
+ class ImmediateTaskQueue
8
+ class Future
9
+ def initialize(value)
10
+ @value = value
11
+ end
12
+
13
+ def get
14
+ @value
15
+ end
16
+ end
17
+
18
+ def submit(task)
19
+ Future.new(task.execute)
20
+ end
21
+ end
22
+
23
+ Redcar::Resource.compute_synchronously = true
24
+
25
+ def project_search_fixture_dir
26
+ File.dirname(__FILE__) + "/fixtures/project"
27
+ end
@@ -74,11 +74,16 @@ module Redcar
74
74
  Runnables::RunningProcessChecker.new(
75
75
  Redcar.app.all_tabs.select {|t| t.is_a?(HtmlTab)},
76
76
  "Kill all and quit?",
77
- :none => lambda { Redcar.app.quit },
78
- :continue => lambda { Redcar.app.quit },
77
+ :none => lambda { quit },
78
+ :continue => lambda { quit },
79
79
  :cancel => nil
80
80
  ).check
81
81
  end
82
+
83
+ def quit
84
+ Project::Manager.open_projects.each {|pr| pr.close }
85
+ Redcar.app.quit
86
+ end
82
87
  end
83
88
 
84
89
  class NewCommand < Command
@@ -1011,40 +1016,41 @@ Redcar.environment: #{Redcar.environment}
1011
1016
  link "Cmd+O", Project::FileOpenCommand
1012
1017
  link "Cmd+U", Project::FileReloadCommand
1013
1018
  link "Cmd+Shift+O", Project::DirectoryOpenCommand
1019
+ link "Cmd+Alt+Ctrl+P", Project::FindRecentCommand
1014
1020
  #link "Cmd+Ctrl+O", Project::OpenRemoteCommand
1015
1021
  link "Cmd+S", Project::FileSaveCommand
1016
1022
  link "Cmd+Shift+S", Project::FileSaveAsCommand
1017
1023
  link "Cmd+W", CloseTabCommand
1018
1024
  link "Cmd+Shift+W", CloseWindowCommand
1019
- link "Alt+Shift+W", CloseTreeCommand
1025
+ link "Alt+Shift+W", CloseTreeCommand
1020
1026
  link "Cmd+Q", QuitCommand
1021
1027
 
1022
1028
  #link "Cmd+Return", MoveNextLineCommand
1023
1029
 
1024
1030
  link "Ctrl+Shift+E", EditView::InfoSpeedbarCommand
1025
- link "Cmd+Z", UndoCommand
1026
- link "Cmd+Shift+Z", RedoCommand
1027
- link "Cmd+X", CutCommand
1028
- link "Cmd+C", CopyCommand
1029
- link "Cmd+V", PasteCommand
1030
- link "Cmd+D", DuplicateCommand
1031
-
1032
- link "Home", MoveTopCommand
1033
- link "Ctrl+A", MoveHomeCommand
1034
- link "Ctrl+E", MoveEndCommand
1035
- link "End", MoveBottomCommand
1036
-
1037
- link "Cmd+[", DecreaseIndentCommand
1038
- link "Cmd+]", IncreaseIndentCommand
1039
- link "Cmd+Shift+I", AutoIndenter::IndentCommand
1040
- link "Cmd+L", GotoLineCommand
1041
- link "Cmd+A", SelectAllCommand
1042
- link "Ctrl+W", SelectWordCommand
1043
- link "Ctrl+L", SelectLineCommand
1044
- link "Cmd+B", ToggleBlockSelectionCommand
1045
- link "Escape", AutoCompleter::AutoCompleteCommand
1046
- link "Ctrl+Escape", AutoCompleter::MenuAutoCompleterCommand
1047
- link "Ctrl+Space", AutoCompleter::AutoCompleteCommand
1031
+ link "Cmd+Z", UndoCommand
1032
+ link "Cmd+Shift+Z", RedoCommand
1033
+ link "Cmd+X", CutCommand
1034
+ link "Cmd+C", CopyCommand
1035
+ link "Cmd+V", PasteCommand
1036
+ link "Cmd+D", DuplicateCommand
1037
+
1038
+ link "Home", MoveTopCommand
1039
+ link "Ctrl+A", MoveHomeCommand
1040
+ link "Ctrl+E", MoveEndCommand
1041
+ link "End", MoveBottomCommand
1042
+
1043
+ link "Cmd+[", DecreaseIndentCommand
1044
+ link "Cmd+]", IncreaseIndentCommand
1045
+ link "Cmd+Shift+I", AutoIndenter::IndentCommand
1046
+ link "Cmd+L", GotoLineCommand
1047
+ link "Cmd+A", SelectAllCommand
1048
+ link "Ctrl+W", SelectWordCommand
1049
+ link "Ctrl+L", SelectLineCommand
1050
+ link "Cmd+B", ToggleBlockSelectionCommand
1051
+ link "Escape", AutoCompleter::AutoCompleteCommand
1052
+ link "Ctrl+Escape", AutoCompleter::MenuAutoCompleterCommand
1053
+ link "Ctrl+Space", AutoCompleter::AutoCompleteCommand
1048
1054
  link "Ctrl+Shift+Space", AutoCompleter::MenuAutoCompleterCommand
1049
1055
 
1050
1056
  link "Ctrl+U", EditView::UpcaseTextCommand
@@ -1055,7 +1061,6 @@ Redcar.environment: #{Redcar.environment}
1055
1061
  link "Ctrl+=", EditView::AlignAssignmentCommand
1056
1062
  link "Ctrl+Shift+^", SortLinesCommand
1057
1063
 
1058
- link "Cmd+Shift+F", Redcar::FindInProject::OpenSearch
1059
1064
  link "Cmd+T", Project::FindFileCommand
1060
1065
  link "Cmd+Shift+Alt+O", MoveTabToOtherNotebookCommand
1061
1066
  link "Cmd+Alt+O", SwitchNotebookCommand
@@ -1078,8 +1083,8 @@ Redcar.environment: #{Redcar.environment}
1078
1083
  link "Cmd++", IncreaseFontSize
1079
1084
  link "Cmd+-", DecreaseFontSize
1080
1085
 
1081
- link "Ctrl+Shift+P", PrintScopeCommand
1082
- link "Cmd+Shift+H", ToggleTreesCommand
1086
+ link "Ctrl+Shift+P", PrintScopeCommand
1087
+ link "Cmd+Shift+H", ToggleTreesCommand
1083
1088
 
1084
1089
  # link "Cmd+Shift+R", PluginManagerUi::ReloadLastReloadedCommand
1085
1090
 
@@ -1099,6 +1104,7 @@ Redcar.environment: #{Redcar.environment}
1099
1104
  link "Ctrl+Alt+N", NewWindowCommand
1100
1105
  link "Ctrl+O", Project::FileOpenCommand
1101
1106
  link "Ctrl+Shift+O", Project::DirectoryOpenCommand
1107
+ link "Ctrl+Alt+Shift+P", Project::FindRecentCommand
1102
1108
  #link "Alt+Shift+O", Project::OpenRemoteCommand
1103
1109
  link "Ctrl+S", Project::FileSaveCommand
1104
1110
  link "Ctrl+Shift+S", Project::FileSaveAsCommand
@@ -1117,61 +1123,61 @@ Redcar.environment: #{Redcar.environment}
1117
1123
  link "Ctrl+V", PasteCommand
1118
1124
  link "Ctrl+D", DuplicateCommand
1119
1125
 
1120
- link "Ctrl+Home", MoveTopCommand
1121
- link "Home", MoveHomeCommand
1122
- link "Ctrl+Alt+A", MoveHomeCommand
1123
- link "End", MoveEndCommand
1124
- link "Ctrl+Alt+E", MoveEndCommand
1125
- link "Ctrl+End", MoveBottomCommand
1126
-
1127
- link "Ctrl+[", DecreaseIndentCommand
1128
- link "Ctrl+]", IncreaseIndentCommand
1129
- link "Ctrl+Shift+[", AutoIndenter::IndentCommand
1130
- link "Ctrl+L", GotoLineCommand
1131
- link "Ctrl+A", SelectAllCommand
1132
- link "Ctrl+Alt+W", SelectWordCommand
1133
- link "Ctrl+Alt+L", SelectLineCommand
1134
- link "Ctrl+B", ToggleBlockSelectionCommand
1135
- link "Escape", AutoCompleter::AutoCompleteCommand
1136
- link "Ctrl+Escape", AutoCompleter::MenuAutoCompleterCommand
1137
- link "Ctrl+Space", AutoCompleter::AutoCompleteCommand
1126
+ link "Ctrl+Home", MoveTopCommand
1127
+ link "Home", MoveHomeCommand
1128
+ link "Ctrl+Alt+A", MoveHomeCommand
1129
+ link "End", MoveEndCommand
1130
+ link "Ctrl+Alt+E", MoveEndCommand
1131
+ link "Ctrl+End", MoveBottomCommand
1132
+
1133
+ link "Ctrl+[", DecreaseIndentCommand
1134
+ link "Ctrl+]", IncreaseIndentCommand
1135
+ link "Ctrl+Shift+[", AutoIndenter::IndentCommand
1136
+ link "Ctrl+L", GotoLineCommand
1137
+ link "Ctrl+A", SelectAllCommand
1138
+ link "Ctrl+Alt+W", SelectWordCommand
1139
+ link "Ctrl+Alt+L", SelectLineCommand
1140
+ link "Ctrl+B", ToggleBlockSelectionCommand
1141
+ link "Escape", AutoCompleter::AutoCompleteCommand
1142
+ link "Ctrl+Escape", AutoCompleter::MenuAutoCompleterCommand
1143
+ link "Ctrl+Space", AutoCompleter::AutoCompleteCommand
1144
+
1138
1145
  link "Ctrl+Shift+Space", AutoCompleter::MenuAutoCompleterCommand
1139
1146
 
1140
- link "Ctrl+U", EditView::UpcaseTextCommand
1141
- link "Ctrl+Shift+U", EditView::DowncaseTextCommand
1142
- link "Ctrl+Alt+U", EditView::TitlizeTextCommand
1143
- link "Ctrl+Alt+Shift+U", EditView::OppositeCaseTextCommand
1144
- link "Ctrl+_", EditView::CamelSnakePascalRotateTextCommand
1145
- link "Ctrl+=", EditView::AlignAssignmentCommand
1146
- link "Ctrl+Shift+^", SortLinesCommand
1147
+ link "Ctrl+U", EditView::UpcaseTextCommand
1148
+ link "Ctrl+Shift+U", EditView::DowncaseTextCommand
1149
+ link "Ctrl+Alt+U", EditView::TitlizeTextCommand
1150
+ link "Ctrl+Alt+Shift+U", EditView::OppositeCaseTextCommand
1151
+ link "Ctrl+_", EditView::CamelSnakePascalRotateTextCommand
1152
+ link "Ctrl+=", EditView::AlignAssignmentCommand
1153
+ link "Ctrl+Shift+^", SortLinesCommand
1147
1154
 
1148
- link "Ctrl+Shift+F", Redcar::FindInProject::OpenSearch
1149
1155
  link "Ctrl+T", Project::FindFileCommand
1150
1156
  link "Ctrl+Shift+Alt+O", MoveTabToOtherNotebookCommand
1151
1157
 
1152
- link "Ctrl+Shift+P", PrintScopeCommand
1158
+ link "Ctrl+Shift+P", PrintScopeCommand
1153
1159
 
1154
- link "Ctrl+Alt+O", SwitchNotebookCommand
1155
- link "Ctrl+Shift+H", ToggleTreesCommand
1156
- link "Alt+Page Up", SwitchTreeUpCommand
1157
- link "Alt+Page Down", SwitchTreeDownCommand
1160
+ link "Ctrl+Alt+O", SwitchNotebookCommand
1161
+ link "Ctrl+Shift+H", ToggleTreesCommand
1162
+ link "Alt+Page Up", SwitchTreeUpCommand
1163
+ link "Alt+Page Down", SwitchTreeDownCommand
1158
1164
  link "Ctrl+Page Up", SwitchTabDownCommand
1159
1165
  link "Ctrl+Page Down", SwitchTabUpCommand
1160
1166
  link "Ctrl+Shift+Page Up", MoveTabDownCommand
1161
1167
  link "Ctrl+Shift+Page Down", MoveTabUpCommand
1162
1168
  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
1169
+ link "Alt+Shift+J", IncreaseTreebookWidthCommand
1170
+ link "Alt+Shift+H", DecreaseTreebookWidthCommand
1171
+ link "Ctrl+Shift+>", EnlargeFirstNotebookCommand
1172
+ link "Ctrl+Shift+<", EnlargeSecondNotebookCommand
1173
+ link "Ctrl+Shift+L", ResetNotebookWidthsCommand
1174
+ link "Ctrl+Shift+:", RotateNotebooksCommand
1175
+ link "Alt+Shift+N", CloseNotebookCommand
1170
1176
  # link "Ctrl+Shift+R", PluginManagerUi::ReloadLastReloadedCommand
1171
- link "F11", ToggleFullscreen
1172
- link "Ctrl+Alt+I", ToggleInvisibles
1173
- link "Ctrl++", IncreaseFontSize
1174
- link "Ctrl+-", DecreaseFontSize
1177
+ link "F11", ToggleFullscreen
1178
+ link "Ctrl+Alt+I", ToggleInvisibles
1179
+ link "Ctrl++", IncreaseFontSize
1180
+ link "Ctrl+-", DecreaseFontSize
1175
1181
 
1176
1182
  link "Ctrl+Alt+S", Snippets::OpenSnippetExplorer
1177
1183