redcar 0.12.1 → 0.13
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 +18 -0
- data/bin/redcar +1 -0
- data/lib/redcar.rb +4 -5
- data/lib/redcar/usage.rb +0 -1
- data/lib/redcar_quick_start.rb +3 -1
- data/plugins/application/lib/application.rb +1 -0
- data/plugins/application/lib/application/commands/treebook_commands.rb +11 -18
- data/plugins/application/lib/application/dialog.rb +1 -1
- data/plugins/application/lib/application/dialogs/filter_list_dialog.rb +13 -5
- data/plugins/application/lib/application/global_state.rb +21 -0
- data/plugins/application/lib/application/menu/item.rb +37 -11
- data/plugins/application/lib/application/notebook.rb +12 -0
- data/plugins/application/lib/application/tree/mirror.rb +0 -11
- data/plugins/application/lib/application/window.rb +32 -7
- data/plugins/application_swt/lib/application_swt.rb +1 -1
- data/plugins/application_swt/lib/application_swt/dialogs/filter_list_dialog_controller.rb +35 -10
- data/plugins/application_swt/lib/application_swt/icon.rb +1 -1
- data/plugins/application_swt/lib/application_swt/menu.rb +47 -15
- data/plugins/application_swt/lib/application_swt/notebook.rb +11 -2
- data/plugins/application_swt/lib/application_swt/window.rb +37 -34
- data/plugins/auto_indenter/lib/auto_indenter/analyzer.rb +1 -1
- data/plugins/auto_indenter/spec/auto_indenter/analyzer_spec.rb +9 -0
- data/plugins/declarations/lib/declarations.rb +31 -66
- data/plugins/declarations/lib/declarations/commands.rb +142 -0
- data/plugins/declarations/lib/declarations/file.rb +1 -1
- data/plugins/{outline_view → declarations}/spec/fixtures/some_project/javascript.js +0 -0
- data/plugins/{outline_view → declarations}/spec/fixtures/some_project/nothing_to_see.rb +0 -0
- data/plugins/{outline_view → declarations}/spec/fixtures/some_project/one_lonely_class.rb +0 -0
- data/plugins/{outline_view → declarations}/spec/fixtures/some_project/similar_names.rb +0 -0
- data/plugins/{outline_view → declarations}/spec/fixtures/some_project/something_fancy.rb +0 -0
- data/plugins/{outline_view → declarations}/spec/fixtures/some_project/trailing_space.rb +0 -0
- data/plugins/edit_view/lib/edit_view.rb +35 -2
- data/plugins/edit_view/lib/edit_view/commands/change_language_command.rb +31 -0
- data/plugins/edit_view/lib/edit_view/commands/language_settings_commands.rb +45 -0
- data/plugins/edit_view/lib/edit_view/document/command.rb +1 -1
- data/plugins/edit_view/lib/edit_view/edit_tab.rb +11 -13
- data/plugins/key_bindings/lib/key_bindings.rb +6 -2
- data/plugins/project/lib/project.rb +27 -32
- data/plugins/project/lib/project/commands.rb +3 -88
- data/plugins/project/lib/project/dir_controller.rb +12 -18
- data/plugins/project/lib/project/dir_mirror.rb +20 -25
- data/plugins/project/lib/project/file_mirror.rb +10 -10
- data/plugins/project/lib/project/find_file_dialog.rb +20 -18
- data/plugins/project/lib/project/find_recent_dialog.rb +6 -3
- data/plugins/project/lib/project/{adapters/local.rb → local_filesystem.rb} +35 -35
- data/plugins/project/lib/project/manager.rb +21 -75
- data/plugins/project/lib/project/sub_project.rb +3 -3
- data/plugins/project/plugin.rb +0 -1
- data/plugins/project_search/lib/project_search/lucene_refresh.rb +0 -1
- data/plugins/redcar/plugin.rb +2 -2
- data/plugins/redcar/redcar.rb +34 -42
- data/plugins/ruby/lib/ruby/syntax_checker.rb +27 -7
- data/plugins/scm/lib/scm.rb +1 -12
- data/plugins/sessions/lib/sessions.rb +22 -0
- data/plugins/sessions/lib/sessions/cursor_saver.rb +162 -0
- data/plugins/sessions/lib/sessions/loader.rb +99 -0
- data/plugins/sessions/lib/sessions/memory.rb +59 -0
- data/plugins/sessions/plugin.rb +8 -0
- data/plugins/strip_trailing_spaces/lib/strip_trailing_spaces.rb +2 -2
- data/plugins/syntax_check/lib/syntax_check.rb +2 -2
- data/plugins/tree_view_swt/lib/tree_view_swt.rb +1 -3
- data/redcar.gemspec +1 -1
- metadata +195 -291
- data/plugins/connection_manager/lib/connection_manager.rb +0 -57
- data/plugins/connection_manager/lib/connection_manager/commands.rb +0 -14
- data/plugins/connection_manager/lib/connection_manager/connection_store.rb +0 -87
- data/plugins/connection_manager/lib/connection_manager/controller.rb +0 -100
- data/plugins/connection_manager/lib/connection_manager/filter_dialog.rb +0 -38
- data/plugins/connection_manager/lib/connection_manager/private_key_store.rb +0 -93
- data/plugins/connection_manager/plugin.rb +0 -12
- data/plugins/connection_manager/views/index.html.erb +0 -284
- data/plugins/edit_view/lib/edit_view/info_speedbar.rb +0 -98
- data/plugins/outline_view/features/outline_view.feature +0 -79
- data/plugins/outline_view/features/project_outline.feature +0 -23
- data/plugins/outline_view/features/step_definitions/outline_steps.rb +0 -61
- data/plugins/outline_view/lib/outline_view.rb +0 -97
- data/plugins/outline_view/lib/outline_view/commands.rb +0 -19
- data/plugins/outline_view/plugin.rb +0 -10
- data/plugins/outline_view_swt/lib/outline_view_swt.rb +0 -79
- data/plugins/outline_view_swt/plugin.rb +0 -7
- data/plugins/project/lib/project/adapters/remote.rb +0 -96
- data/plugins/project/lib/project/adapters/remote_protocols/ftp.rb +0 -93
- data/plugins/project/lib/project/adapters/remote_protocols/protocol.rb +0 -94
- data/plugins/project/lib/project/adapters/remote_protocols/sftp.rb +0 -181
@@ -4,11 +4,14 @@ module Redcar
|
|
4
4
|
class FindRecentDialog < FilterListDialog
|
5
5
|
def update_list(filter)
|
6
6
|
recent = Project::Recent.storage['list']
|
7
|
-
recent = recent.map
|
8
|
-
|
7
|
+
recent = recent.map do |path|
|
8
|
+
{:name => path.gsub(/^#{Regexp.escape(Redcar.home_dir)}\/?/, ""), :icon => :dir}
|
9
|
+
end
|
10
|
+
filter_and_rank_by(recent, filter) {|h| h[:name] }
|
9
11
|
end
|
10
12
|
|
11
|
-
def selected(
|
13
|
+
def selected(item, ix)
|
14
|
+
path = item[:name]
|
12
15
|
unless path[0..0] == "/" or path =~ /^[A-Z]:\//
|
13
16
|
path = Redcar.home_dir + "/" + path
|
14
17
|
end
|
@@ -1,36 +1,40 @@
|
|
1
1
|
module Redcar
|
2
2
|
class Project
|
3
|
-
module
|
4
|
-
|
5
|
-
|
3
|
+
module LocalFilesystem
|
4
|
+
def fs
|
5
|
+
Methods
|
6
|
+
end
|
7
|
+
|
8
|
+
class Methods
|
9
|
+
def self.touch(new_file_path)
|
6
10
|
FileUtils.touch(new_file_path)
|
7
11
|
end
|
8
|
-
|
9
|
-
def mkdir(new_dir_path)
|
12
|
+
|
13
|
+
def self.mkdir(new_dir_path)
|
10
14
|
FileUtils.mkdir(new_dir_path)
|
11
15
|
end
|
12
|
-
|
13
|
-
def mv(path, new_path)
|
16
|
+
|
17
|
+
def self.mv(path, new_path)
|
14
18
|
FileUtils.mv(path, new_path)
|
15
19
|
new_path = File.join(new_path, File.basename(path)) unless File.file?(new_path)
|
16
20
|
Manager.update_tab_for_path(path,new_path)
|
17
21
|
end
|
18
|
-
|
19
|
-
def file?(path)
|
22
|
+
|
23
|
+
def self.file?(path)
|
20
24
|
File.file?(path)
|
21
25
|
end
|
22
|
-
|
23
|
-
def directory?(path)
|
26
|
+
|
27
|
+
def self.directory?(path)
|
24
28
|
# JRuby's File.directory? seems to have a problem with multi-byte strings
|
25
29
|
f = java.io.File.new(path.to_java)
|
26
30
|
f.directory?
|
27
31
|
end
|
28
|
-
|
29
|
-
def empty_directory?(path)
|
32
|
+
|
33
|
+
def self.empty_directory?(path)
|
30
34
|
Dir.glob("#{path}/*", File::FNM_DOTMATCH).length <= 2
|
31
35
|
end
|
32
|
-
|
33
|
-
def fetch_contents(path, force=false)
|
36
|
+
|
37
|
+
def self.fetch_contents(path, force=false)
|
34
38
|
Dir.glob("#{path}/*", File::FNM_DOTMATCH).map do |fn|
|
35
39
|
is_dir = directory?(fn)
|
36
40
|
hash = {
|
@@ -43,40 +47,36 @@ module Redcar
|
|
43
47
|
hash
|
44
48
|
end
|
45
49
|
end
|
46
|
-
|
47
|
-
def load(file)
|
48
|
-
File.
|
50
|
+
|
51
|
+
def self.load(file)
|
52
|
+
File.read(file)
|
49
53
|
end
|
50
|
-
|
51
|
-
def save(file, contents)
|
54
|
+
|
55
|
+
def self.save(file, contents)
|
52
56
|
File.open(file, "wb") {|f| f.print contents }
|
53
57
|
end
|
54
|
-
|
55
|
-
def mtime(file)
|
58
|
+
|
59
|
+
def self.mtime(file)
|
56
60
|
File.mtime(file)
|
57
61
|
end
|
58
|
-
|
59
|
-
def exists?(file)
|
62
|
+
|
63
|
+
def self.exists?(file)
|
60
64
|
File.exists?(file)
|
61
65
|
end
|
62
|
-
|
63
|
-
def delete(file)
|
66
|
+
|
67
|
+
def self.delete(file)
|
64
68
|
FileUtils.rm_rf(file) unless Trash.recycle(file)
|
65
69
|
Manager.update_tab_for_path(file)
|
66
70
|
end
|
67
|
-
|
68
|
-
def load_contents(file)
|
71
|
+
|
72
|
+
def self.load_contents(file)
|
69
73
|
File.open(file, 'rb') do |f|; f.read; end
|
70
74
|
end
|
71
|
-
|
72
|
-
def save_contents(file)
|
75
|
+
|
76
|
+
def self.save_contents(file)
|
73
77
|
File.open(file, "wb") {|f| f.print contents }
|
74
78
|
end
|
75
|
-
|
76
|
-
def refresh_operation(tree)
|
77
|
-
yield
|
78
|
-
end
|
79
79
|
end
|
80
80
|
end
|
81
81
|
end
|
82
|
-
end
|
82
|
+
end
|
@@ -3,58 +3,12 @@ module Redcar
|
|
3
3
|
class Project
|
4
4
|
class Manager
|
5
5
|
|
6
|
-
def self.connect_to_remote(protocol, host, user, path, private_key_files = [])
|
7
|
-
if protocol == "SFTP" and private_key_files.any?
|
8
|
-
begin
|
9
|
-
adapter = open_adapter(protocol, host, user, nil, private_key_files)
|
10
|
-
open_remote_project(adapter, path)
|
11
|
-
rescue Net::SSH::AuthenticationFailed
|
12
|
-
if pw = get_password
|
13
|
-
adapter = open_adapter(protocol, host, user, pw, [])
|
14
|
-
open_remote_project(adapter, path)
|
15
|
-
end
|
16
|
-
end
|
17
|
-
else
|
18
|
-
if pw = get_password
|
19
|
-
adapter = open_adapter(protocol, host, user, pw, [])
|
20
|
-
open_remote_project(adapter, path)
|
21
|
-
end
|
22
|
-
end
|
23
|
-
rescue => e
|
24
|
-
puts "Error connecting: #{e.class}: #{e.message}"
|
25
|
-
puts e.backtrace
|
26
|
-
Application::Dialog.message_box("Error connecting: #{e.message}", :type => :error)
|
27
|
-
end
|
28
|
-
|
29
|
-
def self.get_password
|
30
|
-
result = Redcar::Application::Dialog.password_input("Remote Connection", "Enter password")
|
31
|
-
result[:value] if result
|
32
|
-
end
|
33
|
-
|
34
|
-
# Opens a new Tree with a DirMirror and DirController for the given
|
35
|
-
# path, in a new window.
|
36
|
-
#
|
37
|
-
# @param [String] path the path of the directory to view
|
38
|
-
def self.open_remote_project(adapter, path)
|
39
|
-
win = Redcar.app.focussed_window
|
40
|
-
win = Redcar.app.new_window if !win or Manager.in_window(win)
|
41
|
-
project = Project.new(path, adapter)
|
42
|
-
project.open(win) if project.ready?
|
43
|
-
end
|
44
|
-
|
45
|
-
def self.open_adapter(protocol, host, user, password, private_key_files)
|
46
|
-
Adapters::Remote.new(protocol.downcase.to_sym, host, user, password, private_key_files)
|
47
|
-
rescue Errno::ECONNREFUSED
|
48
|
-
raise "connection refused connecting to #{host}"
|
49
|
-
rescue SocketError
|
50
|
-
raise "Cannot connect to #{host}. Error: #{$!.message}."
|
51
|
-
end
|
52
|
-
|
53
6
|
def self.open_projects
|
54
7
|
Project.window_projects.values
|
55
8
|
end
|
56
9
|
|
57
10
|
# Returns the project in the given window
|
11
|
+
#
|
58
12
|
# @param [Window] window
|
59
13
|
# @return Project or nil
|
60
14
|
def self.in_window(window)
|
@@ -65,14 +19,8 @@ module Redcar
|
|
65
19
|
Redcar.app.windows.reject {|w| in_window(w) }
|
66
20
|
end
|
67
21
|
|
68
|
-
# this will restore open files unless other files or dirs were passed
|
69
|
-
# as command line parameters
|
70
22
|
def self.start(args)
|
71
|
-
|
72
|
-
unless Redcar.environment == :test
|
73
|
-
#restore_last_session
|
74
|
-
end
|
75
|
-
end
|
23
|
+
handle_startup_arguments(args)
|
76
24
|
init_current_files_hooks
|
77
25
|
init_window_closed_hooks
|
78
26
|
init_drb_listener
|
@@ -163,13 +111,14 @@ module Redcar
|
|
163
111
|
#
|
164
112
|
# @path [String] path the path of the file to be edited
|
165
113
|
# @param [Window] win the Window to open the File in
|
166
|
-
def self.open_file_in_window(path, win
|
114
|
+
def self.open_file_in_window(path, win)
|
167
115
|
return unless large_file_airbag(path)
|
168
116
|
tab = win.new_tab(Redcar::EditTab)
|
169
|
-
mirror = FileMirror.new(path
|
117
|
+
mirror = FileMirror.new(path)
|
170
118
|
tab.edit_view.document.mirror = mirror
|
171
119
|
tab.edit_view.reset_undo
|
172
120
|
tab.focus
|
121
|
+
tab
|
173
122
|
end
|
174
123
|
|
175
124
|
def self.file_too_large?(path)
|
@@ -194,10 +143,10 @@ module Redcar
|
|
194
143
|
}.sort_by {|p| path.split(//).length-p.path.split(//).length}
|
195
144
|
end
|
196
145
|
|
197
|
-
def self.open_file(path
|
146
|
+
def self.open_file(path)
|
198
147
|
if tab = find_open_file_tab(path)
|
199
148
|
tab.focus
|
200
|
-
return
|
149
|
+
return tab
|
201
150
|
end
|
202
151
|
if project = find_projects_containing_path(path).first
|
203
152
|
window = project.window
|
@@ -205,8 +154,9 @@ module Redcar
|
|
205
154
|
window = windows_without_projects.first || Redcar.app.new_window
|
206
155
|
Project::Recent.store_path(path)
|
207
156
|
end
|
208
|
-
open_file_in_window(path, window
|
157
|
+
tab = open_file_in_window(path, window)
|
209
158
|
window.focus
|
159
|
+
tab
|
210
160
|
end
|
211
161
|
|
212
162
|
def self.pop_first_line_option(args)
|
@@ -266,6 +216,7 @@ module Redcar
|
|
266
216
|
win = Redcar.app.focussed_window
|
267
217
|
win = Redcar.app.new_window(false) if !win or Manager.in_window(win)
|
268
218
|
project.open(win) if project.ready?
|
219
|
+
p project
|
269
220
|
Redcar.app.show_window(win)
|
270
221
|
project
|
271
222
|
end
|
@@ -373,20 +324,6 @@ module Redcar
|
|
373
324
|
end
|
374
325
|
end
|
375
326
|
|
376
|
-
# restores the directory/files in the last open window
|
377
|
-
def self.restore_last_session
|
378
|
-
if path = storage['last_open_dir']
|
379
|
-
s = Time.now
|
380
|
-
open_project_for_path(path)
|
381
|
-
end
|
382
|
-
|
383
|
-
if files = storage['files_open_last_session']
|
384
|
-
files.each do |path|
|
385
|
-
open_file(path)
|
386
|
-
end
|
387
|
-
end
|
388
|
-
end
|
389
|
-
|
390
327
|
def self.refresh_modified_file(path)
|
391
328
|
path = File.expand_path(path)
|
392
329
|
find_projects_containing_path(path).each do |project|
|
@@ -414,11 +351,20 @@ module Redcar
|
|
414
351
|
item "Find File", Project::FindFileCommand
|
415
352
|
# item "Refresh Directory", Project::RefreshDirectoryCommand
|
416
353
|
end
|
417
|
-
item "Reveal Open File in Tree", :command => Project::ToggleRevealInProject, :type => :check, :
|
354
|
+
item "Reveal Open File in Tree", :command => Project::ToggleRevealInProject, :type => :check, :checked => lambda { Project::Manager.reveal_files? }
|
418
355
|
end
|
419
356
|
end
|
420
357
|
end
|
421
358
|
|
359
|
+
def self.tab_context_menu(tab)
|
360
|
+
Menu::Builder.build do
|
361
|
+
if tab.is_a?(EditTab)
|
362
|
+
path = tab.edit_view.document.path
|
363
|
+
item("Copy path to clipboard", :enabled => !!path) { Redcar.app.clipboard << path if path }
|
364
|
+
end
|
365
|
+
end
|
366
|
+
end
|
367
|
+
|
422
368
|
# Uses our own context menu hook to provide context menu entries
|
423
369
|
# @return [Menu]
|
424
370
|
def self.project_context_menus(tree, node, controller)
|
@@ -452,7 +398,7 @@ module Redcar
|
|
452
398
|
separator
|
453
399
|
if tree.selection.length > 1
|
454
400
|
dirs = tree.selection.map {|node| node.parent_dir }
|
455
|
-
if dirs.uniq.length == 1
|
401
|
+
if dirs.uniq.length == 1
|
456
402
|
item("Bulk Rename") { controller.rename(tree, node) }
|
457
403
|
end
|
458
404
|
else
|
@@ -3,9 +3,9 @@ module Redcar
|
|
3
3
|
class Project
|
4
4
|
class SubProject < Project
|
5
5
|
|
6
|
-
def initialize(project_path, path
|
7
|
-
super(path
|
8
|
-
@project=project_path
|
6
|
+
def initialize(project_path, path)
|
7
|
+
super(path)
|
8
|
+
@project = project_path
|
9
9
|
end
|
10
10
|
|
11
11
|
def config_files(glob)
|
data/plugins/project/plugin.rb
CHANGED
data/plugins/redcar/plugin.rb
CHANGED
data/plugins/redcar/redcar.rb
CHANGED
@@ -41,61 +41,61 @@ module Redcar
|
|
41
41
|
end
|
42
42
|
end
|
43
43
|
|
44
|
-
class GenerateWindowsMenu
|
45
|
-
def
|
46
|
-
@builder = builder
|
47
|
-
end
|
48
|
-
|
49
|
-
def execute
|
44
|
+
class GenerateWindowsMenu
|
45
|
+
def self.on(builder)
|
50
46
|
window = Redcar.app.focussed_window
|
51
47
|
Redcar.app.windows.each do |win|
|
52
|
-
|
48
|
+
builder.item(win.title, :type => :radio, :checked => (win == window)) do
|
53
49
|
Application::FocusWindowCommand.new(win).run
|
54
50
|
end
|
55
51
|
end
|
56
52
|
end
|
57
53
|
end
|
58
54
|
|
59
|
-
class GenerateTabsMenu
|
60
|
-
def
|
61
|
-
@builder = builder
|
62
|
-
end
|
63
|
-
|
64
|
-
def trim(title)
|
55
|
+
class GenerateTabsMenu
|
56
|
+
def self.trim(title)
|
65
57
|
title = title[0,13]+'...' if title.length > 13
|
66
58
|
title
|
67
59
|
end
|
68
60
|
|
69
|
-
def
|
61
|
+
def self.on(builder)
|
70
62
|
if win = Redcar.app.focussed_window and
|
71
63
|
book = win.focussed_notebook and book.tabs.any?
|
72
64
|
focussed_tab = book.focussed_tab
|
73
|
-
|
74
|
-
|
65
|
+
builder.separator
|
66
|
+
builder.item "Focussed Notebook", ShowTitle
|
75
67
|
book.tabs.each_with_index do |tab,i|
|
76
68
|
num = i + 1
|
77
69
|
if num < 10
|
78
70
|
@builder.item("Tab #{num}: #{trim(tab.title)}",
|
79
71
|
:type => :radio,
|
80
|
-
:
|
72
|
+
:checked => (tab == focussed_tab),
|
81
73
|
:command => Redcar::Application.const_get("SelectTab#{num}Command")
|
82
74
|
)
|
83
75
|
else
|
84
76
|
@builder.item("Tab #{num}: #{trim(tab.title)}",
|
85
|
-
:type
|
86
|
-
:
|
77
|
+
:type => :radio,
|
78
|
+
:checked => (tab == focussed_tab)) { tab.focus }
|
87
79
|
end
|
88
80
|
end
|
89
81
|
if book = win.nonfocussed_notebook and book.tabs.any?
|
90
|
-
|
91
|
-
|
82
|
+
builder.separator
|
83
|
+
builder.item "Nonfocussed Notebook", ShowTitle
|
92
84
|
book.tabs.each_with_index do |tab,i|
|
93
|
-
|
85
|
+
builder.item("Tab #{i+1}: #{trim(tab.title)}") {tab.focus}
|
94
86
|
end
|
95
87
|
end
|
96
88
|
end
|
97
89
|
end
|
98
90
|
end
|
91
|
+
|
92
|
+
class GenerateGrammarsMenu
|
93
|
+
def self.on(builder)
|
94
|
+
builder.item "Ruby", AboutCommand
|
95
|
+
builder.item "Java", AboutCommand
|
96
|
+
builder.item "Python", AboutCommand
|
97
|
+
end
|
98
|
+
end
|
99
99
|
|
100
100
|
class AboutCommand < Command
|
101
101
|
def execute
|
@@ -635,7 +635,6 @@ Redcar.environment: #{Redcar.environment}
|
|
635
635
|
|
636
636
|
#link "Cmd+Return", MoveNextLineCommand
|
637
637
|
|
638
|
-
link "Ctrl+Shift+E", EditView::InfoSpeedbarCommand
|
639
638
|
link "Cmd+Z", UndoCommand
|
640
639
|
link "Cmd+Shift+Z", RedoCommand
|
641
640
|
link "Cmd+X", CutCommand
|
@@ -679,6 +678,7 @@ Redcar.environment: #{Redcar.environment}
|
|
679
678
|
link "Ctrl+G", EditView::OppositeCaseTextCommand
|
680
679
|
link "Ctrl+_", EditView::CamelSnakePascalRotateTextCommand
|
681
680
|
link "Ctrl+=", EditView::AlignAssignmentCommand
|
681
|
+
link "Cmd+Alt+Ctrl+L", EditView::ChangeLanguageCommand
|
682
682
|
link "Ctrl+Shift+^", SortLinesCommand
|
683
683
|
|
684
684
|
link "Cmd+T", Project::FindFileCommand
|
@@ -734,7 +734,6 @@ Redcar.environment: #{Redcar.environment}
|
|
734
734
|
|
735
735
|
link "Ctrl+Enter", MoveNextLineCommand
|
736
736
|
|
737
|
-
link "Ctrl+Shift+E", EditView::InfoSpeedbarCommand
|
738
737
|
link "Ctrl+Z", UndoCommand
|
739
738
|
link "Ctrl+Y", RedoCommand
|
740
739
|
link "Ctrl+X", CutCommand
|
@@ -772,6 +771,7 @@ Redcar.environment: #{Redcar.environment}
|
|
772
771
|
link "Ctrl+Alt+Shift+U", EditView::OppositeCaseTextCommand
|
773
772
|
link "Ctrl+_", EditView::CamelSnakePascalRotateTextCommand
|
774
773
|
link "Ctrl+=", EditView::AlignAssignmentCommand
|
774
|
+
link "Ctrl+Alt+Shift+L", EditView::ChangeLanguageCommand
|
775
775
|
link "Ctrl+Shift+^", SortLinesCommand
|
776
776
|
|
777
777
|
link "Ctrl+T", Project::FindFileCommand
|
@@ -853,16 +853,12 @@ Redcar.environment: #{Redcar.environment}
|
|
853
853
|
|
854
854
|
sub_menu "Edit", :priority => 5 do
|
855
855
|
group(:priority => :first) do
|
856
|
-
item "Tab Info", EditView::InfoSpeedbarCommand
|
857
|
-
end
|
858
|
-
group(:priority => 10) do
|
859
|
-
separator
|
860
856
|
item "Undo", UndoCommand
|
861
857
|
item "Redo", RedoCommand
|
858
|
+
separator
|
862
859
|
end
|
863
860
|
|
864
861
|
group(:priority => 15) do
|
865
|
-
separator
|
866
862
|
item "Cut", CutCommand
|
867
863
|
item "Copy", CopyCommand
|
868
864
|
item "Paste", PasteCommand
|
@@ -870,19 +866,17 @@ Redcar.environment: #{Redcar.environment}
|
|
870
866
|
item "Duplicate Region", DuplicateCommand
|
871
867
|
item "Sort Lines in Region", SortLinesCommand
|
872
868
|
end
|
869
|
+
separator
|
873
870
|
end
|
874
871
|
|
875
872
|
group(:priority => 30) do
|
876
|
-
separator
|
877
873
|
sub_menu "Selection" do
|
878
874
|
item "All", SelectAllCommand
|
879
875
|
item "Line", SelectLineCommand
|
880
876
|
item "Current Word", SelectWordCommand
|
881
877
|
item "Toggle Block Selection", ToggleBlockSelectionCommand
|
882
878
|
end
|
883
|
-
|
884
|
-
|
885
|
-
group(:priority => 40) do
|
879
|
+
|
886
880
|
sub_menu "Document Navigation" do
|
887
881
|
item "Goto Line", GotoLineCommand
|
888
882
|
item "Top", MoveTopCommand
|
@@ -909,9 +903,7 @@ Redcar.environment: #{Redcar.environment}
|
|
909
903
|
item "Backward Navigation", BackwardNavigationCommand
|
910
904
|
item "Forward Navigation", ForwardNavigationCommand
|
911
905
|
end
|
912
|
-
|
913
|
-
|
914
|
-
group(:priority => 50) do
|
906
|
+
|
915
907
|
sub_menu "Formatting" do
|
916
908
|
item "Increase Indent", IncreaseIndentCommand
|
917
909
|
item "Decrease Indent", DecreaseIndentCommand
|
@@ -938,7 +930,7 @@ Redcar.environment: #{Redcar.environment}
|
|
938
930
|
end
|
939
931
|
group(:priority => 10) do
|
940
932
|
separator
|
941
|
-
item "Toggle Fullscreen", :command => Application::ToggleFullscreen, :type => :check, :
|
933
|
+
item "Toggle Fullscreen", :command => Application::ToggleFullscreen, :type => :check, :checked => window ? window.fullscreen : false
|
942
934
|
end
|
943
935
|
group(:priority => 15) do
|
944
936
|
separator
|
@@ -952,7 +944,7 @@ Redcar.environment: #{Redcar.environment}
|
|
952
944
|
item "Next Tree", Application::SwitchTreeDownCommand
|
953
945
|
end
|
954
946
|
lazy_sub_menu "Windows" do
|
955
|
-
GenerateWindowsMenu.
|
947
|
+
GenerateWindowsMenu.on(self)
|
956
948
|
end
|
957
949
|
sub_menu "Notebooks" do
|
958
950
|
item "New Notebook", Application::OpenNewNotebookCommand
|
@@ -979,9 +971,9 @@ Redcar.environment: #{Redcar.environment}
|
|
979
971
|
end
|
980
972
|
group(:priority => :last) do
|
981
973
|
separator
|
982
|
-
item "Show Toolbar", :command => Application::ToggleToolbar, :type => :check, :
|
983
|
-
item "Show Invisibles", :command => ToggleInvisibles, :type => :check, :
|
984
|
-
item "Show Line Numbers", :command => ToggleLineNumbers, :type => :check, :
|
974
|
+
item "Show Toolbar", :command => Application::ToggleToolbar, :type => :check, :checked => lambda { Redcar.app.show_toolbar? }
|
975
|
+
item "Show Invisibles", :command => ToggleInvisibles, :type => :check, :checked => lambda { EditView.show_invisibles? }
|
976
|
+
item "Show Line Numbers", :command => ToggleLineNumbers, :type => :check, :checked => lambda { EditView.show_line_numbers? }
|
985
977
|
end
|
986
978
|
end
|
987
979
|
sub_menu "Bundles", :priority => 45 do
|
@@ -1002,7 +994,7 @@ Redcar.environment: #{Redcar.environment}
|
|
1002
994
|
separator
|
1003
995
|
item "Check for Updates", :command => Application::ToggleCheckForUpdatesCommand,
|
1004
996
|
:type => :check,
|
1005
|
-
:
|
997
|
+
:checked => lambda { Application::Updates.check_for_updates? }
|
1006
998
|
item "Update Available", Application::OpenUpdateCommand
|
1007
999
|
end
|
1008
1000
|
end
|