1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
let cmd_textwidth = 80
let blankmax = 10

function! Sh_list(format, target, alltype, sort)
    let l:lists = []
    let l:alltype = a:alltype

    if a:format == 'long'
        let l:method = 'LongList'
        let l:alltype = 1
    else
        let l:method = 'ShortList'
    endif

    if a:target == ""
        let l:target = '*'
    else
        let l:target = a:target
    endif

    if a:sort == ''
        let l:sort = 'name'
    endif

    if (l:alltype == 1 && a:target == '')
        let l:lists += GlobList('.*')
    endif

    let l:lists += GlobList(l:target)

    exec 'return ' .l:method .'(l:lists)'
endfunction

function! ArrangeNumber(num)
    if a:num < 1
        return a:num
    endif
    let l:len = strlen(a:num)
    if l:len <= 3
        return a:num
    endif
    let l:result = ""
    let l:modulo = l:len % 3
    if l:modulo != 0
        let l:result .= a:num[0:(l:modulo -1)] .','
    endif
    for l:i in range(l:modulo, l:len -1, 3)
        let l:result .= a:num[(l:i):(l:i +2)] .','
    endfor
    return l:result[:-2]
endfunction

function! GlobList(elm)
    return split(glob(a:elm), '\n')
endfunction

function! Blank(limit)
    if a:limit < 1
        return ""
    endif
    let l:blank = ""
    for l:count in range(0, a:limit)
        let l:blank .= " "
    endfor
    return l:blank
endfunction

function! LongList(list)
    if exists('l:text')
        unlet l:text
    endif
    let l:text = ""
    let l:max = len(a:list) -1
    for l:i in range(0, l:max)
        let l:fsize = ArrangeNumber(getfsize(a:list[l:i]))
        if getftype(a:list[l:i]) == 'dir'
            let a:list[l:i] .= "/"
        endif
        let l:text .= Blank(g:blankmax - len(l:fsize)) .l:fsize ." " 
        \.strftime("%Y-%m-%d %H:%M", getftime(a:list[l:i])) ." " .a:list[l:i] ."\n"
    endfor
    return l:text
endfunction

function! ShortList(list)
    if exists('l:text')
        unlet l:text
    endif
    let l:text = ""
    let l:max = len(a:list) -1
    let l:string_ml = 0
    for l:i in range(0, l:max)
        if l:string_ml < len(a:list[l:i])
            let l:string_ml = len(a:list[l:i])
        endif
    endfor
    let l:string_ml += 1
    let l:row = g:cmd_textwidth / l:string_ml

    let l:g = 0
    let l:ftype = ""
    for l:i in range(0, l:max)
        let l:ftype = getftype(a:list[l:i])
        if l:ftype == 'dir'
            let a:list[l:i] .= "/"
        endif
        if l:g < l:row
            let l:text .= a:list[l:i] .Blank(l:string_ml - len(a:list[l:i]))
            let l:g += 1
        else
            let l:text .= a:list[l:i] ."\n"
            let l:g = 0
        endif
    endfor
    return l:text
endfunction

fini
inserted by FC2 system