redcar-dev 0.12.12dev-java → 0.12.13dev-java

Sign up to get free protection for your applications and to get access to all the features.
Files changed (33) hide show
  1. data/Rakefile +1 -1
  2. data/lib/redcar.rb +1 -1
  3. data/lib/tasks/app-bundle.rake +63 -0
  4. data/plugins/application/lib/application.rb +3 -0
  5. data/plugins/project_search/lib/project_search/commands.rb +5 -4
  6. data/plugins/project_search/lib/project_search/images/spinner.gif +0 -0
  7. data/plugins/project_search/lib/project_search/lucene_index.rb +1 -1
  8. data/plugins/project_search/lib/project_search/stylesheets/style.css +105 -37
  9. data/plugins/project_search/lib/project_search/views/_file.html.erb +4 -3
  10. data/plugins/project_search/lib/project_search/views/index.html.erb +42 -16
  11. data/plugins/project_search/lib/project_search/word_search.rb +23 -14
  12. data/plugins/project_search/lib/project_search/word_search_controller.rb +40 -29
  13. metadata +3 -22
  14. data/plugins/javascript/features/fixtures/test.js +0 -0
  15. data/plugins/javascript/features/fixtures/test2.js +0 -5
  16. data/plugins/javascript/features/step_definitions/javascript_steps.rb +0 -16
  17. data/plugins/javascript/features/support/env.rb +0 -18
  18. data/plugins/javascript/features/syntax_check_javascript.feature +0 -70
  19. data/plugins/javascript/lib/syntax_check/javascript.rb +0 -58
  20. data/plugins/javascript/plugin.rb +0 -7
  21. data/plugins/javascript/vendor/jslint.js +0 -539
  22. data/plugins/mirah/README +0 -7
  23. data/plugins/mirah/features/fixtures/test.mirah +0 -2
  24. data/plugins/mirah/features/syntax_check_mirah.feature +0 -46
  25. data/plugins/mirah/lib/mirah.rb +0 -43
  26. data/plugins/mirah/lib/mirah/my_error_handler.rb +0 -22
  27. data/plugins/mirah/lib/mirah/repl_mirror.rb +0 -50
  28. data/plugins/mirah/lib/mirah/syntax_checker.rb +0 -38
  29. data/plugins/mirah/plugin.rb +0 -8
  30. data/plugins/mirah/spec/mirah/repl_mirror_spec.rb +0 -188
  31. data/plugins/mirah/spec/spec_helper.rb +0 -5
  32. data/plugins/mirah/vendor/mirah-parser.jar +0 -0
  33. data/plugins/project_search/TODO.md +0 -11
data/Rakefile CHANGED
@@ -8,7 +8,7 @@ require 'spec/rake/spectask'
8
8
  require 'cucumber/rake/task'
9
9
  require "rake/gempackagetask"
10
10
  require "rake/rdoctask"
11
- Dir[File.expand_path("../tasks/*.rake", __FILE__)].each { |f| load f }
11
+ Dir[File.expand_path("../lib/tasks/*.rake", __FILE__)].each { |f| load f }
12
12
 
13
13
  if RUBY_PLATFORM =~ /mswin|mingw/
14
14
  begin
data/lib/redcar.rb CHANGED
@@ -57,7 +57,7 @@ end
57
57
  #
58
58
  # and so on.
59
59
  module Redcar
60
- VERSION = '0.12.12dev' # also change in the gemspec!
60
+ VERSION = '0.12.13dev' # also change in the gemspec!
61
61
  VERSION_MAJOR = 0
62
62
  VERSION_MINOR = 12
63
63
  VERSION_RELEASE = 0
