aboutsummaryrefslogtreecommitdiffhomepage
path: root/lib/opener.tes
blob: 98ce63190053f980315e97c7066e22aae885bdc8 (plain)
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
!*$
 * M[opener] -- Open a number of files from the current buffer
 *
 * This is usually the unnamed buffer as initialized from the command line.
 * It supports both the +line[,column] and filename:line[:column] syntaxes.
 * Since this may make it hard to open files with certain file names, all
 * filenames after "--" are interpreted verbatim.
 *!
@[opener]{
  <.-Z;
    !* --/-S stops processing of special arguments *!
    0A--"= 1A--"= 2A-10"=
      L <:L;R 0X.f [* EBN.f ]* L> 1;
    '''

    1U.l 1U.c
    !* +line[,column] *!
    0A-+"= C 0A"D
      \U.l <0A"DC|1;'> 0A-,"= C \U.c <0A"DC|1;'> '
      0A-10"= 2LR Oopen '
    ' '

    !* filename:line[:column][:] *!
    LR -A-:"=R'
    0U.p <-%.pA"D|1;'> Q.pA-:"=
      Q.p+1C \U.a R 0U.p <-%.pA"D|1;'> Q.pA-:"=
        Q.p+1C \U.l Q.aU.c R
      |
        Q.aU.l 1U.c
      '
    |
      LR
    '

  !open!
    0X.f [*
      EBN.f Q.c-1,Q.l-1ESFINDCOLUMN:J
    ]*
  L>
}