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
@@ -0,0 +1,142 @@
|
|
1
|
+
module Redcar
|
2
|
+
class Declarations
|
3
|
+
|
4
|
+
class RebuildTagsCommand < Command
|
5
|
+
def execute
|
6
|
+
project = Project::Manager.focussed_project
|
7
|
+
tags_path = Declarations.file_path(project)
|
8
|
+
FileUtils.rm tags_path if ::File.exists? tags_path
|
9
|
+
ProjectRefresh.new(project).execute
|
10
|
+
end
|
11
|
+
end
|
12
|
+
|
13
|
+
class GoToTagCommand < EditTabCommand
|
14
|
+
sensitize :open_project
|
15
|
+
|
16
|
+
def execute
|
17
|
+
if doc.selection?
|
18
|
+
handle_tag(doc.selected_text)
|
19
|
+
else
|
20
|
+
range = doc.current_word_range
|
21
|
+
handle_tag(doc.get_slice(range.first, range.last))
|
22
|
+
end
|
23
|
+
end
|
24
|
+
|
25
|
+
def handle_tag(token = '')
|
26
|
+
tags_path = Declarations.file_path(Project::Manager.focussed_project)
|
27
|
+
unless ::File.exist?(tags_path)
|
28
|
+
Application::Dialog.message_box("The declarations file 'tags' has not been generated yet.")
|
29
|
+
return
|
30
|
+
end
|
31
|
+
matches = find_tag(tags_path, token).uniq
|
32
|
+
|
33
|
+
# save current cursor position before jump to another location.
|
34
|
+
Redcar.app.navigation_history.save(doc) if matches.size > 0
|
35
|
+
|
36
|
+
case matches.size
|
37
|
+
when 0
|
38
|
+
Application::Dialog.message_box("There is no declaration for '#{token}' in the 'tags' file.")
|
39
|
+
when 1
|
40
|
+
Redcar::Declarations.go_to_definition(matches.first)
|
41
|
+
else
|
42
|
+
open_select_tag_dialog(matches)
|
43
|
+
end
|
44
|
+
|
45
|
+
Redcar.app.navigation_history.save(doc) if matches.size > 0
|
46
|
+
end
|
47
|
+
|
48
|
+
def find_tag(tags_path, tag)
|
49
|
+
Declarations.tags_for_path(tags_path)[tag] || []
|
50
|
+
end
|
51
|
+
|
52
|
+
def open_select_tag_dialog(matches)
|
53
|
+
Declarations::SelectTagDialog.new(matches).open
|
54
|
+
end
|
55
|
+
|
56
|
+
def log(message)
|
57
|
+
puts("==> Ctags: #{message}")
|
58
|
+
end
|
59
|
+
end
|
60
|
+
|
61
|
+
class OpenOutlineViewCommand < Redcar::EditTabCommand
|
62
|
+
|
63
|
+
def execute
|
64
|
+
cur_doc = Redcar.app.focussed_window.focussed_notebook_tab.document
|
65
|
+
if cur_doc
|
66
|
+
Declarations::OutlineViewDialog.new(cur_doc).open
|
67
|
+
end
|
68
|
+
end
|
69
|
+
end
|
70
|
+
|
71
|
+
class OpenProjectOutlineViewCommand < Redcar::ProjectCommand
|
72
|
+
def execute
|
73
|
+
Declarations::ProjectOutlineViewDialog.new(project).open if project
|
74
|
+
end
|
75
|
+
end
|
76
|
+
|
77
|
+
class OutlineViewDialog < FilterListDialog
|
78
|
+
include Redcar::Model
|
79
|
+
include Redcar::Observable
|
80
|
+
|
81
|
+
attr_accessor :document
|
82
|
+
attr_accessor :last_list
|
83
|
+
|
84
|
+
def initialize(document)
|
85
|
+
@document = document
|
86
|
+
file = Declarations::File.new(@document.path)
|
87
|
+
file.add_tags_for_paths(@document.path)
|
88
|
+
@tags = file.tags
|
89
|
+
@all = []
|
90
|
+
@tags.each do |name, path, match|
|
91
|
+
kind = Declarations.match_kind(path, match)
|
92
|
+
@all << {:name => name, :icon => Declarations.icon_for_kind(kind), :path => path, :match => match}
|
93
|
+
end
|
94
|
+
super()
|
95
|
+
end
|
96
|
+
|
97
|
+
def update_list(filter)
|
98
|
+
filter_and_rank_by(@all, filter) {|h| h[:name]}
|
99
|
+
end
|
100
|
+
|
101
|
+
def selected(item, ix)
|
102
|
+
close
|
103
|
+
Redcar.app.navigation_history.save(@document) if @document
|
104
|
+
DocumentSearch::FindNextRegex.new(Regexp.new(Regexp.quote(item[:match])), true).run_in_focussed_tab_edit_view
|
105
|
+
Redcar.app.navigation_history.save(@document) if @document
|
106
|
+
end
|
107
|
+
end
|
108
|
+
|
109
|
+
class ProjectOutlineViewDialog < FilterListDialog
|
110
|
+
def initialize(project)
|
111
|
+
@project = project
|
112
|
+
file = Declarations::File.new(Declarations.file_path(@project))
|
113
|
+
@all = []
|
114
|
+
file.tags.each do |name, path, match|
|
115
|
+
@all << {:name => name + " (" + ::File.basename(path) + ")", :base_name => name, :path => path, :match => match}
|
116
|
+
end
|
117
|
+
super()
|
118
|
+
end
|
119
|
+
|
120
|
+
def update_list(filter)
|
121
|
+
results = filter_and_rank_by(@all, filter) { |h| h[:base_name] }
|
122
|
+
results.each do |result|
|
123
|
+
kind = Declarations.match_kind(result[:path], result[:match])
|
124
|
+
result[:icon] = Declarations.icon_for_kind(kind)
|
125
|
+
end
|
126
|
+
results
|
127
|
+
end
|
128
|
+
|
129
|
+
def selected(item, ix)
|
130
|
+
if path = item[:path] and ::File.exists?(path)
|
131
|
+
close
|
132
|
+
if tab = Redcar::Project::Manager.open_file(path)
|
133
|
+
doc = Redcar::EditView.focussed_tab_edit_view.document
|
134
|
+
Redcar.app.navigation_history.save(doc)
|
135
|
+
DocumentSearch::FindNextRegex.new(Regexp.new(Regexp.quote(item[:match])), true).run_in_focussed_tab_edit_view
|
136
|
+
Redcar.app.navigation_history.save(doc)
|
137
|
+
end
|
138
|
+
end
|
139
|
+
end
|
140
|
+
end
|
141
|
+
end
|
142
|
+
end
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
@@ -15,13 +15,13 @@ require "edit_view/grammar"
|
|
15
15
|
require "edit_view/edit_tab"
|
16
16
|
require "edit_view/modified_tabs_checker"
|
17
17
|
require "edit_view/tab_settings"
|
18
|
-
require "edit_view/info_speedbar"
|
19
18
|
require "edit_view/select_font_dialog"
|
20
19
|
require "edit_view/select_theme_dialog"
|
21
20
|
|
22
21
|
require "edit_view/commands/text_conversion_commands"
|
23
22
|
require "edit_view/commands/align_assignment_command"
|
24
|
-
|
23
|
+
require "edit_view/commands/change_language_command"
|
24
|
+
require "edit_view/commands/language_settings_commands"
|
25
25
|
|
26
26
|
module Redcar
|
27
27
|
class EditView
|
@@ -97,6 +97,39 @@ module Redcar
|
|
97
97
|
def self.menus
|
98
98
|
Menu::Builder.build do
|
99
99
|
sub_menu "Edit" do
|
100
|
+
group(:priority => 20) do
|
101
|
+
item "Change Language", ChangeLanguageCommand
|
102
|
+
|
103
|
+
sub_menu "Tabs" do
|
104
|
+
item "Soft Tabs", :command => EditView::ToggleSoftTabsCommand,
|
105
|
+
:type => :check,
|
106
|
+
:checked => lambda { tab and tab.edit_view.soft_tabs? }
|
107
|
+
|
108
|
+
sub_menu "Tab Width" do
|
109
|
+
TabSettings::TAB_WIDTHS.each do |width|
|
110
|
+
command_klass = Class.new(SetTabWidthCommand)
|
111
|
+
command_klass.width = width.to_i
|
112
|
+
already_checker = lambda { tab and tab.edit_view.tab_width.to_s == width.to_s }
|
113
|
+
item width, :command => command_klass, :type => :check, :checked => already_checker
|
114
|
+
end
|
115
|
+
end
|
116
|
+
end
|
117
|
+
|
118
|
+
sub_menu "Margin" do
|
119
|
+
item "Word Wrap", :command => EditView::ToggleWordWrapCommand,
|
120
|
+
:type => :check,
|
121
|
+
:checked => lambda { tab and tab.edit_view.word_wrap? }
|
122
|
+
|
123
|
+
item "Show Margin", :command => EditView::ToggleShowMarginCommand,
|
124
|
+
:type => :check,
|
125
|
+
:checked => lambda { tab and tab.edit_view.show_margin? }
|
126
|
+
|
127
|
+
item lambda { tab ? "Margin Column: #{tab.edit_view.margin_column}" : "Margin Column" }, SetMarginColumnCommand
|
128
|
+
end
|
129
|
+
|
130
|
+
separator
|
131
|
+
end
|
132
|
+
|
100
133
|
sub_menu "Formatting" do
|
101
134
|
item "Align Assignments", EditView::AlignAssignmentCommand
|
102
135
|
sub_menu "Convert Text", :priority => 40 do
|
@@ -0,0 +1,31 @@
|
|
1
|
+
module Redcar
|
2
|
+
class EditView
|
3
|
+
|
4
|
+
class ChangeLanguageCommand < Redcar::EditTabCommand
|
5
|
+
|
6
|
+
class ChangeLanguageDialog < FilterListDialog
|
7
|
+
def initialize(tab)
|
8
|
+
@tab = tab
|
9
|
+
super()
|
10
|
+
end
|
11
|
+
|
12
|
+
def update_list(filter)
|
13
|
+
bundles = JavaMateView::Bundle.bundles.to_a
|
14
|
+
grammars = bundles.map {|b| b.grammars.to_a}.flatten
|
15
|
+
names = grammars.map {|g| g.name}.sort_by {|name| name.downcase }
|
16
|
+
filter_and_rank_by(names, filter)
|
17
|
+
end
|
18
|
+
|
19
|
+
def selected(name, ix)
|
20
|
+
@tab.edit_view.grammar = name
|
21
|
+
close
|
22
|
+
end
|
23
|
+
end
|
24
|
+
|
25
|
+
def execute
|
26
|
+
ChangeLanguageDialog.new(tab).open
|
27
|
+
end
|
28
|
+
end
|
29
|
+
|
30
|
+
end
|
31
|
+
end
|
@@ -0,0 +1,45 @@
|
|
1
|
+
module Redcar
|
2
|
+
class EditView
|
3
|
+
|
4
|
+
class ToggleSoftTabsCommand < Redcar::EditTabCommand
|
5
|
+
def execute
|
6
|
+
tab.edit_view.soft_tabs = !tab.edit_view.soft_tabs?
|
7
|
+
end
|
8
|
+
end
|
9
|
+
|
10
|
+
class ToggleWordWrapCommand < Redcar::EditTabCommand
|
11
|
+
def execute
|
12
|
+
tab.edit_view.word_wrap = !tab.edit_view.word_wrap?
|
13
|
+
end
|
14
|
+
end
|
15
|
+
|
16
|
+
class ToggleShowMarginCommand < Redcar::EditTabCommand
|
17
|
+
def execute
|
18
|
+
tab.edit_view.show_margin = !tab.edit_view.show_margin?
|
19
|
+
end
|
20
|
+
end
|
21
|
+
|
22
|
+
class SetTabWidthCommand < Redcar::EditTabCommand
|
23
|
+
class << self
|
24
|
+
attr_accessor :width
|
25
|
+
end
|
26
|
+
|
27
|
+
def execute
|
28
|
+
tab.edit_view.tab_width = self.class.width.to_i
|
29
|
+
end
|
30
|
+
end
|
31
|
+
|
32
|
+
class SetMarginColumnCommand < Redcar::EditTabCommand
|
33
|
+
def execute
|
34
|
+
response = Application::Dialog.input("Margin Column", "Enter new margin column:", tab.edit_view.margin_column) do |text|
|
35
|
+
if text !~ /^\d+$/
|
36
|
+
"must be an integer number"
|
37
|
+
end
|
38
|
+
end
|
39
|
+
value = response[:value].to_i
|
40
|
+
tab.edit_view.margin_column = [[value, 200].min, 5].max
|
41
|
+
end
|
42
|
+
end
|
43
|
+
|
44
|
+
end
|
45
|
+
end
|
@@ -12,25 +12,23 @@ module Redcar
|
|
12
12
|
i = DEFAULT_ICON
|
13
13
|
doc = @edit_view.document
|
14
14
|
if doc and doc.path
|
15
|
-
|
16
|
-
if File.
|
17
|
-
|
18
|
-
|
19
|
-
if key
|
20
|
-
|
21
|
-
i = :document_attribute
|
22
|
-
else
|
23
|
-
i = :"document_attribute_#{key}"
|
24
|
-
end
|
15
|
+
if File.exists?(doc.path)
|
16
|
+
if File.writable?(doc.path)
|
17
|
+
key = File.basename(doc.path).split('.').last.split(//).first.downcase
|
18
|
+
if key =~ /[a-z]/
|
19
|
+
if key == 'a'
|
20
|
+
i = :document_attribute
|
25
21
|
else
|
26
|
-
i =
|
22
|
+
i = :"document_attribute_#{key}"
|
27
23
|
end
|
28
24
|
else
|
29
|
-
i =
|
25
|
+
i = DEFAULT_ICON
|
30
26
|
end
|
31
27
|
else
|
32
|
-
i =
|
28
|
+
i = NO_WRITE_ICON
|
33
29
|
end
|
30
|
+
else
|
31
|
+
i = MISSING_ICON
|
34
32
|
end
|
35
33
|
end
|
36
34
|
i
|
@@ -11,7 +11,11 @@ module Redcar
|
|
11
11
|
|
12
12
|
def self.user_keybindings
|
13
13
|
key_bindings = key_binding_prefs.inject({}) do |h, (key, command_class)|
|
14
|
-
|
14
|
+
begin
|
15
|
+
h[key] = eval(command_class)
|
16
|
+
rescue
|
17
|
+
Redcar.log.warn "invalid key binding from \"#{key}\" to #{command_class.inspect} in file \"#{@storage.send(:path)}\""
|
18
|
+
end
|
15
19
|
h
|
16
20
|
end
|
17
21
|
key_bindings
|
@@ -31,4 +35,4 @@ module Redcar
|
|
31
35
|
Redcar.app.refresh_menu!
|
32
36
|
end
|
33
37
|
end
|
34
|
-
end
|
38
|
+
end
|
@@ -3,14 +3,8 @@ unless defined?(DRb)
|
|
3
3
|
require 'drb/drb'
|
4
4
|
end
|
5
5
|
|
6
|
-
require "project/adapters/remote_protocols/protocol"
|
7
|
-
require "project/adapters/remote_protocols/sftp"
|
8
|
-
require "project/adapters/remote_protocols/ftp"
|
9
|
-
|
10
|
-
require "project/adapters/local"
|
11
|
-
require "project/adapters/remote"
|
12
|
-
|
13
6
|
require "project/support/trash"
|
7
|
+
require "project/local_filesystem"
|
14
8
|
|
15
9
|
require "project/commands"
|
16
10
|
require "project/dir_mirror"
|
@@ -33,27 +27,40 @@ module Redcar
|
|
33
27
|
@window_projects ||= {}
|
34
28
|
end
|
35
29
|
|
36
|
-
attr_reader :window, :tree, :path
|
30
|
+
attr_reader :window, :tree, :path
|
37
31
|
attr_accessor :listeners
|
38
32
|
|
39
|
-
def initialize(path
|
40
|
-
|
33
|
+
def initialize(path)
|
34
|
+
p [:new, path]
|
41
35
|
@path = File.expand_path(path)
|
42
36
|
@listeners ||= {}
|
43
|
-
dir_mirror = Project::DirMirror.new(@path
|
37
|
+
dir_mirror = Project::DirMirror.new(@path)
|
38
|
+
p dir_mirror
|
44
39
|
if dir_mirror.exists?
|
45
40
|
@tree = Tree.new(dir_mirror, Project::DirController.new)
|
41
|
+
p @tree
|
46
42
|
@window = nil
|
47
|
-
file_list_resource.compute
|
43
|
+
file_list_resource.compute
|
48
44
|
else
|
49
45
|
raise "#{path} doesn't seem to exist"
|
50
46
|
end
|
51
47
|
end
|
52
48
|
|
53
|
-
def
|
54
|
-
|
49
|
+
def config_dir
|
50
|
+
if Redcar.platform == :windows && Redcar.environment != :test
|
51
|
+
dir = File.join(path, "._redcar")
|
52
|
+
else
|
53
|
+
dir = File.join(path, ".redcar")
|
54
|
+
end
|
55
|
+
unless File.directory? dir
|
56
|
+
FileUtils.mkdir_p(dir)
|
57
|
+
if Redcar.platform == :windows
|
58
|
+
system("attrib.exe +H \"#{dir}") # make hidden for cmd directory listings
|
59
|
+
end
|
60
|
+
end
|
61
|
+
dir
|
55
62
|
end
|
56
|
-
|
63
|
+
|
57
64
|
def ready?
|
58
65
|
@tree && @path
|
59
66
|
end
|
@@ -128,6 +135,10 @@ module Redcar
|
|
128
135
|
unlock if locked?
|
129
136
|
end
|
130
137
|
|
138
|
+
def storage(name)
|
139
|
+
Redcar::Plugin::BaseStorage.new(File.join(config_dir, "storage"), name)
|
140
|
+
end
|
141
|
+
|
131
142
|
def attach_listeners
|
132
143
|
attach_notebook_listeners
|
133
144
|
window.treebook.add_listener(:tree_removed, &method(:tree_removed))
|
@@ -168,7 +179,7 @@ module Redcar
|
|
168
179
|
# there is one.
|
169
180
|
def refresh
|
170
181
|
@tree.refresh
|
171
|
-
file_list_resource.compute
|
182
|
+
file_list_resource.compute
|
172
183
|
end
|
173
184
|
|
174
185
|
def contains_path?(path)
|
@@ -194,7 +205,6 @@ module Redcar
|
|
194
205
|
end
|
195
206
|
|
196
207
|
def file_list
|
197
|
-
raise "can't access a file list for a remote project" if remote?
|
198
208
|
@file_list ||= FileList.new(path)
|
199
209
|
end
|
200
210
|
|
@@ -235,21 +245,6 @@ module Redcar
|
|
235
245
|
@lost_application_focus = nil
|
236
246
|
end
|
237
247
|
|
238
|
-
def config_dir
|
239
|
-
if Redcar.platform == :windows && Redcar.environment != :test
|
240
|
-
dir = File.join(path, "._redcar")
|
241
|
-
else
|
242
|
-
dir = File.join(path, ".redcar")
|
243
|
-
end
|
244
|
-
unless File.directory? dir
|
245
|
-
FileUtils.mkdir_p(dir)
|
246
|
-
if Redcar.platform == :windows
|
247
|
-
system("attrib.exe +H \"#{dir}") # make hidden for cmd directory listings
|
248
|
-
end
|
249
|
-
end
|
250
|
-
dir
|
251
|
-
end
|
252
|
-
|
253
248
|
def home_dir
|
254
249
|
@path
|
255
250
|
end
|