@@ -0,0 +1,63 @@
1
+ desc "Build a MacOS X App bundle"
2
+ task :app_bundle do
3
+ require 'erb'
4
+
5
+ redcar_icon = "redcar-icon-beta.png"
6
+
7
+ bundle_contents = File.join("pkg", "Redcar.app", "Contents")
8
+ FileUtils.rm_rf bundle_contents if File.exist? bundle_contents
9
+ macos_dir = File.join(bundle_contents, "MacOS")
10
+ resources_dir = File.join(bundle_contents, "Resources")
11
+ FileUtils.mkdir_p macos_dir
12
+ FileUtils.mkdir_p resources_dir
13
+
14
+ info_plist_template = ERB.new <<-PLIST
15
+ <?xml version="1.0" encoding="UTF-8"?>
16
+ <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
17
+ <plist version="1.0">
18
+ <dict>
19
+ <key>CFBundleExecutable</key>
20
+ <string>redcar</string>
21
+ <key>CFBundleIconFile</key>
22
+ <string><%= redcar_icon %></string>
23
+ <key>CFBundleIdentifier</key>
24
+ <string>com.redcareditor.Redcar</string>
25
+ <key>CFBundleInfoDictionaryVersion</key>
26
+ <string>6.0</string>
27
+ <key>CFBundlePackageType</key>
28
+ <string>APPL</string>
29
+ <key>CFBundleSignature</key>
30
+ <string>????</string>
31
+ <key>CFBundleVersion</key>
32
+ <string><%= Spec.version %></string>
33
+ <key>LSMinimumSystemVersion</key>
34
+ <string>10.5</string>
35
+ </dict>
36
+ </plist>
37
+ PLIST
38
+ File.open(File.join(bundle_contents, "Info.plist"), "w") do |f|
39
+ f << info_plist_template.result(binding)
40
+ end
41
+
42
+ File.open(File.join(macos_dir, "redcar"), "w") do |f|
43
+ f << '#!/bin/sh
44
+ MACOS=$(cd "$(dirname "$0")"; pwd)
45
+ RESOURCES="$(cd "${MACOS}/../Resources/"; pwd)"
46
+ BIN="${RESOURCES}/bin/redcar"
47
+ JRUBY="${RESOURCES}/.redcar/assets/jruby-complete-*.jar"
48
+ java -cp $JRUBY -Djruby.fork.enabled=true org.jruby.Main "$BIN" --home-dir="${RESOURCES}" --ignore-stdin $@'
49
+ end
50
+ File.chmod 0777, File.join(macos_dir, "redcar")
51
+
52
+ Spec.files.each do |f|
53
+ unless File.directory?(f)
54
+ FileUtils.mkdir_p File.join(resources_dir, File.dirname(f))
55
+ FileUtils.cp f, File.join(resources_dir, f)
56
+ end
57
+ end
58
+
59
+ FileUtils.cp_r File.join(resources_dir, "share", "icons", redcar_icon), resources_dir
60
+
61
+ puts(install_cmd = "#{File.expand_path("../../bin/redcar", __FILE__)} --home-dir=#{resources_dir} install")
62
+ system(install_cmd)
63
+ end
@@ -60,6 +60,9 @@ module Redcar
60
60
 
61
61
  def self.start
62
62
  Redcar.app = Application.new
63
+ Redcar.plugin_manager.objects_implementing(:app_started).each do |object|
64
+ object.app_started
65
+ end
63
66
  end
64
67
 
65
68
  def self.sensitivities
@@ -2,7 +2,7 @@
2
2
  class ProjectSearch
3
3
  class RefreshIndex < Redcar::Command
4
4
  sensitize :open_project
5
-
5
+
6
6
  def execute
7
7
  if project = Redcar::Project::Manager.focussed_project
8
8
  if index = ProjectSearch.indexes[project.path]
@@ -12,17 +12,17 @@ class ProjectSearch
12
12
  end
13
13
  end
14
14
  end
15
-
15
+
16
16
  class WordSearchCommand < Redcar::Command
17
17
  sensitize :open_project
18
-
18
+
19
19
  def find_open_instance
20
20
  all_tabs = Redcar.app.focussed_window.notebooks.map { |nb| nb.tabs }.flatten
21
21
  all_tabs.find do |t|
