diff options
| author | Robin Haberkorn <rhaberkorn@fmsbw.de> | 2025-12-31 18:55:49 +0300 |
|---|---|---|
| committer | Robin Haberkorn <rhaberkorn@fmsbw.de> | 2025-12-31 22:55:47 +0300 |
| commit | bcba0ef4486eb9baec3cd4d17250b91e1c8a7f79 (patch) | |
| tree | 396a23561b8f177552b54e95cfda5ac4d8dd8370 /doc/grosciteco.tes | |
| parent | 2d0c67e2e4d705276171e67aa81da8bf90b4d7d0 (diff) | |
no longer touch installed files at install-time
* hash-bang lines in grosciteco.tes and tedoc.tes are fixed up
at build time instead of install-time (via install-exec-hook).
* This will hopefully resolve problems with the FreeBSD port,
since Poudriere installs the package as non-root but with BINMODE=555.
The alternative would have been to set BINMODE=755 in the port which may not
be acceptible by the official port committer.
Anyway, I decided to go out of the way of any conflicts.
See also https://bugs.freebsd.org/bugzilla/show_bug.cgi?format=multiple&id=283601
* On the downside, this will break install-path overrides at install-time
(e.g. `make install bindir=...`).
Diffstat (limited to 'doc/grosciteco.tes')
| -rwxr-xr-x | doc/grosciteco.tes | 389 |
1 files changed, 0 insertions, 389 deletions
diff --git a/doc/grosciteco.tes b/doc/grosciteco.tes deleted file mode 100755 index c4f16e1..0000000 --- a/doc/grosciteco.tes +++ /dev/null @@ -1,389 +0,0 @@ -#!/usr/local/bin/sciteco -mi -!* grosciteco.tes [-t <output-tec>] [--] <output> <input *! - -0,2EJ !* FIXME: Memory limiting is too slow *! - -:EIQ[$SCITECOPATH]/getopt.tes - -!* Process command-line options *! -[optstring]t: -M[getopt]U[output-woman] Q[output-woman]"< Invalid command-line^J 1 ' -EU[output-woman]Q[\[output-woman]] -:Q[getopt.t]"< EU[getopt.t]Q[output-woman].tec ' - -EBN[output-woman] HK 1EB - -0EE !* Groff intermediate code is always ASCII *! - -!* skip whitespace characters *! -@#sw{ - <0A-^^ "N 1; ' :C;> -} - -!* skip N (string) arguments beginning with current one *! -@#sa{ - "~1'< - <0A-^^ "= 1; ' 0A-10"= 1; ' :C;> :M#sw - > -} - -!* get next integer argument, skipping it *! -@#gi{ - \ (0A-^^-"= :C ' <0A"D :C; | 1; '> :M#sw) -} - -!* skip end of command *! -@#sc{ - 0A-10"= :C ' -} - -0U[text.lines] 0U[pos.v] 0U[pos.h] - -!* move to (pos.h,pos.v) relative to origin, making space if necessary *! -@[move]{ [.n - U.n J - Q[pos.v]-Q[text.lines]"> - ZJ Q[pos.v]-Q[text.lines]<I^J> - Q[pos.v]U[text.lines] - | - Q[pos.v]L - ' - Q[pos.h]<.-Z"= I | 0A-10"= I | C' '> - Q.n<.-Z"= 1; ' 0A-10"= 1; ' D> -].n } - -!* draw a line to (h,v) *! -!* FIXME: Works only for straight lines *! -@[line]{ U.[to.v] U.[to.h] - Q.[to.h]-Q[pos.h]"= Q.[to.v]-Q[pos.v]"= ' ' - [* EBN[output-woman] - Q.[to.h]-Q[pos.h]"= - !* vertical line *! - Q.[to.v]-Q[pos.v]"< Q[pos.v]U.v Q.[to.v]U[pos.v] | Q.[to.v]U.v ' - 1:M[move] %[pos.v] .-Z"= I R ' - -A-9472"= 0A-9472"= I┬ | I┐ ' - | 0A-9472"= I┌ | I╷ ' ' - Q.v-Q[pos.v]< - 1:M[move] %[pos.v] .-Z"= I R ' - -A-9472"= 0A-9472"= I┼ | I┤ ' - | 0A-9472"= I├ | I│ ' ' - > - 1:M[move] .-Z"= I R ' - -A-9472"= 0A-9472"= I┴ | I┘ ' - | 0A-9472"= I└ | I╵ ' ' - Q.[to.v]U[pos.v] - | - !* horizontal line - FIXME: works only if horizonal lines are drawn first. *! - Q.[to.h]-Q[pos.h]"< Q[pos.h]U.h Q.[to.h]U[pos.h] | Q.[to.h]U.h ' - Q.h-Q[pos.h]+1< - 1:M[move] I─ %[pos.h] - > - Q.[to.h]U[pos.h] - ' - ]* -} - -!* style last N glyphs/characters *! -1U[default-style] -@[style]{ [.l - U.l Q[font]-Q[default-style]"N - .-Q.lU.l Q.lESSTARTSTYLING Q[font],(-Q.l)ESSETSTYLING - ' -].l } - -[topics] - -!* special characters *! -[glyphs.**]∗ -[glyphs.\-]- -[glyphs.aa]' -[glyphs.aq]' -[glyphs.oq]‘ -[glyphs.cq]’ -[glyphs.dq]" -[glyphs.hy]‐ -[glyphs.ha]^ -[glyphs.em]— -[glyphs.bu]• -[glyphs.pc]· -[glyphs.la]⟨ -[glyphs.ra]⟩ -[glyphs.lq]“ -[glyphs.rq]” -[glyphs.Fo]« -[glyphs.Fc]» -[glyphs.rs]\ -[glyphs.ti]~ -[glyphs.sl]/ -[glyphs.+]+ -[glyphs.->]→ -[glyphs.tm]™ - -!* process formatter commands *! -@[format]{ < - .-Z"= 1; ' - 0AU[cmd] C - Ocmd.U[cmd] - - !cmd.x! - :M#sw - 0AU[cmd] C - Ocmd.xU[cmd] - - !cmd.xT! - 2:M#sa :M#sc F< - !cmd.xr! - :M#sa :M#giU[res] :M#giU[res.h] :M#giU[res.v] :M#sc F< - !cmd.xi! - :M#sa :M#sc F< - !cmd.xF! - L F< - !cmd.xX! - :M#sw .(@W).X.w - Ocmd.xXQ.w - !cmd.xXsciteco_topic! - !* - * FIXME: The buffer position of this topic might still - * change due to movement commands (esp. when formatting - * a table). Only the line+column should no longer change. - * Either store line+column or use markers. - *! - [* EBN[output-woman] 0:M[move] U.d ]* - :EU[topics]\.d: - C :X[topics] - L F< - !cmd.xXsciteco_tt! - [* EBN[output-woman] 0:M[move] U[ttstart] ]* - L F< - !cmd.xXsciteco_tt_end! - [* EBN[output-woman] 0:M[move] - -Q[ttstart]< - Q[ttstart]ESSTARTSTYLING Q[ttstart]ESGETSTYLEAT+16,1ESSETSTYLING - %[ttstart]> - ]* - L F< - !cmd.xXsciteco_startstyling! - [* EBN[output-woman] 0:M[move] U[stylestart] ]* - L F< - !cmd.xXsciteco_setstyling! - C :M#giU.s - [* EBN[output-woman] 0:M[move] - Q[stylestart]ESSTARTSTYLING Q.s,(-Q[stylestart])ESSETSTYLING - ]* - L F< - !cmd.xXsciteco_foldlevel! - C :M#giU.[foldlevel] - [* EBN[output-woman] 0:M[move] - Q.[foldlevel],(ESLINEFROMPOSITION)ESSETLINESTATE - ]* - L F< - !cmd.xXtty! - !cmd.xXdevtag! - L F< - - !cmd.xf! - :M#sa :M#giU.n Q.n+16U.#nt .(:M#sa).X[font] :M#sc - :Q[fonts.\.n]"F F< ' -U[fonts.\.n] - @:EU[styles]{\.#ntESSTYLESETFONTQ[lexer.font]^J} - Ocmd.xfQ[font] - !cmd.xfR! - Q.nU[default-style] - @:EU[styles]{16ESSTYLESETFONTQ[lexer.font]^J} - F< - !cmd.xfB! - @:EU[styles]{1,\.nESSTYLESETBOLD 1,\.#ntESSTYLESETBOLD^J} - F< - !cmd.xfBI! - @:EU[styles]{1,\.nESSTYLESETBOLD 1,\.#ntESSTYLESETBOLD^J} - !cmd.xfI! - @:EU[styles]{1,\.nESSTYLESETITALIC 1,\.#ntESSTYLESETITALIC^J} - @:EU[styles]{0EJ-1"= 1,\.nESSTYLESETUNDERLINE 1,\.#ntESSTYLESETUNDERLINE '^J} - F< - - !cmd.xt! - :M#sa :M#sc F< - !cmd.xs! - 1; - - !cmd.F! - L F< - - !cmd.p! - :M#sw :M#gi Q[pos.v]U[origin.v] :M#sc F< - - !cmd.f! - :M#sw :M#giU[font] :M#sc F< - - !cmd.s! - :M#sw :M#gi :M#sc F< - - !cmd.V! - :M#sw :M#gi/Q[res.v]-1+Q[origin.v]U[pos.v] Q[pos.v]"<0U[pos.v]' :M#sc F< - - !cmd.v! - :M#sw :M#gi/Q[res.v]%[pos.v] :M#sc F< - - !cmd.H! - :M#sw :M#gi/Q[res.h]U[pos.h] :M#sc F< - - !cmd.h! - :M#sw :M#gi/Q[res.h]%[pos.h] :M#sc F< - - !cmd.m! - :M#sw - 0AU[cmd] C - Ocmd.mU[cmd] - - !cmd.md! - :M#sc F< - - !cmd.D! - :M#sw - 0AU[cmd] C - Ocmd.DU[cmd] - - !cmd.DF! - :M#sw - 0AU[cmd] C - Ocmd.DFU[cmd] - - !cmd.DFd! - :M#sc F< - - !cmd.DFg! - :M#sw :M#gi :M#sc F< - - !cmd.Dl! - :M#sw :M#gi/Q[res.h]+Q[pos.h]U.[to.h] :M#gi/Q[res.v]+Q[pos.v]U.[to.v] :M#sc - Q.[to.h],Q.[to.v]M[line] F< - - !cmd.Dp! - !cmd.DP! - :M#sw Q[pos.h]U.[start.h] Q[pos.v]U.[start.v] - < - :M#gi/Q[res.h]U.h Q.h+Q[pos.h]U.[to.h] :M#gi/Q[res.v]U.v Q.v+Q[pos.v]U.[to.v] - Q.h%.[inc.h] Q.v%.[inc.v] - Q.[to.h],Q.[to.v]M[line] - 0A-10"= 1; ' - > - Q.[start.h],Q.[start.v]M[line] - Q.[inc.h]%[pos.h] Q.[inc.v]%[pos.v] - :M#sc F< - - !cmd.Dt! - :M#sw :M#gi/Q[res.h]%[pos.h] :M#sw :M#gi :M#sc F< - - !cmd.t! - :M#sw .(:M#sa).X.w - [* EBN[output-woman] :Q.w:M[move] - G.w :Q.w:M[style] ]* - :Q.w%[pos.h] :M#sc F< - - !cmd.C! - :M#sw 0A-^^u"= - !* FIXME: This can be CuXXXX_XXXX (decomposed, e.g. for cyrillic й) *! - C 16 \U.w @W - | - .(:M#sa).X.w 0Q[glyphs.Q.w]U.w - ' - [* EBN[output-woman] 1:M[move] - Q.wI 1:M[style] ]* :M#sc F< - - !cmd.c! - :M#sw 0AU.w C - [* EBN[output-woman] 1:M[move] - G[glyphs.U.w] 1:M[style] ]* :M#sc F< - - !cmd.N! - :M#sw :M#giU.w - [* EBN[output-woman] 1:M[move] - Q.wI 1:M[style] ]* :M#sc F< - - !cmd.n! - :M#sw :M#gi :M#gi :M#sc F< - - !cmd.w! - :M#sc F< -> } - -!* - * Inline local macro invocations in [format] - * This speeds up runtime by 25% - *! -EQ[format] - J<FR:M[move]Q[move];> - J<FR:M[style]Q[style];> - J<FR:M#saQ#sa;> - J<FR:M#giQ#gi;> - J<FR:M#swQ#sw;> - J<FR:M#scQ#sc;> - !* - * Compress whitespace, kind of dangerous: - * J<FRS ;> - *! -Q*U* - -:M[format] - -!* - * Generate the styling instructions based on the styles - * of the womanpage buffer. The styles are configured according - * to their font positions (already in `styles`). - * Styles are NOT generated in `styles` immediately during - * formatting, since the buffer positions of text to style - * can still change with `move` operations that add whitespace. - * Also, here we can generate a minimal list of styling operations - * ending up with much smaller *.tec files. - * TODO: The size can still be improved by using SCI_SETSTYLINGEX - * if appropriate. - *! -EBN[output-woman] 0EE !* operate in single-byte mode *! -J 0U#cs 0U#cd -< - .ESGETSTYLEATUs Qs"< Qs= ' - .-Z"< Qs-Q#cs"= C F< ' ' - Q#cs"N - .-Q#cd Ul - @:EU[styles]{\#cdESSTARTSTYLING \#cs,\lESSETSTYLING^J} - ' - QsU#cs .U#cd -:C;> - -!* - * The fold level is stored in the line state since it is set - * while the document is not fully built yet. - *! -J 0U#li 0U[cur.fl] 0U[last.line] -ESGETLINECOUNT< - Q#liESGETLINESTATEU#fl - Q#fl"N - Q[cur.fl]"N - Q#li-Q[last.line]Ux - 1024%[cur.fl] - @:EU[styles]{\[last.line]U.l \x<\[cur.fl],Q.lESSETFOLDLEVEL %.l>^J} - ' - Q#li+1U[last.line] Q#flU[cur.fl] - (1024+Q#fl-1)#(2^*13)U#fl - @:EU[styles]{\#fl,\#liESSETFOLDLEVEL^J} - ' -%#li> -Q[cur.fl]"N - Q#li-Q[last.line]Ux - 1024%[cur.fl] - @:EU[styles]{\[last.line]U.l \x<\[cur.fl],Q.lESSETFOLDLEVEL %.l>^J} -' - -!* - * Save the clear-text part of the document into <output-woman> - *! -2EL EW - -EQ[styles] - -!* Generate topic index *! -J I!*Q[topics]*!^J - -2EL EWQ[getopt.t] - --EX |
