@@ -40,6 +40,24 @@ def defined? do
40
40
41
41
BASIC_WORD_BREAK_CHARACTERS = " \t \n `><=;|&{("
42
42
43
+ def self . retrieve_files_to_require_from_load_path
44
+ @@files_from_load_path ||= $LOAD_PATH. flat_map { |path |
45
+ begin
46
+ Dir . glob ( "**/*.{rb,#{ RbConfig ::CONFIG [ 'DLEXT' ] } }" , base : path )
47
+ rescue Errno ::ENOENT
48
+ [ ]
49
+ end
50
+ } . uniq . map { |path |
51
+ path . sub ( /\. (rb|#{ RbConfig ::CONFIG [ 'DLEXT' ] } )\z / , '' )
52
+ }
53
+ end
54
+
55
+ def self . retrieve_files_to_require_relative_from_current_dir
56
+ @@files_from_current_dir ||= Dir . glob ( "**/*.{rb,#{ RbConfig ::CONFIG [ 'DLEXT' ] } }" , base : '.' ) . map { |path |
57
+ path . sub ( /\. (rb|#{ RbConfig ::CONFIG [ 'DLEXT' ] } )\z / , '' )
58
+ }
59
+ end
60
+
43
61
CompletionRequireProc = lambda { |target , preposing = nil , postposing = nil |
44
62
if target =~ /\A (['"])([^'"]+)\Z /
45
63
quote = $1
@@ -55,26 +73,17 @@ def defined? do
55
73
break
56
74
end
57
75
end
76
+ result = [ ]
58
77
if tok && tok . event == :on_ident && tok . state == Ripper ::EXPR_CMDARG
59
78
case tok . tok
60
79
when 'require'
61
- result = $LOAD_PATH. flat_map { |path |
62
- begin
63
- Dir . glob ( "**/*.{rb,#{ RbConfig ::CONFIG [ 'DLEXT' ] } }" , base : path )
64
- rescue Errno ::ENOENT
65
- [ ]
66
- end
67
- } . uniq . map { |path |
68
- path . sub ( /\. (rb|#{ RbConfig ::CONFIG [ 'DLEXT' ] } )\z / , '' )
69
- } . select { |path |
80
+ result = retrieve_files_to_require_from_load_path . select { |path |
70
81
path . start_with? ( actual_target )
71
82
} . map { |path |
72
83
quote + path
73
84
}
74
85
when 'require_relative'
75
- result = Dir . glob ( "**/*.{rb,#{ RbConfig ::CONFIG [ 'DLEXT' ] } }" , base : '.' ) . map { |path |
76
- path . sub ( /\. (rb|#{ RbConfig ::CONFIG [ 'DLEXT' ] } )\z / , '' )
77
- } . select { |path |
86
+ result = retrieve_files_to_require_relative_from_current_dir . select { |path |
78
87
path . start_with? ( actual_target )
79
88
} . map { |path |
80
89
quote + path
0 commit comments