22
22
  t.is_a?(Redcar::HtmlTab) && t.title == ProjectSearch::WordSearchController::TITLE
23
23
  end
24
24
  end
25
-
25
+
26
26
  def execute
27
27
  if project = Redcar::Project::Manager.focussed_project
28
28
  if tab = find_open_instance
@@ -33,6 +33,7 @@ class ProjectSearch
33
33
  if index and index.has_content?
34
34
  tab = win.new_tab(Redcar::HtmlTab)
35
35
  tab.html_view.controller = ProjectSearch::WordSearchController.new
36
+ tab.icon = :blue_folder_search_result
36
37
  tab.focus
37
38
  else
38
39
  Redcar::Application::Dialog.message_box("Your project is still being indexed.", :type => :error)
@@ -60,7 +60,7 @@ class ProjectSearch
60
60
  pre_contents = File.new(fn).read(200)
61
61
  unless !pre_contents or BinaryDataDetector.binary?(pre_contents)
62
62
  contents = File.read(fn)
63
- adjusted_contents = contents.gsub(/\.([^\s])/, '. \1')
63
+ adjusted_contents = contents
64
64
  @lucene_index << { :id => fn, :contents => adjusted_contents }
65
65
  end
66
66
  rescue => e
@@ -2,19 +2,26 @@
2
2
  margin: 0;
3
3
  padding: 0;
4
4
  font-weight: normal;
5
+ font-family: Helvetica Neue, Sawasdee, sans-serif;
6
+ }
7
+
8
+ body {
9
+ background-color:#ddd;
5
10
  font-size: 14px;
6
- font-family: sans-serif;
7
11
  }
8
12
 
9
13
  #search_form_container {
10
14
  background-color: #eee;
11
15
  width: 100%;
12
- margin: -8px 0px 20px -8px;
13
- padding: 16px 8px 10px 0;
16
+ margin: -8px 0px 20px -40px;
17
+ padding: 16px 40px 10px 0;
14
18
  border-bottom: 2px solid #ddd;
15
19
  position: fixed;
16
20
  top: 0;
17
21
  left: 0;
22
+ -webkit-box-shadow: 0px 0px 10px rgba(0,0,0,.5);
23
+ -moz-box-shadow: 0px 0px 10px rgba(0,0,0,.5);
24
+ box-shadow: 0px 0px 10px rgba(0,0,0,.5);
18
25
  }
19
26
 
20
27
  #search_form_container table {
@@ -32,28 +39,40 @@
32
39
  text-align: right;
33
40
  }
34
41
 
35
- #search_form_container .input .field input {
42
+ #search_form_container .input .field #query {
36
43
  width: 100%;
37
- height: 20px;
38
- font-family: monospace;
44
+ }
45
+
46
+ #search_form_container .input .field input {
47
+ height: 25px;
39
48
  }
40
49
 
41
50
  #search_form_container .input .expand {
42
- width: 20px;
51
+ width: 100px;
43
52
  padding: 3px 0px;
44
53
  }
45
54
 
55
+ #search_form_container .input .expand #search {
56
+ width: 60px;
57
+ padding:0 4px;
58
+ font-size:11px;
59
+ }
60
+
46
61
  #search_form_container .input .expand a {
47
- color: black;
48
- font-weight: bold;
62
+ background-color: #bcbcbc;
49
63
  text-decoration: none;
50
64
  display: block;
51
65
  width: 20px;
52
- height: 18px;
53
- background-color: #777;
54
- border: 1px solid #000;
66
+ height: 20px;
67
+ color: #d0d0d0;
68
+ border: 1px solid #b0b0b0;
69
+ font-size:12px;
55
70
  text-align: center;
56
- color: #fff;
71
+ margin-top:1px;
72
+ margin-left:-3px;
73
+ z-index:9999;
74
+ -moz-border-radius-topright:4px;
75
+ -moz-border-radius-bottomright:4px;
57
76
  }
58
77
 
59
78
  #search_form_container .controls label {
