@@ -198,25 +198,30 @@ function! s:app_has(feature) abort dict
198198endfunction
199199
200200function ! s: has_framework (feature)
201- if a: feature = ~# ' ^laravel'
201+ let parts = split (a: feature , ' \s\+' )
202+ let name = remove (parts, 0 )
203+
204+ if len (parts) > 1
205+ let comparator = get (parts, 0 )
206+ let ver = get (parts, 1 )
207+ else
208+ let comparator = ' =='
209+ let ver = get (parts, 0 , ' ' )
210+ end
211+
212+ if name == ' laravel'
202213 let package = ' laravel/framework'
203- let constraint = substitute (a: feature , ' ^laravel' , ' ' , ' ' )
204- elseif a: feature = ~# ' ^lumen'
214+ elseif name == ' lumen'
205215 let package = ' laravel/lumen-framework'
206- let constraint = substitute (a: feature , ' ^lumen' , ' ' , ' ' )
207216 else
208- return 0
217+ return v: false
209218 endif
210219
211220 try
212- let ver = composer#query ( ' require. ' . package )
221+ return composer#project (). is_installed (package, comparator, ver )
213222 catch /^Vim\%((\a\+)\)\=:E117/
214- return 0
223+ return v: false
215224 endtry
216-
217- let constraint = ' ^[^0-9]*' . escape (constraint, ' .' )
218-
219- return ! empty (ver) && match (ver, constraint) >= 0
220225endfunction
221226
222227function ! s: has_feature_by_path (app, feature)
0 commit comments