diff options
author | Robin Haberkorn <robin.haberkorn@googlemail.com> | 2014-11-02 00:06:28 +0100 |
---|---|---|
committer | Robin Haberkorn <robin.haberkorn@googlemail.com> | 2014-11-02 00:06:28 +0100 |
commit | a395c9df173b53e095f1a20d6bc583063cdb60c7 (patch) | |
tree | bbfc9911b5ad561f0d35c6bf475520a4c492eb55 | |
parent | 06d0bac8006889749fbf03efd5200ae68818b576 (diff) | |
download | sciteco-a395c9df173b53e095f1a20d6bc583063cdb60c7.tar.gz |
changed syntax for long Q-Register names: use [] brackets instead of {}
this breaks many existing scripts, and means you may have to rebuild SciTECO
with ./configure --enable-bootstrap
The syntax of SciTECO might change in backwards-incompatible until
version 1.0 is released.
-rw-r--r-- | TODO | 1 | ||||
-rwxr-xr-x | doc/generate-docs.tes | 18 | ||||
-rwxr-xr-x | doc/htbl.tes | 80 | ||||
-rw-r--r-- | doc/sciteco.7.template | 8 | ||||
-rw-r--r-- | lib/fnkeys.tes | 22 | ||||
-rw-r--r-- | lib/string.tes | 24 | ||||
-rw-r--r-- | src/qregisters.cpp | 6 | ||||
-rwxr-xr-x | src/symbols-extract.tes | 4 | ||||
-rw-r--r-- | teco.ini | 4 |
9 files changed, 83 insertions, 84 deletions
@@ -10,7 +10,6 @@ Known Bugs: * crashes on large files: S^EM^X$ (regexp: .*) Features: - * Use [] for long Q-Register names instead of {} * properly support Unicode encodings and the character-based model * link against libncursesw if possible * translate documents to Unicode strings diff --git a/doc/generate-docs.tes b/doc/generate-docs.tes index f5758e6..2d5af6a 100755 --- a/doc/generate-docs.tes +++ b/doc/generate-docs.tes @@ -27,12 +27,12 @@ Troff requests, escapes and tman macros may also be used. ! -@{format_header}{ +@[format_header]{ fd--S .U.f :L"S.|Z'U.t Q.f,Q.tXa Q.f,Q.tD I ebQ#tm I\# GENERATED FROM Q.#sc (\.#sc): .SS Qa -a-10"N I - ' eq.{header} + ' eq.[header] j<fr .br @@ -44,7 +44,7 @@ j<s[MC];.u.t-s[.,q.t-1xa .-1,q.td i .RI [ Qa ] > j<fr->\(->;> -j<sMCM[|MC];.u.t <-a"C|-a-|"N1;''r> .,q.txa .,q.td eqa<fr| | ;> eq.{header}i +j<sMCM[|MC];.u.t <-a"C|-a-|"N1;''r> .,q.txa .,q.td eqa<fr| | ;> eq.[header]i .IR Qa > j<frS @@ -57,12 +57,12 @@ j<frS ;> j 0a-10"=d' zj-a-10"=-d' - ebQ#tm g.{header}i + ebQ#tm g.[header]i . } -@{format_body}{ +@[format_body]{ i.LP <fr @@ -137,12 +137,12 @@ FS ! extract header ! h:fd -"Fzj'0,.x.{header}0,.d +"Fzj'0,.x.[header]0,.d - eq.{header} - :M{format_header} + eq.[header] + :M[format_header] eq.c - :M{format_body} + :M[format_body] > EF Q*-1"=1;' diff --git a/doc/htbl.tes b/doc/htbl.tes index d8b8827..8998d79 100755 --- a/doc/htbl.tes +++ b/doc/htbl.tes @@ -12,66 +12,66 @@ LR 0X#in 2LR 0X#ou EBQ#in EB -EF fs.TS.nr tbl-margin ((\n[.in]+\n[.o])*100+(6.5i/2))/6.5i-((6.5i/2)/6.5i) .nr tbl-width 100-\n[tbl-margin] .HTML <table class="tbl" style="margin-left:\n[tbl-margin]%"; -9u.{tab} +9u.[tab] l.u.fl.-1u.t i -q.f,q.t:sbox"Sli border="1"' q.f,q.t:sallbox"Sli rules="all"' q.f,q.t:sexpand"Sli width="\n[tbl-width]%"' q.f,q.t:stab("s0au.{tab}' q.fjk-dlri> l +q.f,q.t:sbox"Sli border="1"' q.f,q.t:sallbox"Sli rules="all"' q.f,q.t:sexpand"Sli width="\n[tbl-width]%"' q.f,q.t:stab("s0au.[tab]' q.fjk-dlri> l -1u.{row} 1u.{col} @.r{ - .{format.\.{row}.\.{col}.align} 0U.{format.\.{row}.\.{col}.bold} 0U.{format.\.{row}.\.{col}.italic} - 1U.{format.\.{row}.\.{col}.rowspan} 1U.{format.\.{row}.\.{col}.colspan} +1u.[row] 1u.[col] @.r{ + .[format.\.[row].\.[col].align] 0U.[format.\.[row].\.[col].bold] 0U.[format.\.[row].\.[col].italic] + 1U.[format.\.[row].\.[col].rowspan] 1U.[format.\.[row].\.[col].colspan] } :M.r < -0a-L"=.{format.\.{row}.\.{col}.align}left' -0a-C"=.{format.\.{row}.\.{col}.align}center' -0a-R"=.{format.\.{row}.\.{col}.align}right' -0a-B"=1U.{format.\.{row}.\.{col}.bold}' -0a-I"=1U.{format.\.{row}.\.{col}.italic}' -0a- "=%.{col} :M.r' -0a-,"=%.{row} 1u.{col} :M.r' 0a-10"=%.{row} 1u.{col} :M.r' +0a-L"=.[format.\.[row].\.[col].align]left' +0a-C"=.[format.\.[row].\.[col].align]center' +0a-R"=.[format.\.[row].\.[col].align]right' +0a-B"=1U.[format.\.[row].\.[col].bold]' +0a-I"=1U.[format.\.[row].\.[col].italic]' +0a- "=%.[col] :M.r' +0a-,"=%.[row] 1u.[col] :M.r' 0a-10"=%.[row] 1u.[col] :M.r' 0a-."=1;' D> -k q.{row}u.{frows} q.{col}u.{fcols} 1u.{row} 1u.{col} .u.#bd -<Q.{row}-Q.{frows}"> -EQ.{format.\.{row}.\.{col}.align} G.{format.\.{frows}.\.{col}.align} 1EB -Q.{format.\.{frows}.\.{col}.bold}U.{format.\.{row}.\.{col}.bold} -Q.{format.\.{frows}.\.{col}.italic}U.{format.\.{row}.\.{col}.italic} -Q.{format.\.{frows}.\.{col}.rowspan}U.{format.\.{row}.\.{col}.rowspan} -Q.{format.\.{frows}.\.{col}.colspan}U.{format.\.{row}.\.{col}.colspan} ' +k q.[row]u.[frows] q.[col]u.[fcols] 1u.[row] 1u.[col] .u.#bd +<Q.[row]-Q.[frows]"> +EQ.[format.\.[row].\.[col].align] G.[format.\.[frows].\.[col].align] 1EB +Q.[format.\.[frows].\.[col].bold]U.[format.\.[row].\.[col].bold] +Q.[format.\.[frows].\.[col].italic]U.[format.\.[row].\.[col].italic] +Q.[format.\.[frows].\.[col].rowspan]U.[format.\.[row].\.[col].rowspan] +Q.[format.\.[frows].\.[col].colspan]U.[format.\.[row].\.[col].colspan] ' .,.+3:sT{ "S .,s -T}.-3X.{data.\.{row}.\.{col}} C 1| .,.+2:s\^^"S -0U.{format.\.{row}.\.{col}.rowspan} -Q.{row}-1U.#cr <Q.{format.\.#cr.\.{col}.rowspan}">1;' -%.#cr> -%.{format.\.#cr.\.{col}.rowspan} ' -.u.f s[U.{tab}, - q.f,.-1X.{data.\.{row}.\.{col}} 0'u.{data.\.{row}.\.{col}.block} --a-q.{tab}"= %.{col} | %.{row} 1u.{col} .,.+4:s.TE +T}.-3X.[data.\.[row].\.[col]] C 1| .,.+2:s\^^"S +0U.[format.\.[row].\.[col].rowspan] +Q.[row]-1U.#cr <Q.[format.\.#cr.\.[col].rowspan]">1;' -%.#cr> +%.[format.\.#cr.\.[col].rowspan] ' +.u.f s[U.[tab], + q.f,.-1X.[data.\.[row].\.[col]] 0'u.[data.\.[row].\.[col].block] +-a-q.[tab]"= %.[col] | %.[row] 1u.[col] .,.+4:s.TE "S1;' '> q.#bd,.D -q.{row}-1u.{drows} 1u.{row} -q.{drows}<I.HTML <tr> +q.[row]-1u.[drows] 1u.[row] +q.[drows]<I.HTML <tr> -1u.{col} -q.{fcols}<Q.{format.\.{row}.\.{col}.rowspan}"> -I.HTML <td rowspan="\.{format.\.{row}.\.{col}.rowspan}" colspan="\.{format.\.{row}.\.{col}.colspan}" -q.{data.\.{row}.\.{col}.block}"= I align="Q.{format.\.{row}.\.{col}.align}"> -Q.{format.\.{row}.\.{col}.bold}"N I<b> ' -Q.{format.\.{row}.\.{col}.italic}"N I<i> ' -G.{data.\.{row}.\.{col}} -Q.{format.\.{row}.\.{col}.bold}"N I</b> ' -Q.{format.\.{row}.\.{col}.italic}"N I</i> ' +1u.[col] +q.[fcols]<Q.[format.\.[row].\.[col].rowspan]"> +I.HTML <td rowspan="\.[format.\.[row].\.[col].rowspan]" colspan="\.[format.\.[row].\.[col].colspan]" +q.[data.\.[row].\.[col].block]"= I align="Q.[format.\.[row].\.[col].align]"> +Q.[format.\.[row].\.[col].bold]"N I<b> ' +Q.[format.\.[row].\.[col].italic]"N I<i> ' +G.[data.\.[row].\.[col]] +Q.[format.\.[row].\.[col].bold]"N I</b> ' +Q.[format.\.[row].\.[col].italic]"N I</i> ' I</td> | I> -Q.{data.\.{row}.\.{col}} +Q.[data.\.[row].\.[col]] .HTML </td> ' ' -%.{col}> +%.[col]> I.HTML </tr> -%.{row}> +%.[row]> I.HTML </table> > diff --git a/doc/sciteco.7.template b/doc/sciteco.7.template index c17e8b1..364d115 100644 --- a/doc/sciteco.7.template +++ b/doc/sciteco.7.template @@ -367,7 +367,7 @@ a completion, so for instance \(lq~/foo\(rq will not complete a file in the user's home directory (tilde is not part of the file name but tilde-expansions are performed by the shell). \*(ST does however perform completions after string building so that -\(lq^EQ{$HOME}/foo\(rq could be completed. +\(lq^EQ[$HOME]/foo\(rq could be completed. . . .SH ARITHMETICS AND EXPRESSIONS @@ -703,9 +703,9 @@ otherwise to a global one. Refers to a two character global or local Q-Register whose name is upper-cased. .TP -.BI { name } +.BI [ name ] .TQ -.BI .{ name } +.BI .[ name ] Refers to a Q-Register with an arbitrary .IR name . The name is \fBnot\fP upper-cased. @@ -716,7 +716,7 @@ balanced. The short single or double character specifications refer to registers in the same namespace as long specifications. For instance the specifications \(lqa\(rq and \(lqA\(rq -are equivalent to \(lq{A}\(rq. +are equivalent to \(lq[A]\(rq. . .SS Push-Down List . diff --git a/lib/fnkeys.tes b/lib/fnkeys.tes index fb7678c..c40be40 100644 --- a/lib/fnkeys.tes +++ b/lib/fnkeys.tes @@ -15,14 +15,14 @@ } ! Function key macros ! -@{DC}{} -@{HOME}{(-(.-(0L.))M#c} -@{END}{(-(.-(:L"S.-1|Z'))M#c} -@{NPAGE}{(-(.-(M#p.))M#c} -@{PPAGE}{(-(.-(-M#p.))M#c} -@{LEFT}{(-M#c} -@{SLEFT}{(-(.--W.)M#c} -@{RIGHT}{(M#c} -@{SRIGHT}{(-(.-W.)M#c} -@{UP}{(-(.-B.)M#c} -@{DOWN}{(-(.-L.)M#c} +@[DC]{} +@[HOME]{(-(.-(0L.))M#c} +@[END]{(-(.-(:L"S.-1|Z'))M#c} +@[NPAGE]{(-(.-(M#p.))M#c} +@[PPAGE]{(-(.-(-M#p.))M#c} +@[LEFT]{(-M#c} +@[SLEFT]{(-(.--W.)M#c} +@[RIGHT]{(M#c} +@[SRIGHT]{(-(.-W.)M#c} +@[UP]{(-(.-B.)M#c} +@[DOWN]{(-(.-L.)M#c} diff --git a/lib/string.tes b/lib/string.tes index 2f29f4a..93568e1 100644 --- a/lib/string.tes +++ b/lib/string.tes @@ -1,7 +1,7 @@ ! String utility macros ! -! <pos1,pos2>M{symcasecmp} - Compare symbol at pos1 with symbol at pos2 (caseless) ! -@{symcasecmp}{ +! <pos1,pos2>M[symcasecmp] - Compare symbol at pos1 with symbol at pos2 (caseless) ! +@[symcasecmp]{ U.2U.1 -.%.1 -.%.2 @.#lo{ U.v Q.v"W a-A%.v | Q.v"CQ.v|0' ' @@ -12,8 +12,8 @@ Q.c } -! <i,j>M{exchange} - Exchange line at I with line at J (I < J), returning new J ! -@{exchange}{ +! <i,j>M[exchange] - Exchange line at I with line at J (I < J), returning new J ! +@[exchange]{ U.jU.i Q.jJ X.xK Q.iJ G.x .-Q.i%.j .-(X.xL.)%.j -K @@ -21,25 +21,25 @@ Q.j } -! <i,j>M{qsort} - Sort lines beginning at I until J using Quicksort algorithm ! -@{qsort}{ +! <i,j>M[qsort] - Sort lines beginning at I until J using Quicksort algorithm ! +@[qsort]{ U.rU.l Q.l-Q.r"< Q.lU.i Q.rJB .U.j < - Q.iJ <.,Q.rM{symcasecmp}-1; .-Q.r; L> .U.i - Q.jJ <.,Q.rM{symcasecmp}:; .-Q.l-1:; B> .U.j + Q.iJ <.,Q.rM[symcasecmp]-1; .-Q.r; L> .U.i + Q.jJ <.,Q.rM[symcasecmp]:; .-Q.l-1:; B> .U.j Q.i-Q.j; - Q.i,Q.jM{exchange}U.j + Q.i,Q.jM[exchange]U.j > - Q.i,Q.rM{symcasecmp}"> Q.i,Q.rM{exchange}U.r ' + Q.i,Q.rM[symcasecmp]"> Q.i,Q.rM[exchange]U.r ' - Q.l-Q.i"< Q.iJB Q.l,.M{qsort} ' - Q.i-Q.r"< Q.iJL .,Q.rM{qsort} ' + Q.l-Q.i"< Q.iJB Q.l,.M[qsort] ' + Q.i-Q.r"< Q.iJL .,Q.rM[qsort] ' ' } diff --git a/src/qregisters.cpp b/src/qregisters.cpp index f0d56a5..1a7ba34 100644 --- a/src/qregisters.cpp +++ b/src/qregisters.cpp @@ -375,7 +375,7 @@ MICROSTATE_START; switch (chr) { case '.': undo.push_var(is_local) = true; break; case '#': set(&&StateFirstChar); break; - case '{': set(&&StateString); break; + case '[': set(&&StateString); break; default: undo.push_str(name) = String::chrdup(g_ascii_toupper(chr)); goto done; @@ -396,10 +396,10 @@ StateSecondChar: StateString: switch (chr) { - case '{': + case '[': undo.push_var(nesting)++; break; - case '}': + case ']': if (!nesting) goto done; undo.push_var(nesting)--; diff --git a/src/symbols-extract.tes b/src/symbols-extract.tes index 2fe270c..6bd0051 100755 --- a/src/symbols-extract.tes +++ b/src/symbols-extract.tes @@ -1,7 +1,7 @@ #!./sciteco-minimal -m ! ./symbols-extract.tes <input file> <output file> <prefix pattern list> <array name> ! -EMQ{$SCITECOPATH}/string.tes +EMQ[$SCITECOPATH]/string.tes ! read commandline arguments ! LR 0X#in 2LR 0X#ou 2LR 0X#pa 2LR 0X#na HK @@ -10,7 +10,7 @@ LR 0X#in 2LR 0X#ou 2LR 0X#pa 2LR 0X#na HK EBQ#in <S#defineS[Q#pa]; -SS :Xa> EF ! sort all defines ! -Ga ZJB 0,.M{qsort} J +Ga ZJB 0,.M[qsort] J ! format as C/C++ array ! I/* @@ -1,13 +1,13 @@ ! TECO.INI ! -EQ0Q{$SCITECOPATH}/lexer.tes +EQ0Q[$SCITECOPATH]/lexer.tes @1{ ! lexer.tes calls this ! } 0,32ED ! Keyboard macros ! -EMQ{$SCITECOPATH}/fnkeys.tes +EMQ[$SCITECOPATH]/fnkeys.tes ! Uncomment to enable default keyboard macros ! ! 0,64ED ! |