@@ -70,18 +89,30 @@
70
89
  margin-right: 7px;
71
90
  }
72
91
 
92
+ #search_copy {
93
+ font-size:80%;
94
+ display:block;
95
+ }
96
+
97
+ #search {
98
+ float:right;
99
+ width:20%;
100
+ }
101
+
73
102
  #recent_queries {
74
103
  position: absolute;
75
- top: 41px;
104
+ top: 45px;
76
105
  left: 124px;
77
- right: 34px;
78
- border: 1px solid #000;
106
+ right: 122px;
107
+ border: 1px solid #acacac;
79
108
  background-color: #fff;
109
+ box-shadow:2px 3px 5px #bbb;
110
+ -moz-box-shadow:2px 3px 5px #ccc;
80
111
  }
81
112
 
82
113
  #recent_queries ul {
83
114
  list-style: none;
84
- height: 100px;
115
+ height: 120px;
85
116
  overflow: auto;
86
117
  }
87
118
 
@@ -95,7 +126,7 @@
95
126
  }
96
127
 
97
128
  #results_container {
98
- margin-top: 95px;
129
+ margin-top: 120px;
99
130
  margin-bottom: 25px;
100
131
  }
101
132
 
@@ -107,7 +138,7 @@
107
138
  }
108
139
 
109
140
  #results {
110
- padding: 0 10px 10px 10px;
141
+ /* padding: 0 10px 10px 10px;*/
111
142
  }
112
143
 
113
144
  #results table {
@@ -121,10 +152,11 @@
121
152
  #results .line_num {
122
153
  background-color: #eee;
123
154
  padding: 3px 10px;
155
+ border-right:1px solid #ddd;
124
156
  }
125
157
 
126
158
  #results .even {
127
- background-color: #F4F4F4;
159
+ background-color: #F9F9F9;
128
160
  }
129
161
 
130
162
  #results .odd {
@@ -132,9 +164,11 @@
132
164
  }
133
165
 
134
166
  #results .file_heading {
135
- background-color: #eee;
136
- padding: 4px;
167
+ /* background-color: #ccc;*/
168
+ padding: 4px 4px 4px 12px;
137
169
  font-weight: bold;
170
+ font-family:Helvetica Neue, Sawasdee, sans-serif;
171
+ border-bottom: 1px dotted #aaa;
138
172
  }
139
173
 
140
174
  #results .file_heading img {
@@ -144,7 +178,6 @@
144
178
 
145
179
  #results .file_heading a {
146
180
  font-weight: bold;
147
- font-family: sans-serif;
148
181
  }
149
182
 
150
183
  #results .line_num {
@@ -152,38 +185,39 @@
152
185
  padding: 0 5px;
153
186
  min-width: 20px;
154
187
  cursor: hand;
155
- font-size: 12px;
156
- line-height: 12px;
157
- font-family: sans-serif;
158
188
  }
159
189
 
160
190
  #results .divider .line_num {
161
191
  cursor: default;
162
192
  text-align: center;
163
- background-color: #fff;
193
+ /* background-color: #ddd;*/
194
+
164
195
  color: #555;
165
196
  }
166
197
 
167
198
  #results .text {
168
199
  padding: 3px 10px;
169
200
  width: 100%;
170
- cursor: hand;
171
- }
172
-
173
- #results .text pre {
174
- font-size: 14px;
175
- line-height: 17px;
176
- font-family: monospace;
201
+ cursor: pointer;
177
202
  }
178
203
 
179
204
  #results .divider .text {
180
205
  cursor: default;
206
+ -moz-box-shadow:1px 1px 3px #bbb inset;
181
207
  }
182
208
 
183
209
  #results .text pre span {
184
- background-color: #FFCCCC;
210
+ background-color: #fff319;
211
+ border:1px solid #efda17;
185
212
  font-weight: bold;
