Mercurial > emacs
view lispintro/lambda-2.eps @ 72917:17942cb3949e
(allout-regexp, allout-line-boundary-regexp)
(allout-bob-regexp): Correct grouping and boundaries to fix backwards traversal.
(allout-depth-specific-regexp, allout-depth-one-regexp): New versions that
exploit \\{M\\} regexp syntax, to avoid geometric or worse time in
allout-ascend.
(allout-doublecheck-at-and-shallower): Identify depth threshold below which
topics are checked for and disqualified by containment discontinuities.
(allout-hotspot-key-handler): Correctly handle multiple-key strokes. Remove
some unused variables.
(allout-mode-leaders): Clarify that mode-specific comment-start will be used
(set-allout-regexp): Correctly regexp-quote allout regexps to properly accept
alternative header-leads and primary bullets with regexp-specific characters
(eg, C "/*", mathematica "(*").
Include new regular expressions among those configured.
(allout-infer-header-lead-and-primary-bullet): Rename allout-infer-header-lead.
(allout-recent-depth): Manifest as a variable as well as a function.
(allout-prefix-data): Simplify into an inline instead of a macro, assuming
current match data rather than being explicitly passed it. Establish
allout-recent-depth value as well as allout-recent-prefix-beginning and
allout-recent-prefix-end.
(allout-aberrant-container-p): True when an item's immediate offspring
discontinuously contained. Useful for disqualifying unintended topic prefixes,
likely at low depths.
(allout-goto-prefix-doublechecked): Elaborated version of allout-goto-prefix
which disqualifies aberrant pseudo-items.
(allout-pre-next-prefix): Layer on top of lower-level routines, to get
disqualification of aberrant containers.
(allout-end-of-prefix, allout-end-of-subtree): Disqualify aberrant containers.
(allout-beginning-of-current-entry): Position at start of buffer when in
container (depth 0) entry.
(nullify-allout-prefix-data): Invalidate allout-recent-* prefix data.
(allout-current-bullet): Strip text properties.
(allout-get-prefix-bullet): Use right match groups.
(allout-beginning-of-line, allout-next-heading): Disqualify aberrant containers.
(allout-previous-heading): Disqualify aberrant containers, and change to
regular (rather than inline) function, to allow self-recursion.
(allout-get-invisibility-overlay): Increment so progress is made when the first
overlay is not the sought one.
(allout-end-of-prefix): Disqualify aberrant containers.
(allout-end-of-line): Cycle something like allout-beginning-of-line.
(allout-mode): Make allout-old-style-prefixes (ie, enabling use with outline.el
outlines) functional again. Change the primary bullet along with the
header-lead - level 1 new-style bullets now work.
Engage allout-before-change-handler in mainline emacs, not just xemacs, to do
undo handling.
(allout-before-change-handler): Expose undo changes occurring in hidden
regions. Use allout-get-invisibility-overlay instead of reimplementing it
inline.
(allout-chart-subtree): Use start rather than end of prefix in charts. Use
allout-recent-depth variable.
(allout-chart-siblings): Disqualify aberrant topics.
(allout-beginning-of-current-entry): Position correctly.
(allout-ascend): Use new allout-depth-specific-regexp and
allout-depth-one-regexp for linear instead of O(N^2) or worse behavior.
(allout-ascend-to-depth): Depend on allout-ascend, rather than reimplementing
an algorithm.
(allout-up-current-level): Depend on allout-ascend, rather than reimplementing
an algorithm. Return to start-point if we fail.
(allout-descend-to-depth): Use allout-recent-depth variable instead of function.
(allout-next-sibling): On traversal of numerous intervening topics, resort to
economical allout-next-sibling-leap.
(allout-next-sibling-leap): Specialized version of allout-next-sibling that
uses allout-ascend cleverly, to depend on a regexp search to leap large numbers
of contained topics, rather than arbitrarily many one-by-one traversals.
(allout-next-visible-heading): Disqualify aberrant topics.
(allout-previous-visible-heading): Position consistently when interactive.
(allout-forward-current-level): Base on allout-previous-sibling rather than
(differently) reimplmenting the algorithm. Remove some unused variables.
(allout-solicit-alternate-bullet): Present default choice stripped of text
properties.
(allout-rebullet-heading): Use bullet stripped of text properties.
Register changes using allout-exposure-change-hook. Disregard aberrant topics.
(allout-shift-in): With universal-argument, make topic a peer of it's former
offspring. Simplify the code by separating out allout-shift-out functionality.
(allout-shift-out): With universal-argument, make offspring peers of their
former container, and its siblings. Implement the functionality here, rather
than inappropriately muddling the implementation of allout-shift-in.
(allout-rebullet-topic): Respect additional argument for new parent-child
separation function.
(allout-yank-processing): Use allout-ascend directly.
(allout-show-entry): Disqualify aberrant topics.
(allout-show-children): Handle discontinuous children gracefully, extending the
depth being revealed to expose them and posting a message indicating the
situation.
(allout-show-to-offshoot): Remove obsolete and incorrect comment. Leave cursor
in correct position.
(allout-hide-current-subtree): Use allout-ascend directly. Disqualify aberrant
topics.
(allout-kill-line, allout-kill-topic): Preserve exposure layout in a way that
the yanks can restore it, as used to happen.
(allout-yank-processing): Restore exposure layout as recorded by allout-kill-*,
as used to happen.
(allout-annotate-hidden, allout-hide-by-annotation): New routines for preseving
and restoring exposure layout across kills.
(allout-toggle-subtree-encryption): Run allout-exposure-change-hook.
(allout-encrypt-string): Strip text properties. Rearranged order and
outline-headings for some of the miscellaneous functions.
(allout-resolve-xref): No need to quote the error name in the condition-case
handler section.
(allout-flatten): Classic recursive (and recursively intensive, without
tail-recursion) list-flattener, needed by allout-shift-out when confronted with
discontinuous children.
author | Eli Zaretskii <eliz@gnu.org> |
---|---|
date | Sat, 16 Sep 2006 10:24:24 +0000 |
parents | 5791a1f3fd71 |
children | 6ad2412f0362 |
line wrap: on
line source
%! %%BoundingBox: 33 730 240 777 %%Title: lambda-diagram2 %%CreationDate: Wed Mar 8 14:33:09 1995 %%Creator: Tgif-2.16-p4 by William Chia-Wei Cheng (william@cs.UCLA.edu) % % Due to bugs in Transcript, the 'PS-Adobe-' stuff is omitted from line 1 % /tgifdict 132 dict def tgifdict begin % % Using a zero value radius for an ellipse or an arc would result % in a non-invertible CTM matrix which causes problem when this % when this PostScript is wrapped inside other routines, such as % the multi.ps package from % ftp.ucc.su.oz.au:/pub/ps_printing/multi. You can overcome such % error by uncommenting the sole line of the procedure below: % /tgif_min_radius { % dup 0.01 lt { pop 0.01 } if } bind def /tgifellipsedict 6 dict def tgifellipsedict /mtrx matrix put /tgifellipse { tgifellipsedict begin /yrad exch def /xrad exch def /y exch def /x exch def /savematrix mtrx currentmatrix def x y translate xrad yrad scale 0 0 1 0 360 arc savematrix setmatrix end } def /tgifarrowtipdict 8 dict def tgifarrowtipdict /mtrx matrix put /tgifarrowtip { tgifarrowtipdict begin /dy exch def /dx exch def /h exch def /w exch def /y exch def /x exch def /savematrix mtrx currentmatrix def x y translate dy dx atan rotate 0 0 moveto w neg h lineto w neg h neg lineto savematrix setmatrix end } def /tgifarcdict 8 dict def tgifarcdict /mtrx matrix put /tgifarcn { tgifarcdict begin /endangle exch def /startangle exch def /yrad exch def /xrad exch def /y exch def /x exch def /savematrix mtrx currentmatrix def x y translate xrad yrad scale 0 0 1 startangle endangle arc savematrix setmatrix end } def /tgifarc { tgifarcdict begin /endangle exch def /startangle exch def /yrad exch def /xrad exch def /y exch def /x exch def /savematrix mtrx currentmatrix def x y translate xrad yrad scale 0 0 1 startangle endangle arcn savematrix setmatrix end } def /tgifsetuserscreendict 22 dict def tgifsetuserscreendict begin /tempctm matrix def /temprot matrix def /tempscale matrix def /concatprocs { /proc2 exch cvlit def /proc1 exch cvlit def /newproc proc1 length proc2 length add array def newproc 0 proc1 putinterval newproc proc1 length proc2 putinterval newproc cvx } def /resmatrix matrix def /findresolution { 72 0 resmatrix defaultmatrix dtransform /yres exch def /xres exch def xres dup mul yres dup mul add sqrt } def end /tgifsetuserscreen { tgifsetuserscreendict begin /spotfunction exch def /screenangle exch def /cellsize exch def /m tempctm currentmatrix def /rm screenangle temprot rotate def /sm cellsize dup tempscale scale def sm rm m m concatmatrix m concatmatrix pop 1 0 m dtransform /y1 exch def /x1 exch def /veclength x1 dup mul y1 dup mul add sqrt def /frequency findresolution veclength div def /newscreenangle y1 x1 atan def m 2 get m 1 get mul m 0 get m 3 get mul sub 0 gt {{neg} /spotfunction load concatprocs /spotfunction exch def } if frequency newscreenangle /spotfunction load setscreen end } def /tgifsetpatterndict 18 dict def tgifsetpatterndict begin /bitison { /ybit exch def /xbit exch def /bytevalue bstring ybit bwidth mul xbit 8 idiv add get def /mask 1 7 xbit 8 mod sub bitshift def bytevalue mask and 0 ne } def end /tgifbitpatternspotfunction { tgifsetpatterndict begin /y exch def /x exch def /xindex x 1 add 2 div bpside mul cvi def /yindex y 1 add 2 div bpside mul cvi def xindex yindex bitison { /onbits onbits 1 add def 1 } { /offbits offbits 1 add def 0 } ifelse end } def /tgifsetpattern { tgifsetpatterndict begin /cellsz exch def /angle exch def /bwidth exch def /bpside exch def /bstring exch def /onbits 0 def /offbits 0 def cellsz angle /tgifbitpatternspotfunction load tgifsetuserscreen {} settransfer offbits offbits onbits add div setgray end } def /tgifxpmdict 4 dict def /tgifbwpicstr 1 string def /tgifcolorpicstr 3 string def /tgifsetpixels { tgifxpmdict begin /pixels exch def end } def /tgifsetpix { tgifxpmdict begin pixels 3 1 roll putinterval end } def /tgifbwspot { tgifxpmdict begin /index exch def tgifbwpicstr 0 pixels index 3 mul 3 getinterval aload pop 255 mul .114 mul exch 255 mul .587 mul add exch 255 mul .299 mul add cvi put tgifbwpicstr end } def /tgifcolorspot { tgifxpmdict begin /index exch def pixels index 3 mul 3 getinterval aload pop 255 mul cvi tgifcolorpicstr 2 3 -1 roll put 255 mul cvi tgifcolorpicstr 1 3 -1 roll put 255 mul cvi tgifcolorpicstr 0 3 -1 roll put tgifcolorpicstr end } def /tgifnewcolorspot { tgifxpmdict begin /index exch def pixels index 3 mul 3 getinterval aload pop setrgbcolor end } def /tgifcolordict 4 dict def /colorimage where { pop } { /colorimage { tgifcolordict begin pop pop pop pop pop /ih exch def /iw exch def /x 0 def /y 0 def 1 1 ih { pop 1 1 iw { pop currentfile tgifbwpicstr readhexstring pop 0 get tgifnewcolorspot x y moveto 1 0 rlineto 0 1 rlineto -1 0 rlineto closepath fill /x x 1 add def } for /y y 1 add def /x 0 def } for end } def } ifelse /tgifpatdict 10 dict def /tgifpatbyte { currentdict /retstr get exch pat i cellsz mod get put } def /tgifpatproc { 0 1 widthlim {tgifpatbyte} for retstr /i i 1 add def } def /tgifpatfill { tgifpatdict begin /h exch def /w exch def /lty exch def /ltx exch def /cellsz exch def /pat exch def /widthlim w cellsz div cvi 1 sub def /retstr widthlim 1 add string def /i 0 def ltx lty translate w h true [1 0 0 1 0 0] {tgifpatproc} imagemask ltx neg lty neg translate end } def /pat1 <ffffffffffffffff> def /pat2 <0000000000000000> def /pat3 <8000000008000000> def /pat4 <8800000022000000> def /pat5 <8800220088002200> def /pat6 <8822882288228822> def /pat7 <aa55aa55aa55aa55> def /pat8 <77dd77dd77dd77dd> def /pat9 <77ffddff77ffddff> def /pat10 <77ffffff77ffffff> def /pat11 <7fffffff7fffffff> def /pat12 <8040200002040800> def /pat13 <40a00000040a0000> def /pat14 <ff888888ff888888> def /pat15 <ff808080ff080808> def /pat16 <f87422478f172271> def /pat17 <038448300c020101> def /pat18 <081c22c180010204> def /pat19 <8080413e080814e3> def /pat20 <8040201008040201> def /pat21 <8844221188442211> def /pat22 <77bbddee77bbddee> def /pat23 <c1e070381c0e0783> def /pat24 <7fbfdfeff7fbfdfe> def /pat25 <3e1f8fc7e3f1f87c> def /pat26 <0102040810204080> def /pat27 <1122448811224488> def /pat28 <eeddbb77eeddbb77> def /pat29 <83070e1c3870e0c1> def /pat30 <fefdfbf7efdfbf7f> def /pat31 <7cf8f1e3c78f1f3e> def /tgifcentertext { dup stringwidth pop 2 div neg 0 rmoveto } def /tgifrighttext { dup stringwidth pop neg 0 rmoveto } def /tgifreencsmalldict 12 dict def /tgifReEncodeSmall { tgifreencsmalldict begin /newcodesandnames exch def /newfontname exch def /basefontname exch def /basefontdict basefontname findfont def /newfont basefontdict maxlength dict def basefontdict { exch dup /FID ne { dup /Encoding eq { exch dup length array copy newfont 3 1 roll put } { exch newfont 3 1 roll put } ifelse } { pop pop } ifelse } forall newfont /FontName newfontname put newcodesandnames aload pop newcodesandnames length 2 idiv { newfont /Encoding get 3 1 roll put} repeat newfontname newfont definefont pop end } def /tgifgray { 8 1 0 72 300 32 div div tgifsetpattern } bind def /tgifboxdict 6 dict def /tgifboxstroke { tgifboxdict begin /pat def /w def /y2 exch def /x2 exch def /y1 exch def /x1 exch def 1.415 setmiterlimit w 1 eq { w setlinewidth } if pat pat1 ne pat pat2 ne and { gsave pat tgifgray } if newpath x1 y1 moveto x2 y1 lineto x2 y2 lineto x1 y2 lineto closepath pat pat2 eq { 1 setgray stroke 0 setgray } { stroke } ifelse pat pat1 ne pat pat2 ne and { grestore } if w 1 eq { 1 setlinewidth } if 1 setmiterlimit end } def /tgifboxfill { tgifboxdict begin /pat def /y2 exch def /x2 exch def /y1 exch def /x1 exch def pat pat1 ne pat pat2 ne and { gsave pat tgifgray } if newpath x1 y1 moveto x2 y1 lineto x2 y2 lineto x1 y2 lineto closepath pat pat2 eq { 1 setgray fill 0 setgray } { fill } ifelse pat pat1 ne pat pat2 ne and { grestore } if end } def end %%PageBoundingBox: 33 730 240 777 tgifdict begin /tgifsavedpage save def 1 setmiterlimit 1 setlinewidth 0 setgray 72 0 mul 72 11.00 mul translate 72 128 div 100 mul 100 div dup neg scale gsave % TEXT 0 setgray /Courier findfont [17 0 0 -17 0 0] makefont setfont gsave 63 43 moveto (\(\(lambda \(number\) \(* 7 number\)\) 3\)) show grestore % POLY/OPEN-SPLINE gsave newpath 80 48 moveto 96 64 lineto 336 64 lineto 353 49 lineto stroke grestore % POLY/OPEN-SPLINE gsave newpath 395 85 moveto -21 0 atan dup cos 8 mul 395 exch sub exch sin 8 mul 64 exch sub lineto stroke grestore gsave newpath 395 64 8 3 0 -21 tgifarrowtip closepath fill grestore % POLY/OPEN-SPLINE gsave newpath 208 69 moveto 208 85 lineto stroke grestore % TEXT 0 setgray /Courier findfont [17 0 0 -17 0 0] makefont setfont gsave 112 102 moveto (anonymous function) show grestore % TEXT 0 setgray /Courier findfont [17 0 0 -17 0 0] makefont setfont gsave 344 102 moveto (argument) show grestore grestore tgifsavedpage restore end %MatchingCreationDate: Wed Mar 8 14:33:09 1995