@@ -312,10 +312,11 @@ defmodule IEx.Helpers do
312
312
If `path` points to a file, prints its full path.
313
313
"""
314
314
def ls ( path // "." ) do
315
- case File . ls ( expand_home ( path ) ) do
315
+ path = expand_home ( path )
316
+ case File . ls ( path ) do
316
317
{ :ok , items } ->
317
318
sorted_items = Enum . sort ( items )
318
- ls_print ( sorted_items )
319
+ ls_print ( path , sorted_items )
319
320
320
321
{ :error , :enoent } ->
321
322
IO . puts IO.ANSI . escape ( "%{red}No such file or directory #{ path } " )
@@ -331,25 +332,26 @@ defmodule IEx.Helpers do
331
332
332
333
defp expand_home ( other ) , do: other
333
334
334
- defp ls_print ( [ ] ) do
335
+ defp ls_print ( _ , [ ] ) do
335
336
:ok
336
337
end
337
338
338
- defp ls_print ( list ) do
339
+ defp ls_print ( path , list ) do
339
340
# print items in multiple columns (2 columns in the worst case)
340
341
lengths = Enum . map ( list , String . length ( & 1 ) )
341
342
maxlen = maxlength ( lengths )
342
343
width = min ( maxlen , 30 ) + 5
343
- ls_print ( list , width )
344
+ ls_print ( path , list , width )
344
345
end
345
346
346
- defp ls_print ( list , width ) do
347
+ defp ls_print ( path , list , width ) do
347
348
Enum . reduce ( list , 0 , fn ( item , len ) ->
348
349
if len >= 80 do
349
350
IO . puts ""
350
351
len = 0
351
352
end
352
- IO . write format_item ( item , iolist_to_binary ( :io_lib . format ( '~-*ts' , [ width , item ] ) ) )
353
+ IO . write format_item ( Path . join ( path , item ) ,
354
+ iolist_to_binary ( :io_lib . format ( '~-*ts' , [ width , item ] ) ) )
353
355
len + width
354
356
end )
355
357
IO . puts ""
0 commit comments