186
- font-family: monospace;
213
+ box-shadow:1px 1px 1px #c49e28;
214
+ -moz-box-shadow:1px 1px 1px #c49e28;
215
+ border-radius:3px;
216
+ -moz-border-radius:3px;
217
+ }
218
+
219
+ #results .text pre span:hover {
220
+ padding: 1px 0;
187
221
  }
188
222
 
189
223
  #results .break {
@@ -196,7 +230,13 @@
196
230
  left: 0;
197
231
  right: 0;
198
232
  font-size: 1.5em;
199
- font-family: sans-serif;
233
+ -moz-border-radius: 4px;
234
+ opacity:0.5;
235
+ }
236
+
237
+ #results_summary:hover {
238
+ opacity:1.0;
239
+ cursor:pointer;
200
240
  }
201
241
 
202
242
  #results_summary .text {
@@ -209,3 +249,31 @@
209
249
  border-top-right-radius: 1em;
210
250
  padding: 3px 5px;
211
251
  }
252
+
253
+ #files_nav {
254
+ text-align:left;
255
+ }
256
+
257
+ #files_nav a:link,#files_nav a:visited,#files_nav a:hover {
258
+ text-decoration:none;
259
+ color:#212121;
260
+ }
261
+
262
+ #files_nav a:hover {
263
+ background-color: #fff319;
264
+ border:1px solid #efda17;
265
+ font-weight: bold;
266
+ box-shadow:1px 1px 1px #c49e28;
267
+ -moz-box-shadow:1px 1px 1px #c49e28;
268
+ border-radius:3px;
269
+ -moz-border-radius:3px;
270
+ }
271
+
272
+ #files_nav_container {
273
+ max-height:300px;
274
+ overflow-y:scroll;
275
+ }
276
+
277
+ ul {
278
+ list-style-type: none;
279
+ }
@@ -1,8 +1,9 @@
1
-
2
1
  <tr><td class='break' colspan='2'></td></tr>
3
2
  <tr>
4
3
  <td class="file_heading" colspan="2">
5
- <%= CGI::escapeHTML(file.gsub(@word_search.project.path + "/", "")) %>
4
+ <a id="<%=File.basename(file).gsub(/\.|:|\\|\//,"")%>">
5
+ <%= CGI::escapeHTML(file.gsub(@word_search.project.path + "/", "")) %>
6
+ </a>
6
7
  </td>
7
8
  </tr>
8
9
 
@@ -15,7 +16,7 @@
15
16
  <% display_line_num = hit.line_num + 1%>
16
17
  <% if @word_search.context? and last_matching_line_num and (display_line_num - last_matching_line_num) > (@word_search.context_size * 2) %>
17
18
  <tr class="divider file_<%= file_num %>">
18
- <td class="line_num">. . .</td>
19
+ <td class="line_num">&#8230;</td>
19
20
  <td class="text">&nbsp;</td> <!-- extra space to ensure line-height is respected -->
20
21
  </tr>
21
22
  <% end %>
@@ -1,21 +1,37 @@
1
+ <html>
2
+ <head>
1
3
  <% jquery_path = File.expand_path(File.join(Redcar.root, %w(plugins html_view assets jquery-1.4.min.js))) %>
2
4
  <script type="text/javascript" src="file://<%= jquery_path %>"></script>
3
5
  <% json_path = File.expand_path(File.join(Redcar.root, %w(plugins html_view assets json2.js))) %>
4
6
  <script type="text/javascript" src="file://<%= json_path %>"></script>
5
7
 
6
8
  <% plugin_css = File.expand_path(File.join(plugin_root, %w(lib project_search stylesheets style.css))) %>
9
+ <style>
10
+ <% font_size = (Redcar::EditView.font_size * 1.5).to_i %>
11
+ #results .text pre, #results .text pre span, #query,#results .line_num, #recent_queries {
12
+ font-family: <%= Redcar::EditView.font %>;
13
+ font-size: <%= font_size - 6 %>px;
14
+ }
15
+ #results .line_num {
16
+ font-size:<%= font_size - 8 %>px;
17
+ line-height:<%= font_size - 8 %>px;
18
+ }
19
+ #results .text pre {
20
+ font-size: <%= font_size - 6 %>px;
21
+ line-height: <%= font_size - 3 %>px;
22
+ }
23
+ </style>
7
24
  <link rel="stylesheet" href="file://<%= plugin_css %>" type="text/css" media="screen">
8
-
9
- <% image_path = File.expand_path(File.join(plugin_root, %w(lib project_search images))) %>
10
-
25
+ </head>
26
+ <body>
11
27
  <div id="search_form_container">
12
28
  <form id="search_form">
13
29
  <table>
14
30
  <tr class="input">
15
- <td class="label"><label for="query">Search Term</label></td>
31
+ <td class="label"><label for="query">Words:</label></td>
16
32
  <td class="field">
17
- <input id="query" type="text" value="<%= default_query %>" />
18
-
33
+ <input id="query" type="text" value="<%= default_query %>"/>
34
+
19
35
  <!-- keeps a cache of the current query so if the user changes the query field, this remains the same as the results -->
20
36
  <input id="cached_query" type="hidden" />
21
37
 
@@ -28,14 +44,13 @@
28
44
  </div>
29
45
  </td>
30
46
  <td class="expand">
31
- <a href="#" title="Toggle Recent Queries" id="toggle_recent_queries">&darr;</a>
47
+ <input id="search" type="submit" value="Search" />
48
+ <a href="#" title="Toggle Recent Queries" id="toggle_recent_queries">&#9660;</a>
32
49
  </td>
33
50
  </tr>
34
51
  <tr>
35
52
  <td></td>
36
53
  <td class="controls">
37
- <input id="search" type="submit" value="Find In Project" />
38
- <img id="spinner" src="<%= image_path %>/spinner.gif" style="display:none;" />
39
54
  <% if show_literal_match_option? %>
40
55
  <input type="checkbox" id="literal_match" <%="checked=checked" if @literal_match %>>
41
56
  <label for="literal_match">Literal Match</label>
@@ -44,7 +59,6 @@
44
59
  <label for="match_case">Match case</label>
45
60
  <input type="checkbox" id="with_context" <%="checked=checked" if context? %>>
46
61
  <label for="with_context">With context</label>
47
- <%= search_copy %>
48
62
  </td>
49
63
  <td></td>
50
64
  </tr>
@@ -63,6 +77,11 @@
63
77
  <div id="results_summary" style="display: none;">
64
78
  <div class="text">
65
79
  <span id="line_results_count">0</span> lines matched in <span id="file_results_count">0</span> files
80
+ <span style="float:right">&#9660;</span>
81
+ <div id="files_nav_container" style="display:none">
82
+ <ul id="files_nav">
83
+ </ul>
84
+ </div>
66
85
  </div>
67
86
  </div>
68
87
 
@@ -93,13 +112,9 @@
93
112
 
94
113
  $('#toggle_recent_queries').click(function(ev) {
95
114
  ev.preventDefault();
96
- if ($('#recent_queries').is(":visible")) {
97
- $('#recent_queries').hide();
98
- } else {
99
- $('#recent_queries').show();
100
- }
115
+ $('#recent_queries').slideToggle('fast');
101
116
  });
102
-
117
+
103
118
  // in the case the user wants to search for things like <table>, we need to unescape the entities
104
119
  String.prototype.unescapeHTML = function() {
105
120
  var t = document.createElement('div');
@@ -126,5 +141,16 @@
126
141
  }
127
142
  });
128
143
 
144
+ $('.text').click(function() {
145
+ $('#files_nav_container').slideToggle();
146
+ });
147
+
148
+ $('.file_link').live('click',function() {
149
+ $('body').animate({
150
+ scrollTop: $("#"+$(this).attr('id').replace("link_","")).offset().top - 120
151
+ }, 0);
152
+ });
129
153
  });
130
154
  </script>
155
+ </body>
156
+ </html>