| ofs | hex dump | ascii | 
|---|
| 0000 |  77 73 2d 62 75 74 6c 65 72 2d 31 2e 33 2f 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ws-butler-1.3/.................. | 
| 0020 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| 0040 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| 0060 |  00 00 00 00 30 30 30 30 37 35 35 00 30 30 30 30    30 30 30 00 30 30 30 30 30 30 30 00 30 30 30 30  | ....0000755.0000000.0000000.0000 | 
| 0080 |  30 30 30 30 30 30 30 00 30 30 30 30 30 30 30 30    30 30 30 00 30 31 31 37 34 30 00 20 35 00 00 00  | 0000000.00000000000.011740..5... | 
| 00a0 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| 00c0 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| 00e0 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| 0100 |  00 75 73 74 61 72 20 20 00 72 6f 6f 74 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | .ustar...root................... | 
| 0120 |  00 00 00 00 00 00 00 00 00 72 6f 6f 74 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | .........root................... | 
| 0140 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| 0160 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| 0180 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| 01a0 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| 01c0 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| 01e0 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| 0200 |  77 73 2d 62 75 74 6c 65 72 2d 31 2e 33 2f 77 73    2d 62 75 74 6c 65 72 2e 65 6c 00 00 00 00 00 00  | ws-butler-1.3/ws-butler.el...... | 
| 0220 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| 0240 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| 0260 |  00 00 00 00 30 30 30 30 36 34 34 00 30 30 30 30    30 30 30 00 30 30 30 30 30 30 30 00 30 30 30 30  | ....0000644.0000000.0000000.0000 | 
| 0280 |  30 30 33 31 34 33 33 00 30 30 30 30 30 30 30 30    30 30 30 00 30 31 34 32 31 32 00 20 30 00 00 00  | 0031433.00000000000.014212..0... | 
| 02a0 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| 02c0 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| 02e0 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| 0300 |  00 75 73 74 61 72 20 20 00 72 6f 6f 74 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | .ustar...root................... | 
| 0320 |  00 00 00 00 00 00 00 00 00 72 6f 6f 74 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | .........root................... | 
| 0340 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| 0360 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| 0380 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| 03a0 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| 03c0 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| 03e0 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| 0400 |  3b 3b 3b 20 77 73 2d 62 75 74 6c 65 72 2e 65 6c    20 2d 2d 2d 20 55 6e 6f 62 74 72 75 73 69 76 65  | ;;;.ws-butler.el.---.Unobtrusive | 
| 0420 |  6c 79 20 72 65 6d 6f 76 65 20 74 72 61 69 6c 69    6e 67 20 77 68 69 74 65 73 70 61 63 65 20 20 2d  | ly.remove.trailing.whitespace..- | 
| 0440 |  2a 2d 20 6c 65 78 69 63 61 6c 2d 62 69 6e 64 69    6e 67 3a 74 20 2d 2a 2d 0a 0a 3b 3b 20 43 6f 70  | *-.lexical-binding:t.-*-..;;.Cop | 
| 0460 |  79 72 69 67 68 74 20 28 43 29 20 32 30 31 32 2d    32 30 31 36 20 20 4c 65 20 57 61 6e 67 20 3c 6c  | yright.(C).2012-2016..Le.Wang.<l | 
| 0480 |  32 36 77 61 6e 67 40 67 6d 61 69 6c 2e 63 6f 6d    3e 0a 3b 3b 20 43 6f 70 79 72 69 67 68 74 20 28  | 26wang@gmail.com>.;;.Copyright.( | 
| 04a0 |  43 29 20 32 30 32 35 20 20 53 65 61 6e 20 57 68    69 74 74 6f 6e 20 3c 73 70 77 68 69 74 74 6f 6e  | C).2025..Sean.Whitton.<spwhitton | 
| 04c0 |  40 73 70 77 68 69 74 74 6f 6e 2e 6e 61 6d 65 3e    0a 0a 3b 3b 20 41 75 74 68 6f 72 3a 20 4c 65 20  | @spwhitton.name>..;;.Author:.Le. | 
| 04e0 |  57 61 6e 67 20 3c 6c 32 36 77 61 6e 67 40 67 6d    61 69 6c 2e 63 6f 6d 3e 0a 3b 3b 20 4d 61 69 6e  | Wang.<l26wang@gmail.com>.;;.Main | 
| 0500 |  74 61 69 6e 65 72 3a 20 53 65 61 6e 20 57 68 69    74 74 6f 6e 20 3c 73 70 77 68 69 74 74 6f 6e 40  | tainer:.Sean.Whitton.<spwhitton@ | 
| 0520 |  73 70 77 68 69 74 74 6f 6e 2e 6e 61 6d 65 3e 0a    3b 3b 20 50 61 63 6b 61 67 65 2d 52 65 71 75 69  | spwhitton.name>.;;.Package-Requi | 
| 0540 |  72 65 73 3a 20 28 28 65 6d 61 63 73 20 22 32 34    2e 31 22 29 29 0a 3b 3b 20 56 65 72 73 69 6f 6e  | res:.((emacs."24.1")).;;.Version | 
| 0560 |  3a 20 31 2e 33 0a 3b 3b 20 55 52 4c 3a 20 68 74    74 70 73 3a 2f 2f 65 6c 70 61 2e 6e 6f 6e 67 6e  | :.1.3.;;.URL:.https://elpa.nongn | 
| 0580 |  75 2e 6f 72 67 2f 6e 6f 6e 67 6e 75 2f 77 73 2d    62 75 74 6c 65 72 2e 68 74 6d 6c 0a 3b 3b 20 4b  | u.org/nongnu/ws-butler.html.;;.K | 
| 05a0 |  65 79 77 6f 72 64 73 3a 20 74 65 78 74 0a 0a 3b    3b 20 54 68 69 73 20 66 69 6c 65 20 69 73 20 66  | eywords:.text..;;.This.file.is.f | 
| 05c0 |  72 65 65 20 73 6f 66 74 77 61 72 65 3a 20 79 6f    75 20 63 61 6e 20 72 65 64 69 73 74 72 69 62 75  | ree.software:.you.can.redistribu | 
| 05e0 |  74 65 20 69 74 20 61 6e 64 2f 6f 72 20 6d 6f 64    69 66 79 0a 3b 3b 20 69 74 20 75 6e 64 65 72 20  | te.it.and/or.modify.;;.it.under. | 
| 0600 |  74 68 65 20 74 65 72 6d 73 20 6f 66 20 74 68 65    20 47 4e 55 20 47 65 6e 65 72 61 6c 20 50 75 62  | the.terms.of.the.GNU.General.Pub | 
| 0620 |  6c 69 63 20 4c 69 63 65 6e 73 65 20 61 73 20 70    75 62 6c 69 73 68 65 64 20 62 79 0a 3b 3b 20 74  | lic.License.as.published.by.;;.t | 
| 0640 |  68 65 20 46 72 65 65 20 53 6f 66 74 77 61 72 65    20 46 6f 75 6e 64 61 74 69 6f 6e 2c 20 65 69 74  | he.Free.Software.Foundation,.eit | 
| 0660 |  68 65 72 20 76 65 72 73 69 6f 6e 20 33 20 6f 66    20 74 68 65 20 4c 69 63 65 6e 73 65 2c 20 6f 72  | her.version.3.of.the.License,.or | 
| 0680 |  0a 3b 3b 20 28 61 74 20 79 6f 75 72 20 6f 70 74    69 6f 6e 29 20 61 6e 79 20 6c 61 74 65 72 20 76  | .;;.(at.your.option).any.later.v | 
| 06a0 |  65 72 73 69 6f 6e 2e 0a 0a 3b 3b 20 54 68 69 73    20 66 69 6c 65 20 69 73 20 64 69 73 74 72 69 62  | ersion...;;.This.file.is.distrib | 
| 06c0 |  75 74 65 64 20 69 6e 20 74 68 65 20 68 6f 70 65    20 74 68 61 74 20 69 74 20 77 69 6c 6c 20 62 65  | uted.in.the.hope.that.it.will.be | 
| 06e0 |  20 75 73 65 66 75 6c 2c 0a 3b 3b 20 62 75 74 20    57 49 54 48 4f 55 54 20 41 4e 59 20 57 41 52 52  | .useful,.;;.but.WITHOUT.ANY.WARR | 
| 0700 |  41 4e 54 59 3b 20 77 69 74 68 6f 75 74 20 65 76    65 6e 20 74 68 65 20 69 6d 70 6c 69 65 64 20 77  | ANTY;.without.even.the.implied.w | 
| 0720 |  61 72 72 61 6e 74 79 20 6f 66 0a 3b 3b 20 4d 45    52 43 48 41 4e 54 41 42 49 4c 49 54 59 20 6f 72  | arranty.of.;;.MERCHANTABILITY.or | 
| 0740 |  20 46 49 54 4e 45 53 53 20 46 4f 52 20 41 20 50    41 52 54 49 43 55 4c 41 52 20 50 55 52 50 4f 53  | .FITNESS.FOR.A.PARTICULAR.PURPOS | 
| 0760 |  45 2e 20 20 53 65 65 20 74 68 65 0a 3b 3b 20 47    4e 55 20 47 65 6e 65 72 61 6c 20 50 75 62 6c 69  | E...See.the.;;.GNU.General.Publi | 
| 0780 |  63 20 4c 69 63 65 6e 73 65 20 66 6f 72 20 6d 6f    72 65 20 64 65 74 61 69 6c 73 2e 0a 0a 3b 3b 20  | c.License.for.more.details...;;. | 
| 07a0 |  59 6f 75 20 73 68 6f 75 6c 64 20 68 61 76 65 20    72 65 63 65 69 76 65 64 20 61 20 63 6f 70 79 20  | You.should.have.received.a.copy. | 
| 07c0 |  6f 66 20 74 68 65 20 47 4e 55 20 47 65 6e 65 72    61 6c 20 50 75 62 6c 69 63 20 4c 69 63 65 6e 73  | of.the.GNU.General.Public.Licens | 
| 07e0 |  65 0a 3b 3b 20 61 6c 6f 6e 67 20 77 69 74 68 20    74 68 69 73 20 66 69 6c 65 2e 20 20 49 66 20 6e  | e.;;.along.with.this.file...If.n | 
| 0800 |  6f 74 2c 20 73 65 65 20 3c 68 74 74 70 73 3a 2f    2f 77 77 77 2e 67 6e 75 2e 6f 72 67 2f 6c 69 63  | ot,.see.<https://www.gnu.org/lic | 
| 0820 |  65 6e 73 65 73 2f 3e 2e 0a 0a 3b 3b 3b 20 43 6f    6d 6d 65 6e 74 61 72 79 3a 0a 0a 3b 3b 20 54 6f  | enses/>...;;;.Commentary:..;;.To | 
| 0840 |  20 65 6e 61 62 6c 65 20 66 6f 72 2c 20 65 2e 67    2e 2c 20 61 6c 6c 20 72 75 62 79 2d 6d 6f 64 65  | .enable.for,.e.g.,.all.ruby-mode | 
| 0860 |  20 62 75 66 66 65 72 73 2c 20 61 64 64 20 74 6f    20 79 6f 75 72 20 69 6e 69 74 2e 65 6c 3a 0a 3b  | .buffers,.add.to.your.init.el:.; | 
| 0880 |  3b 0a 3b 3b 20 20 20 20 20 20 28 72 65 71 75 69    72 65 20 27 77 73 2d 62 75 74 6c 65 72 29 0a 3b  | ;.;;......(require.'ws-butler).; | 
| 08a0 |  3b 20 20 20 20 20 20 28 61 64 64 2d 68 6f 6f 6b    20 27 72 75 62 79 2d 6d 6f 64 65 2d 68 6f 6f 6b  | ;......(add-hook.'ruby-mode-hook | 
| 08c0 |  20 27 77 73 2d 62 75 74 6c 65 72 2d 6d 6f 64 65    29 0a 3b 3b 0a 0a 3b 3b 3b 20 4e 65 77 73 3a 0a  | .'ws-butler-mode).;;..;;;.News:. | 
| 08e0 |  0a 3b 3b 20 56 65 72 20 31 2e 33 20 32 30 32 35    2f 30 33 2f 31 30 20 53 65 61 6e 20 57 68 69 74  | .;;.Ver.1.3.2025/03/10.Sean.Whit | 
| 0900 |  74 6f 6e 0a 3b 3b 20 20 20 20 20 52 65 70 6c 61    63 65 20 61 20 75 73 65 20 6f 66 20 60 61 6c 77  | ton.;;.....Replace.a.use.of.`alw | 
| 0920 |  61 79 73 27 20 74 6f 20 72 65 74 61 69 6e 20 63    6f 6d 70 61 74 69 62 69 6c 69 74 79 20 77 69 74  | ays'.to.retain.compatibility.wit | 
| 0940 |  68 20 6f 6c 64 65 72 20 45 6d 61 63 73 2e 0a 3b    3b 20 20 20 20 20 54 68 61 6e 6b 73 20 74 6f 20  | h.older.Emacs..;;.....Thanks.to. | 
| 0960 |  43 68 72 69 73 20 52 61 79 6e 65 72 20 66 6f 72    20 74 68 65 20 72 65 70 6f 72 74 69 6e 67 20 74  | Chris.Rayner.for.the.reporting.t | 
| 0980 |  68 65 20 70 72 6f 62 6c 65 6d 2e 0a 3b 3b 0a 3b    3b 20 56 65 72 20 31 2e 32 20 32 30 32 35 2f 30  | he.problem..;;.;;.Ver.1.2.2025/0 | 
| 09a0 |  32 2f 32 35 20 53 65 61 6e 20 57 68 69 74 74 6f    6e 0a 3b 3b 20 20 20 20 20 57 68 65 6e 20 60 73  | 2/25.Sean.Whitton.;;.....When.`s | 
| 09c0 |  70 65 63 69 61 6c 2d 6d 6f 64 65 27 20 69 73 20    69 6e 20 60 77 73 2d 62 75 74 6c 65 72 2d 67 6c  | pecial-mode'.is.in.`ws-butler-gl | 
| 09e0 |  6f 62 61 6c 2d 65 78 65 6d 70 74 2d 6d 6f 64 65    73 27 2c 20 61 6c 73 6f 20 63 68 65 63 6b 0a 3b  | obal-exempt-modes',.also.check.; | 
| 0a00 |  3b 20 20 20 20 20 77 68 65 74 68 65 72 20 61 20    6d 6f 64 65 20 68 61 73 20 61 20 60 6d 6f 64 65  | ;.....whether.a.mode.has.a.`mode | 
| 0a20 |  2d 63 6c 61 73 73 27 20 6f 66 20 60 73 70 65 63    69 61 6c 27 2c 20 61 6e 64 20 64 6f 6e 27 74 20  | -class'.of.`special',.and.don't. | 
| 0a40 |  61 63 74 69 76 61 74 65 0a 3b 3b 20 20 20 20 20    60 77 73 2d 62 75 74 6c 65 72 2d 6d 6f 64 65 27  | activate.;;.....`ws-butler-mode' | 
| 0a60 |  20 69 66 20 69 74 20 64 6f 65 73 2e 0a 3b 3b 20    20 20 20 20 52 65 6d 6f 76 65 20 65 6e 74 72 69  | .if.it.does..;;.....Remove.entri | 
| 0a80 |  65 73 20 66 72 6f 6d 20 60 77 73 2d 62 75 74 6c    65 72 2d 67 6c 6f 62 61 6c 2d 65 78 65 6d 70 74  | es.from.`ws-butler-global-exempt | 
| 0aa0 |  2d 6d 6f 64 65 73 27 20 74 68 61 74 20 74 68 65    20 70 72 65 63 65 64 69 6e 67 0a 3b 3b 20 20 20  | -modes'.that.the.preceding.;;... | 
| 0ac0 |  20 20 63 68 61 6e 67 65 73 20 72 65 6e 64 65 72    73 20 72 65 64 75 6e 64 61 6e 74 2e 0a 3b 3b 20  | ..changes.renders.redundant..;;. | 
| 0ae0 |  20 20 20 20 45 78 65 6d 70 74 20 60 6f 72 67 2d    61 67 65 6e 64 61 2d 6d 6f 64 65 27 20 66 72 6f  | ....Exempt.`org-agenda-mode'.fro | 
| 0b00 |  6d 20 60 77 73 2d 62 75 74 6c 65 72 2d 67 6c 6f    62 61 6c 2d 6d 6f 64 65 27 20 62 79 20 64 65 66  | m.`ws-butler-global-mode'.by.def | 
| 0b20 |  61 75 6c 74 2e 0a 3b 3b 0a 3b 3b 20 56 65 72 20    31 2e 31 20 32 30 32 35 2f 30 32 2f 32 31 20 53  | ault..;;.;;.Ver.1.1.2025/02/21.S | 
| 0b40 |  65 61 6e 20 57 68 69 74 74 6f 6e 0a 3b 3b 20 20    20 20 20 45 78 65 6d 70 74 20 60 63 6f 6d 70 69  | ean.Whitton.;;.....Exempt.`compi | 
| 0b60 |  6c 61 74 69 6f 6e 2d 6d 6f 64 65 27 20 66 72 6f    6d 20 60 77 73 2d 62 75 74 6c 65 72 2d 67 6c 6f  | lation-mode'.from.`ws-butler-glo | 
| 0b80 |  62 61 6c 2d 6d 6f 64 65 27 20 62 79 20 64 65 66    61 75 6c 74 2e 0a 3b 3b 20 20 20 20 20 43 6c 61  | bal-mode'.by.default..;;.....Cla | 
| 0ba0 |  72 69 66 79 20 64 6f 63 73 74 72 69 6e 67 20 6f    66 20 60 77 73 2d 62 75 74 6c 65 72 2d 67 6c 6f  | rify.docstring.of.`ws-butler-glo | 
| 0bc0 |  62 61 6c 2d 65 78 65 6d 70 74 2d 6d 6f 64 65 73    27 2e 0a 3b 3b 0a 3b 3b 20 56 65 72 20 31 2e 30  | bal-exempt-modes'..;;.;;.Ver.1.0 | 
| 0be0 |  20 32 30 32 35 2f 30 32 2f 31 38 20 53 65 61 6e    20 57 68 69 74 74 6f 6e 0a 3b 3b 20 20 20 20 20  | .2025/02/18.Sean.Whitton.;;..... | 
| 0c00 |  54 61 6b 65 20 6f 76 65 72 20 6d 61 69 6e 74 65    6e 61 6e 63 65 3b 20 6d 61 69 6e 74 61 69 6e 20  | Take.over.maintenance;.maintain. | 
| 0c20 |  6f 75 74 20 6f 66 20 6e 6f 6e 67 6e 75 2d 65 6c    70 61 2e 67 69 74 2e 0a 3b 3b 20 20 20 20 20 42  | out.of.nongnu-elpa.git..;;.....B | 
| 0c40 |  75 6d 70 20 74 6f 20 76 65 72 73 69 6f 6e 20 31    2e 30 3a 20 63 6f 72 65 20 66 75 6e 63 74 69 6f  | ump.to.version.1.0:.core.functio | 
| 0c60 |  6e 61 6c 69 74 79 20 6e 6f 74 20 65 78 70 65 63    74 65 64 20 74 6f 20 63 68 61 6e 67 65 2e 0a 3b  | nality.not.expected.to.change..; | 
| 0c80 |  3b 20 20 20 20 20 4d 6f 76 65 20 63 75 73 74 6f    6d 69 73 61 74 69 6f 6e 20 67 72 6f 75 70 20 66  | ;.....Move.customisation.group.f | 
| 0ca0 |  72 6f 6d 20 60 63 6f 6e 76 65 6e 69 65 6e 63 65    27 20 74 6f 20 60 74 65 78 74 27 2e 0a 3b 3b 20  | rom.`convenience'.to.`text'..;;. | 
| 0cc0 |  20 20 20 20 52 65 77 72 69 74 65 20 64 6f 63 73    74 72 69 6e 67 73 2e 0a 3b 3b 20 20 20 20 20 46  | ....Rewrite.docstrings..;;.....F | 
| 0ce0 |  69 78 20 61 63 63 69 64 65 6e 74 61 6c 20 63 68    61 6e 67 65 20 60 70 6f 69 6e 74 2d 61 74 2d 62  | ix.accidental.change.`point-at-b | 
| 0d00 |  6f 6c 27 2d 3e 60 6c 69 6e 65 2d 65 6e 64 2d 70    6f 73 69 74 69 6f 6e 27 2e 0a 3b 3b 20 20 20 20  | ol'->`line-end-position'..;;.... | 
| 0d20 |  20 45 78 65 6d 70 74 20 60 6d 65 73 73 61 67 65    2d 6d 6f 64 65 27 20 66 72 6f 6d 20 60 77 73 2d  | .Exempt.`message-mode'.from.`ws- | 
| 0d40 |  62 75 74 6c 65 72 2d 67 6c 6f 62 61 6c 2d 6d 6f    64 65 27 20 62 79 20 64 65 66 61 75 6c 74 2e 0a  | butler-global-mode'.by.default.. | 
| 0d60 |  3b 3b 20 20 20 20 20 4f 74 68 65 72 20 74 69 64    79 69 6e 67 2e 0a 0a 3b 3b 3b 20 43 6f 64 65 3a  | ;;.....Other.tidying...;;;.Code: | 
| 0d80 |  0a 0a 28 64 65 66 67 72 6f 75 70 20 77 73 2d 62    75 74 6c 65 72 20 6e 69 6c 0a 20 20 22 55 6e 6f  | ..(defgroup.ws-butler.nil..."Uno | 
| 0da0 |  62 74 72 75 73 69 76 65 20 77 68 69 74 65 73 70    61 63 65 20 64 65 6c 65 74 69 6f 6e 2c 20 6c 69  | btrusive.whitespace.deletion,.li | 
| 0dc0 |  6b 65 20 61 20 62 75 74 6c 65 72 2e 22 0a 20 20    3a 67 72 6f 75 70 20 27 74 65 78 74 29 0a 0a 28  | ke.a.butler."...:group.'text)..( | 
| 0de0 |  64 65 66 63 75 73 74 6f 6d 20 77 73 2d 62 75 74    6c 65 72 2d 6b 65 65 70 2d 77 68 69 74 65 73 70  | defcustom.ws-butler-keep-whitesp | 
| 0e00 |  61 63 65 2d 62 65 66 6f 72 65 2d 70 6f 69 6e 74    20 74 0a 20 20 22 49 66 20 6e 6f 6e 2d 6e 69 6c  | ace-before-point.t..."If.non-nil | 
| 0e20 |  2c 20 72 65 73 74 6f 72 65 20 74 6f 20 74 68 65    20 62 75 66 66 65 72 20 74 72 69 6d 6d 65 64 20  | ,.restore.to.the.buffer.trimmed. | 
| 0e40 |  77 68 69 74 65 73 70 61 63 65 20 72 69 67 68 74    20 62 65 66 6f 72 65 20 70 6f 69 6e 74 2e 0a 54  | whitespace.right.before.point..T | 
| 0e60 |  68 65 20 65 66 66 65 63 74 20 69 73 20 74 68 61    74 20 63 6c 65 61 6e 75 70 20 6f 66 20 77 68 69  | he.effect.is.that.cleanup.of.whi | 
| 0e80 |  74 65 73 70 61 63 65 20 72 69 67 68 74 20 62 65    66 6f 72 65 20 70 6f 69 6e 74 20 69 73 20 70 65  | tespace.right.before.point.is.pe | 
| 0ea0 |  72 66 6f 72 6d 65 64 0a 6f 6e 20 6f 6e 6c 79 20    74 68 65 20 76 69 73 69 74 65 64 20 66 69 6c 65  | rformed.on.only.the.visited.file | 
| 0ec0 |  20 6f 6e 20 64 69 73 6b 2c 20 77 68 69 6c 65 20    70 6f 69 6e 74 20 69 6e 20 74 68 65 20 62 75 66  | .on.disk,.while.point.in.the.buf | 
| 0ee0 |  66 65 72 20 64 6f 65 73 20 6e 6f 74 20 6d 6f 76    65 2e 0a 54 68 69 73 20 6d 65 61 6e 73 20 74 68  | fer.does.not.move..This.means.th | 
| 0f00 |  61 74 20 70 6f 69 6e 74 20 64 6f 65 73 20 6e 6f    74 20 6a 75 6d 70 20 77 68 65 6e 20 77 68 69 74  | at.point.does.not.jump.when.whit | 
| 0f20 |  65 73 70 61 63 65 20 69 73 20 74 72 69 6d 6d 65    64 2e 22 0a 20 20 3a 74 79 70 65 20 27 62 6f 6f  | espace.is.trimmed."...:type.'boo | 
| 0f40 |  6c 65 61 6e 0a 20 20 3a 67 72 6f 75 70 20 27 77    73 2d 62 75 74 6c 65 72 29 0a 0a 28 64 65 66 63  | lean...:group.'ws-butler)..(defc | 
| 0f60 |  75 73 74 6f 6d 20 77 73 2d 62 75 74 6c 65 72 2d    63 6f 6e 76 65 72 74 2d 6c 65 61 64 69 6e 67 2d  | ustom.ws-butler-convert-leading- | 
| 0f80 |  74 61 62 73 2d 6f 72 2d 73 70 61 63 65 73 20 6e    69 6c 0a 20 20 22 49 66 20 6e 6f 6e 2d 6e 69 6c  | tabs-or-spaces.nil..."If.non-nil | 
| 0fa0 |  2c 20 61 70 70 6c 79 20 60 69 6e 64 65 6e 74 2d    74 61 62 73 2d 6d 6f 64 65 27 20 74 6f 20 6c 65  | ,.apply.`indent-tabs-mode'.to.le | 
| 0fc0 |  61 64 69 6e 67 20 69 6e 64 65 6e 74 61 74 69 6f    6e 20 77 68 65 6e 20 73 61 76 69 6e 67 2e 0a 49  | ading.indentation.when.saving..I | 
| 0fe0 |  66 20 60 69 6e 64 65 6e 74 2d 74 61 62 73 2d 6d    6f 64 65 27 20 69 73 20 6e 6f 6e 2d 6e 69 6c 2c  | f.`indent-tabs-mode'.is.non-nil, | 
| 1000 |  20 63 6f 6e 76 65 72 74 20 6c 65 61 64 69 6e 67    20 69 6e 64 65 6e 74 61 74 69 6f 6e 20 74 6f 20  | .convert.leading.indentation.to. | 
| 1020 |  75 73 65 20 74 61 62 73 2c 0a 6c 69 6b 65 20 60    74 61 62 69 66 79 27 2e 20 20 4f 74 68 65 72 77  | use.tabs,.like.`tabify'...Otherw | 
| 1040 |  69 73 65 2c 20 72 65 70 6c 61 63 65 20 61 6c 6c    20 74 61 62 73 20 77 69 74 68 20 73 70 61 63 65  | ise,.replace.all.tabs.with.space | 
| 1060 |  73 2c 20 6c 69 6b 65 20 60 75 6e 74 61 62 69 66    79 27 2e 0a 49 66 20 60 73 6d 61 72 74 2d 74 61  | s,.like.`untabify'..If.`smart-ta | 
| 1080 |  62 73 2d 6d 6f 64 65 27 20 69 73 20 65 6e 61 62    6c 65 64 2c 20 74 68 65 73 65 20 63 6f 6e 76 65  | bs-mode'.is.enabled,.these.conve | 
| 10a0 |  72 73 69 6f 6e 73 20 61 72 65 20 73 75 70 70 72    65 73 73 65 64 2e 22 0a 20 20 3a 74 79 70 65 20  | rsions.are.suppressed."...:type. | 
| 10c0 |  27 62 6f 6f 6c 65 61 6e 0a 20 20 3a 67 72 6f 75    70 20 27 77 73 2d 62 75 74 6c 65 72 29 0a 0a 28  | 'boolean...:group.'ws-butler)..( | 
| 10e0 |  64 65 66 63 75 73 74 6f 6d 20 77 73 2d 62 75 74    6c 65 72 2d 67 6c 6f 62 61 6c 2d 65 78 65 6d 70  | defcustom.ws-butler-global-exemp | 
| 1100 |  74 2d 6d 6f 64 65 73 0a 20 20 27 28 73 70 65 63    69 61 6c 2d 6d 6f 64 65 0a 20 20 20 20 6d 69 6e  | t-modes...'(special-mode.....min | 
| 1120 |  69 62 75 66 66 65 72 2d 6d 6f 64 65 0a 0a 20 20    20 20 6f 72 67 2d 61 67 65 6e 64 61 2d 6d 6f 64  | ibuffer-mode......org-agenda-mod | 
| 1140 |  65 0a 0a 20 20 20 20 6d 65 73 73 61 67 65 2d 6d    6f 64 65 0a 20 20 20 20 6d 61 72 6b 64 6f 77 6e  | e......message-mode.....markdown | 
| 1160 |  2d 6d 6f 64 65 29 0a 20 20 22 54 72 61 69 6c 69    6e 67 20 77 68 69 74 65 73 70 61 63 65 2d 73 69  | -mode)..."Trailing.whitespace-si | 
| 1180 |  67 6e 69 66 69 63 61 6e 74 20 6d 61 6a 6f 72 20    6d 6f 64 65 73 2e 0a 60 77 73 2d 62 75 74 6c 65  | gnificant.major.modes..`ws-butle | 
| 11a0 |  72 2d 67 6c 6f 62 61 6c 2d 6d 6f 64 65 27 20 77    69 6c 6c 20 6e 6f 74 20 61 63 74 69 76 61 74 65  | r-global-mode'.will.not.activate | 
| 11c0 |  20 60 77 73 2d 62 75 74 6c 65 72 2d 6d 6f 64 65    27 20 69 6e 20 74 68 65 73 65 20 6d 6f 64 65 73  | .`ws-butler-mode'.in.these.modes | 
| 11e0 |  2c 0a 6f 72 20 69 6e 20 74 68 65 69 72 20 64 65    72 69 76 61 74 69 76 65 73 2e 0a 49 66 20 74 68  | ,.or.in.their.derivatives..If.th | 
| 1200 |  69 73 20 6c 69 73 74 20 63 6f 6e 74 61 69 6e 73    20 60 73 70 65 63 69 61 6c 2d 6d 6f 64 65 27 2c  | is.list.contains.`special-mode', | 
| 1220 |  20 74 68 65 6e 20 69 6e 20 61 64 64 69 74 69 6f    6e 2c 20 60 77 73 2d 62 75 74 6c 65 72 2d 6d 6f  | .then.in.addition,.`ws-butler-mo | 
| 1240 |  64 65 27 20 77 69 6c 6c 0a 6e 6f 74 20 61 63 74    69 76 61 74 65 20 69 6e 20 61 6c 6c 20 6d 6f 64  | de'.will.not.activate.in.all.mod | 
| 1260 |  65 73 20 77 69 74 68 20 61 20 60 6d 6f 64 65 2d    63 6c 61 73 73 27 20 6f 66 20 60 73 70 65 63 69  | es.with.a.`mode-class'.of.`speci | 
| 1280 |  61 6c 27 2e 22 0a 20 20 3a 74 79 70 65 20 27 28    72 65 70 65 61 74 20 28 73 79 6d 62 6f 6c 20 3a  | al'."...:type.'(repeat.(symbol.: | 
| 12a0 |  74 61 67 20 22 4d 61 6a 6f 72 20 6d 6f 64 65 22    29 29 0a 20 20 3a 67 72 6f 75 70 20 27 77 73 2d  | tag."Major.mode"))...:group.'ws- | 
| 12c0 |  62 75 74 6c 65 72 29 0a 0a 28 64 65 66 63 75 73    74 6f 6d 20 77 73 2d 62 75 74 6c 65 72 2d 74 72  | butler)..(defcustom.ws-butler-tr | 
| 12e0 |  69 6d 2d 70 72 65 64 69 63 61 74 65 0a 20 20 28    6c 61 6d 62 64 61 20 28 5f 62 65 67 20 5f 65 6e  | im-predicate...(lambda.(_beg._en | 
| 1300 |  64 29 20 74 29 0a 20 20 22 46 75 6e 63 74 69 6f    6e 20 74 6f 20 65 78 63 6c 75 64 65 20 72 65 67  | d).t)..."Function.to.exclude.reg | 
| 1320 |  69 6f 6e 73 20 66 72 6f 6d 20 77 68 69 74 65 73    70 61 63 65 20 74 72 69 6d 6d 69 6e 67 2e 0a 43  | ions.from.whitespace.trimming..C | 
| 1340 |  61 6c 6c 65 64 20 77 69 74 68 20 74 77 6f 20 61    72 67 75 6d 65 6e 74 73 20 64 65 6c 69 6d 69 74  | alled.with.two.arguments.delimit | 
| 1360 |  69 6e 67 20 61 20 72 65 67 69 6f 6e 20 6f 66 20    74 68 65 20 63 75 72 72 65 6e 74 20 62 75 66 66  | ing.a.region.of.the.current.buff | 
| 1380 |  65 72 2e 0a 49 66 20 74 68 65 20 66 75 6e 63 74    69 6f 6e 20 72 65 74 75 72 6e 73 20 6e 6f 6e 2d  | er..If.the.function.returns.non- | 
| 13a0 |  6e 69 6c 2c 20 74 72 61 69 6c 69 6e 67 20 77 68    69 74 65 73 70 61 63 65 20 69 6e 20 74 68 61 74  | nil,.trailing.whitespace.in.that | 
| 13c0 |  20 72 65 67 69 6f 6e 20 77 69 6c 6c 20 62 65 0a    74 72 69 6d 6d 65 64 2e 20 20 54 68 65 20 64 65  | .region.will.be.trimmed...The.de | 
| 13e0 |  66 61 75 6c 74 20 69 73 20 74 6f 20 74 72 69 6d    20 65 76 65 72 79 77 68 65 72 65 2e 22 0a 20 20  | fault.is.to.trim.everywhere."... | 
| 1400 |  3a 74 79 70 65 20 27 66 75 6e 63 74 69 6f 6e 0a    20 20 3a 67 72 6f 75 70 20 27 77 73 2d 62 75 74  | :type.'function...:group.'ws-but | 
| 1420 |  6c 65 72 29 0a 0a 28 64 65 66 76 61 72 20 77 73    2d 62 75 74 6c 65 72 2d 73 61 76 65 64 29 0a 0a  | ler)..(defvar.ws-butler-saved).. | 
| 1440 |  28 64 65 66 6d 61 63 72 6f 20 77 73 2d 62 75 74    6c 65 72 2d 77 69 74 68 2d 73 61 76 65 20 28 26  | (defmacro.ws-butler-with-save.(& | 
| 1460 |  72 65 73 74 20 66 6f 72 6d 73 29 0a 20 20 22 4c    69 6b 65 20 60 73 61 76 65 2d 65 78 63 75 72 73  | rest.forms)..."Like.`save-excurs | 
| 1480 |  69 6f 6e 27 20 61 6e 64 20 60 73 61 76 65 2d 72    65 73 74 72 69 63 74 69 6f 6e 27 2c 20 62 75 74  | ion'.and.`save-restriction',.but | 
| 14a0 |  20 6f 6e 6c 79 20 6f 6e 63 65 2e 0a 49 66 20 77    69 74 68 69 6e 20 74 68 65 20 73 63 6f 70 65 20  | .only.once..If.within.the.scope. | 
| 14c0 |  6f 66 20 61 6e 6f 74 68 65 72 20 75 73 65 20 6f    66 20 74 68 69 73 20 6d 61 63 72 6f 2c 20 6a 75  | of.another.use.of.this.macro,.ju | 
| 14e0 |  73 74 20 65 76 61 6c 75 61 74 65 20 46 4f 52 4d    53 2e 22 0a 20 20 28 64 65 63 6c 61 72 65 20 28  | st.evaluate.FORMS."...(declare.( | 
| 1500 |  64 65 62 75 67 20 28 62 6f 64 79 29 29 29 0a 20    20 60 28 69 66 20 28 62 6f 75 6e 64 2d 61 6e 64  | debug.(body)))...`(if.(bound-and | 
| 1520 |  2d 74 72 75 65 2d 70 20 77 73 2d 62 75 74 6c 65    72 2d 73 61 76 65 64 29 0a 20 20 20 20 20 20 20  | -true-p.ws-butler-saved)........ | 
| 1540 |  28 70 72 6f 67 6e 0a 20 20 20 20 20 20 20 20 20    2c 40 66 6f 72 6d 73 29 0a 20 20 20 20 20 28 6c  | (progn..........,@forms)......(l | 
| 1560 |  65 74 20 28 28 77 73 2d 62 75 74 6c 65 72 2d 73    61 76 65 64 20 74 29 29 0a 20 20 20 20 20 20 20  | et.((ws-butler-saved.t))........ | 
| 1580 |  28 73 61 76 65 2d 65 78 63 75 72 73 69 6f 6e 0a    20 20 20 20 20 20 20 20 20 28 73 61 76 65 2d 72  | (save-excursion..........(save-r | 
| 15a0 |  65 73 74 72 69 63 74 69 6f 6e 0a 20 20 20 20 20    20 20 20 20 20 20 2c 40 66 6f 72 6d 73 29 29 29  | estriction............,@forms))) | 
| 15c0 |  29 29 0a 0a 28 64 65 66 75 6e 20 77 73 2d 62 75    74 6c 65 72 2d 74 72 69 6d 2d 65 6f 62 2d 6c 69  | ))..(defun.ws-butler-trim-eob-li | 
| 15e0 |  6e 65 73 20 28 29 0a 20 20 22 45 66 66 69 63 69    65 6e 74 6c 79 20 74 72 69 6d 20 62 6c 61 6e 6b  | nes.()..."Efficiently.trim.blank | 
| 1600 |  20 6c 69 6e 65 73 20 61 74 20 65 6e 64 2d 6f 66    2d 62 75 66 66 65 72 2e 0a 41 66 66 65 63 74 65  | .lines.at.end-of-buffer..Affecte | 
| 1620 |  64 20 62 79 20 60 72 65 71 75 69 72 65 2d 66 69    6e 61 6c 2d 6e 65 77 6c 69 6e 65 27 2c 20 77 68  | d.by.`require-final-newline',.wh | 
| 1640 |  69 63 68 20 73 65 65 2e 22 0a 20 20 28 77 73 2d    62 75 74 6c 65 72 2d 77 69 74 68 2d 73 61 76 65  | ich.see."...(ws-butler-with-save | 
| 1660 |  0a 20 20 20 28 77 69 64 65 6e 29 0a 20 20 20 3b    3b 20 77 65 20 6e 65 65 64 20 74 6f 20 63 6c 65  | ....(widen)....;;.we.need.to.cle | 
| 1680 |  61 6e 20 75 70 20 6d 75 6c 74 69 70 6c 65 20 62    6c 61 6e 6b 20 6c 69 6e 65 73 20 61 74 20 45 4f  | an.up.multiple.blank.lines.at.EO | 
| 16a0 |  46 20 74 6f 20 6a 75 73 74 20 6f 6e 65 2e 20 20    4f 72 20 69 66 0a 20 20 20 3b 3b 20 74 68 65 72  | F.to.just.one...Or.if....;;.ther | 
| 16c0 |  65 20 69 73 20 6e 6f 20 62 6c 61 6e 6b 20 6c 69    6e 65 20 61 6e 64 20 74 68 65 72 65 20 6e 65 65  | e.is.no.blank.line.and.there.nee | 
| 16e0 |  64 73 20 6f 6e 65 2c 20 77 65 20 61 64 64 20 69    74 2e 0a 20 20 20 28 67 6f 74 6f 2d 63 68 61 72  | ds.one,.we.add.it.....(goto-char | 
| 1700 |  20 28 70 6f 69 6e 74 2d 6d 61 78 29 29 0a 20 20    20 28 73 6b 69 70 2d 63 68 61 72 73 2d 62 61 63  | .(point-max))....(skip-chars-bac | 
| 1720 |  6b 77 61 72 64 20 22 20 5c 74 5c 6e 5c 76 22 29    0a 20 20 20 28 6c 65 74 20 28 28 73 61 76 65 64  | kward.".\t\n\v")....(let.((saved | 
| 1740 |  2d 70 6f 69 6e 74 20 28 70 6f 69 6e 74 29 29 29    0a 20 20 20 20 20 28 77 73 2d 62 75 74 6c 65 72  | -point.(point)))......(ws-butler | 
| 1760 |  2d 63 6c 65 61 6e 2d 72 65 67 69 6f 6e 20 73 61    76 65 64 2d 70 6f 69 6e 74 20 28 70 6f 69 6e 74  | -clean-region.saved-point.(point | 
| 1780 |  2d 6d 61 78 29 29 0a 20 20 20 20 20 28 67 6f 74    6f 2d 63 68 61 72 20 73 61 76 65 64 2d 70 6f 69  | -max))......(goto-char.saved-poi | 
| 17a0 |  6e 74 29 0a 20 20 20 20 20 3b 3b 20 77 65 20 74    72 79 20 74 6f 20 6d 61 6b 65 20 61 73 20 66 65  | nt)......;;.we.try.to.make.as.fe | 
| 17c0 |  77 20 62 75 66 66 65 72 20 6d 6f 64 69 66 69 63    61 74 69 6f 6e 73 20 61 73 20 70 6f 73 73 69 62  | w.buffer.modifications.as.possib | 
| 17e0 |  6c 65 0a 20 20 20 20 20 3b 3b 0a 20 20 20 20 20    3b 3b 20 57 65 20 72 65 66 75 73 65 20 74 6f 20  | le......;;......;;.We.refuse.to. | 
| 1800 |  72 65 6d 6f 76 65 20 66 69 6e 61 6c 2d 6e 65 77    6c 69 6e 65 20 72 65 67 61 72 64 6c 65 73 73 20  | remove.final-newline.regardless. | 
| 1820 |  6f 66 20 74 68 65 20 76 61 6c 75 65 20 6f 66 0a    20 20 20 20 20 3b 3b 20 60 72 65 71 75 69 72 65  | of.the.value.of......;;.`require | 
| 1840 |  2d 66 69 6e 61 6c 2d 6e 65 77 6c 69 6e 65 27 0a    20 20 20 20 20 28 77 68 65 6e 20 28 6c 6f 6f 6b  | -final-newline'......(when.(look | 
| 1860 |  69 6e 67 2d 61 74 2d 70 20 22 5c 6e 5c 5c 28 3f    3a 5c 6e 5c 5c 7c 5c 5c 27 5c 5c 29 22 29 0a 20  | ing-at-p."\n\\(?:\n\\|\\'\\)").. | 
| 1880 |  20 20 20 20 20 20 28 66 6f 72 77 61 72 64 2d 63    68 61 72 20 31 29 29 29 0a 20 20 20 28 77 68 65  | ......(forward-char.1)))....(whe | 
| 18a0 |  6e 20 72 65 71 75 69 72 65 2d 66 69 6e 61 6c 2d    6e 65 77 6c 69 6e 65 0a 20 20 20 20 20 28 75 6e  | n.require-final-newline......(un | 
| 18c0 |  6c 65 73 73 20 28 62 6f 6c 70 29 0a 20 20 20 20    20 20 20 28 69 6e 73 65 72 74 20 22 5c 6e 22 29  | less.(bolp)........(insert."\n") | 
| 18e0 |  29 29 0a 20 20 20 28 77 68 65 6e 20 28 6c 6f 6f    6b 69 6e 67 2d 61 74 20 22 5c 6e 2b 22 29 0a 20  | ))....(when.(looking-at."\n+").. | 
| 1900 |  20 20 20 20 28 72 65 70 6c 61 63 65 2d 6d 61 74    63 68 20 22 22 29 29 29 29 0a 0a 28 64 65 66 75  | ....(replace-match.""))))..(defu | 
| 1920 |  6e 20 77 73 2d 62 75 74 6c 65 72 2d 6d 61 79 62    65 2d 74 72 69 6d 2d 65 6f 62 2d 6c 69 6e 65 73  | n.ws-butler-maybe-trim-eob-lines | 
| 1940 |  20 28 6c 61 73 74 2d 6d 6f 64 69 66 69 65 64 2d    70 6f 73 29 0a 20 20 22 54 72 69 6d 20 65 6d 70  | .(last-modified-pos)..."Trim.emp | 
| 1960 |  74 79 20 6c 69 6e 65 73 20 61 74 20 65 6e 64 2d    6f 66 2d 62 75 66 66 65 72 20 69 66 20 4c 41 53  | ty.lines.at.end-of-buffer.if.LAS | 
| 1980 |  54 2d 4d 4f 44 49 46 49 45 44 2d 50 4f 53 20 69    73 20 77 69 74 68 69 6e 20 74 68 65 6d 2e 22 0a  | T-MODIFIED-POS.is.within.them.". | 
| 19a0 |  20 20 28 69 6e 74 65 72 61 63 74 69 76 65 20 28    6c 69 73 74 20 6e 69 6c 29 29 0a 20 20 28 75 6e  | ..(interactive.(list.nil))...(un | 
| 19c0 |  6c 65 73 73 20 62 75 66 66 65 72 2d 72 65 61 64    2d 6f 6e 6c 79 0a 20 20 20 20 28 75 6e 6c 65 73  | less.buffer-read-only.....(unles | 
| 19e0 |  73 20 6c 61 73 74 2d 6d 6f 64 69 66 69 65 64 2d    70 6f 73 0a 20 20 20 20 20 20 28 77 73 2d 62 75  | s.last-modified-pos.......(ws-bu | 
| 1a00 |  74 6c 65 72 2d 6d 61 70 2d 63 68 61 6e 67 65 73    0a 20 20 20 20 20 20 20 28 6c 61 6d 62 64 61 20  | tler-map-changes........(lambda. | 
| 1a20 |  28 5f 70 72 6f 70 20 5f 62 65 67 20 65 6e 64 29    0a 20 20 20 20 20 20 20 20 20 28 73 65 74 71 20  | (_prop._beg.end)..........(setq. | 
| 1a40 |  6c 61 73 74 2d 6d 6f 64 69 66 69 65 64 2d 70 6f    73 20 65 6e 64 29 29 29 29 0a 20 20 20 20 3b 3b  | last-modified-pos.end)))).....;; | 
| 1a60 |  20 74 72 69 6d 20 45 4f 46 20 6e 65 77 6c 69 6e    65 73 20 69 66 20 72 65 71 75 69 72 65 64 0a 20  | .trim.EOF.newlines.if.required.. | 
| 1a80 |  20 20 20 28 77 68 65 6e 20 6c 61 73 74 2d 6d 6f    64 69 66 69 65 64 2d 70 6f 73 0a 20 20 20 20 20  | ...(when.last-modified-pos...... | 
| 1aa0 |  20 28 77 73 2d 62 75 74 6c 65 72 2d 77 69 74 68    2d 73 61 76 65 0a 20 20 20 20 20 20 20 28 77 69  | .(ws-butler-with-save........(wi | 
| 1ac0 |  64 65 6e 29 0a 20 20 20 20 20 20 20 28 67 6f 74    6f 2d 63 68 61 72 20 28 70 6f 69 6e 74 2d 6d 61  | den)........(goto-char.(point-ma | 
| 1ae0 |  78 29 29 0a 20 20 20 20 20 20 20 28 73 6b 69 70    2d 63 68 61 72 73 2d 62 61 63 6b 77 61 72 64 20  | x))........(skip-chars-backward. | 
| 1b00 |  22 20 5c 74 5c 6e 5c 76 22 29 0a 20 20 20 20 20    20 20 28 6c 65 74 20 28 28 70 72 69 6e 74 61 62  | ".\t\n\v")........(let.((printab | 
| 1b20 |  6c 65 2d 70 6f 69 6e 74 2d 6d 61 78 20 28 70 6f    69 6e 74 29 29 29 0a 20 20 20 20 20 20 20 20 20  | le-point-max.(point))).......... | 
| 1b40 |  28 77 68 65 6e 20 28 61 6e 64 20 28 66 75 6e 63    61 6c 6c 20 77 73 2d 62 75 74 6c 65 72 2d 74 72  | (when.(and.(funcall.ws-butler-tr | 
| 1b60 |  69 6d 2d 70 72 65 64 69 63 61 74 65 0a 09 09 09    20 20 20 20 20 70 72 69 6e 74 61 62 6c 65 2d 70  | im-predicate.........printable-p | 
| 1b80 |  6f 69 6e 74 2d 6d 61 78 20 28 70 6f 69 6e 74 2d    6d 61 78 29 29 0a 20 20 20 20 20 20 20 20 20 20  | oint-max.(point-max))........... | 
| 1ba0 |  20 20 20 20 20 20 20 20 28 3e 3d 20 6c 61 73 74    2d 6d 6f 64 69 66 69 65 64 2d 70 6f 73 20 70 72  | ........(>=.last-modified-pos.pr | 
| 1bc0 |  69 6e 74 61 62 6c 65 2d 70 6f 69 6e 74 2d 6d 61    78 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 28  | intable-point-max))............( | 
| 1be0 |  77 73 2d 62 75 74 6c 65 72 2d 74 72 69 6d 2d 65    6f 62 2d 6c 69 6e 65 73 29 29 29 29 29 29 0a 20  | ws-butler-trim-eob-lines)))))).. | 
| 1c00 |  20 3b 3b 20 63 6c 65 61 6e 20 72 65 74 75 72 6e    20 63 6f 64 65 20 66 6f 72 20 68 6f 6f 6b 73 0a  | .;;.clean.return.code.for.hooks. | 
| 1c20 |  20 20 6e 69 6c 29 0a 0a 28 64 65 66 75 6e 20 77    73 2d 62 75 74 6c 65 72 2d 63 6c 65 61 6e 2d 72  | ..nil)..(defun.ws-butler-clean-r | 
| 1c40 |  65 67 69 6f 6e 20 28 62 65 67 20 65 6e 64 29 0a    20 20 22 44 65 6c 65 74 65 20 74 72 61 69 6c 69  | egion.(beg.end)..."Delete.traili | 
| 1c60 |  6e 67 20 77 68 69 74 65 73 70 61 63 65 20 69 6e    20 74 68 65 20 72 65 67 69 6f 6e 20 64 65 6c 69  | ng.whitespace.in.the.region.deli | 
| 1c80 |  6d 69 74 65 64 20 62 79 20 42 45 47 20 61 6e 64    20 45 4e 44 2e 0a 52 65 73 70 65 63 74 73 20 60  | mited.by.BEG.and.END..Respects.` | 
| 1ca0 |  77 73 2d 62 75 74 6c 65 72 2d 63 6f 6e 76 65 72    74 2d 6c 65 61 64 69 6e 67 2d 74 61 62 73 2d 6f  | ws-butler-convert-leading-tabs-o | 
| 1cc0 |  72 2d 73 70 61 63 65 73 27 2c 20 77 68 69 63 68    20 73 65 65 2e 22 0a 20 20 28 69 6e 74 65 72 61  | r-spaces',.which.see."...(intera | 
| 1ce0 |  63 74 69 76 65 20 22 2a 72 22 29 0a 20 20 28 77    73 2d 62 75 74 6c 65 72 2d 77 69 74 68 2d 73 61  | ctive."*r")...(ws-butler-with-sa | 
| 1d00 |  76 65 0a 20 20 20 28 6e 61 72 72 6f 77 2d 74 6f    2d 72 65 67 69 6f 6e 20 62 65 67 20 65 6e 64 29  | ve....(narrow-to-region.beg.end) | 
| 1d20 |  0a 20 20 20 3b 3b 20 20 5f 6d 75 63 68 20 73 6c    6f 77 65 72 20 77 6f 75 6c 64 20 62 65 3a 20 20  | ....;;.._much.slower.would.be:.. | 
| 1d40 |  20 20 20 20 20 28 72 65 70 6c 61 63 65 2d 72 65    67 65 78 70 20 22 5b 20 5c 74 5d 2b 24 22 20 22  | .....(replace-regexp."[.\t]+$"." | 
| 1d60 |  22 29 0a 20 20 20 28 67 6f 74 6f 2d 63 68 61 72    20 28 70 6f 69 6e 74 2d 6d 69 6e 29 29 0a 20 20  | ")....(goto-char.(point-min))... | 
| 1d80 |  20 28 77 68 69 6c 65 20 28 6e 6f 74 20 28 65 6f    62 70 29 29 0a 20 20 20 20 20 28 77 68 65 6e 20  | .(while.(not.(eobp))......(when. | 
| 1da0 |  28 61 6e 64 20 77 73 2d 62 75 74 6c 65 72 2d 63    6f 6e 76 65 72 74 2d 6c 65 61 64 69 6e 67 2d 74  | (and.ws-butler-convert-leading-t | 
| 1dc0 |  61 62 73 2d 6f 72 2d 73 70 61 63 65 73 0a 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 6e  | abs-or-spaces.................(n | 
| 1de0 |  6f 74 20 28 62 6f 75 6e 64 2d 61 6e 64 2d 74 72    75 65 2d 70 20 73 6d 61 72 74 2d 74 61 62 73 2d  | ot.(bound-and-true-p.smart-tabs- | 
| 1e00 |  6d 6f 64 65 29 29 29 0a 20 20 20 20 20 20 20 3b    3b 20 63 6f 6e 76 65 72 74 20 6c 65 61 64 69 6e  | mode)))........;;.convert.leadin | 
| 1e20 |  67 20 74 61 62 73 20 74 6f 20 73 70 61 63 65 73    20 6f 72 20 76 2e 76 2e 0a 20 20 20 20 20 20 20  | g.tabs.to.spaces.or.v.v......... | 
| 1e40 |  28 6c 65 74 20 28 28 65 6f 6c 20 28 6c 69 6e 65    2d 65 6e 64 2d 70 6f 73 69 74 69 6f 6e 29 29 29  | (let.((eol.(line-end-position))) | 
| 1e60 |  0a 20 20 20 20 20 20 20 20 20 28 69 66 20 69 6e    64 65 6e 74 2d 74 61 62 73 2d 6d 6f 64 65 0a 20  | ..........(if.indent-tabs-mode.. | 
| 1e80 |  20 20 20 20 20 20 20 20 20 20 20 20 28 70 72 6f    67 6e 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  | ............(progn.............. | 
| 1ea0 |  20 20 28 73 6b 69 70 2d 63 68 61 72 73 2d 66 6f    72 77 61 72 64 20 22 5c 74 22 20 65 6f 6c 29 0a  | ..(skip-chars-forward."\t".eol). | 
| 1ec0 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28    77 68 65 6e 20 28 65 71 20 28 63 68 61 72 2d 61  | ...............(when.(eq.(char-a | 
| 1ee0 |  66 74 65 72 29 20 3f 5c 73 29 0a 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 28 74 61 62  | fter).?\s)..................(tab | 
| 1f00 |  69 66 79 20 28 70 6f 69 6e 74 29 20 28 70 72 6f    67 6e 20 28 73 6b 69 70 2d 63 68 61 72 73 2d 66  | ify.(point).(progn.(skip-chars-f | 
| 1f20 |  6f 72 77 61 72 64 20 22 5c 73 5c 74 22 20 65 6f    6c 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  | orward."\s\t".eol).............. | 
| 1f40 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 28 70 6f 69 6e  | ...........................(poin | 
| 1f60 |  74 29 29 29 29 29 0a 20 20 20 20 20 20 20 20 20    20 20 28 73 6b 69 70 2d 63 68 61 72 73 2d 66 6f  | t)))))............(skip-chars-fo | 
| 1f80 |  72 77 61 72 64 20 22 20 22 20 65 6f 6c 29 0a 20    20 20 20 20 20 20 20 20 20 20 28 77 68 65 6e 20  | rward.".".eol)............(when. | 
| 1fa0 |  28 65 71 20 28 63 68 61 72 2d 61 66 74 65 72 29    20 3f 5c 74 29 0a 20 20 20 20 20 20 20 20 20 20  | (eq.(char-after).?\t)........... | 
| 1fc0 |  20 20 20 28 75 6e 74 61 62 69 66 79 20 28 70 6f    69 6e 74 29 20 28 70 72 6f 67 6e 20 28 73 6b 69  | ...(untabify.(point).(progn.(ski | 
| 1fe0 |  70 2d 63 68 61 72 73 2d 66 6f 72 77 61 72 64 20    22 5c 73 5c 74 22 20 65 6f 6c 29 0a 20 20 20 20  | p-chars-forward."\s\t".eol)..... | 
| 2000 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | ................................ | 
| 2020 |  20 20 28 70 6f 69 6e 74 29 29 29 29 29 29 29 0a    20 20 20 20 20 28 65 6e 64 2d 6f 66 2d 6c 69 6e  | ..(point)))))))......(end-of-lin | 
| 2040 |  65 29 0a 20 20 20 20 20 28 64 65 6c 65 74 65 2d    68 6f 72 69 7a 6f 6e 74 61 6c 2d 73 70 61 63 65  | e)......(delete-horizontal-space | 
| 2060 |  29 0a 20 20 20 20 20 28 66 6f 72 77 61 72 64 2d    6c 69 6e 65 20 31 29 29 29 0a 20 20 3b 3b 20 63  | )......(forward-line.1)))...;;.c | 
| 2080 |  6c 65 61 6e 20 72 65 74 75 72 6e 20 63 6f 64 65    20 66 6f 72 20 68 6f 6f 6b 73 0a 20 20 6e 69 6c  | lean.return.code.for.hooks...nil | 
| 20a0 |  29 0a 0a 0a 28 64 65 66 76 61 72 20 77 73 2d 62    75 74 6c 65 72 2d 70 72 65 73 61 76 65 2d 63 6f  | )...(defvar.ws-butler-presave-co | 
| 20c0 |  6f 72 64 20 6e 69 6c 0a 20 20 22 53 61 76 65 64    20 6c 69 73 74 20 6f 66 20 28 4c 49 4e 45 20 43  | ord.nil..."Saved.list.of.(LINE.C | 
| 20e0 |  4f 4c 55 4d 4e 29 20 75 73 65 64 20 74 6f 20 72    65 73 74 6f 72 65 20 70 6f 69 6e 74 20 61 66 74  | OLUMN).used.to.restore.point.aft | 
| 2100 |  65 72 20 73 61 76 69 6e 67 2e 0a 0a 54 68 69 73    20 69 73 20 74 68 65 20 6b 65 79 20 74 6f 20 74  | er.saving...This.is.the.key.to.t | 
| 2120 |  68 65 20 76 69 72 74 75 61 6c 20 73 70 61 63 65    73 20 70 72 65 73 65 72 76 69 6e 67 20 69 6e 64  | he.virtual.spaces.preserving.ind | 
| 2140 |  65 6e 74 61 74 69 6f 6e 20 6d 65 63 68 61 6e 69    73 6d 2e 22 29 0a 28 6d 61 6b 65 2d 76 61 72 69  | entation.mechanism.").(make-vari | 
| 2160 |  61 62 6c 65 2d 62 75 66 66 65 72 2d 6c 6f 63 61    6c 20 27 77 73 2d 62 75 74 6c 65 72 2d 70 72 65  | able-buffer-local.'ws-butler-pre | 
| 2180 |  73 61 76 65 2d 63 6f 6f 72 64 29 0a 0a 3b 3b 20    43 61 6c 6c 20 46 55 4e 43 20 77 69 74 68 20 65  | save-coord)..;;.Call.FUNC.with.e | 
| 21a0 |  61 63 68 20 63 68 61 6e 67 65 64 20 72 65 67 69    6f 6e 20 28 53 54 41 52 54 2d 50 4f 53 49 54 49  | ach.changed.region.(START-POSITI | 
| 21c0 |  4f 4e 20 45 4e 44 2d 50 4f 53 49 54 49 4f 4e 29    2e 0a 3b 3b 20 54 68 69 73 20 73 69 6d 70 6c 79  | ON.END-POSITION)..;;.This.simply | 
| 21e0 |  20 75 73 65 73 20 61 6e 20 65 6e 64 20 6d 61 72    6b 65 72 20 73 69 6e 63 65 20 77 65 20 61 72 65  | .uses.an.end.marker.since.we.are | 
| 2200 |  20 6d 6f 64 69 66 79 69 6e 67 20 74 68 65 20 62    75 66 66 65 72 20 69 6e 20 70 6c 61 63 65 2e 0a  | .modifying.the.buffer.in.place.. | 
| 2220 |  3b 3b 20 53 65 65 20 61 6c 73 6f 20 60 68 69 6c    69 74 2d 63 68 67 2d 6d 61 70 2d 63 68 61 6e 67  | ;;.See.also.`hilit-chg-map-chang | 
| 2240 |  65 73 27 2e 0a 28 64 65 66 75 6e 20 77 73 2d 62    75 74 6c 65 72 2d 6d 61 70 2d 63 68 61 6e 67 65  | es'..(defun.ws-butler-map-change | 
| 2260 |  73 20 28 66 75 6e 63 20 26 6f 70 74 69 6f 6e 61    6c 20 73 74 61 72 74 2d 70 6f 73 69 74 69 6f 6e  | s.(func.&optional.start-position | 
| 2280 |  20 65 6e 64 2d 70 6f 73 69 74 69 6f 6e 29 0a 20    20 28 6c 65 74 20 28 28 73 74 61 72 74 20 28 6f  | .end-position)...(let.((start.(o | 
| 22a0 |  72 20 73 74 61 72 74 2d 70 6f 73 69 74 69 6f 6e    20 28 70 6f 69 6e 74 2d 6d 69 6e 29 29 29 0a 20  | r.start-position.(point-min))).. | 
| 22c0 |  20 20 20 20 20 20 20 28 6c 69 6d 69 74 20 28 63    6f 70 79 2d 6d 61 72 6b 65 72 20 28 6f 72 20 65  | .......(limit.(copy-marker.(or.e | 
| 22e0 |  6e 64 2d 70 6f 73 69 74 69 6f 6e 20 28 70 6f 69    6e 74 2d 6d 61 78 29 29 29 29 0a 20 20 20 20 20  | nd-position.(point-max))))...... | 
| 2300 |  20 20 20 70 72 6f 70 20 65 6e 64 29 0a 20 20 20    20 28 77 68 69 6c 65 20 28 61 6e 64 20 73 74 61  | ...prop.end).....(while.(and.sta | 
| 2320 |  72 74 20 28 3c 20 73 74 61 72 74 20 6c 69 6d 69    74 29 29 0a 20 20 20 20 20 20 28 73 65 74 71 20  | rt.(<.start.limit)).......(setq. | 
| 2340 |  70 72 6f 70 20 28 67 65 74 2d 74 65 78 74 2d 70    72 6f 70 65 72 74 79 20 73 74 61 72 74 20 27 77  | prop.(get-text-property.start.'w | 
| 2360 |  73 2d 62 75 74 6c 65 72 2d 63 68 67 29 29 0a 20    20 20 20 20 20 28 73 65 74 71 20 65 6e 64 20 28  | s-butler-chg)).......(setq.end.( | 
| 2380 |  74 65 78 74 2d 70 72 6f 70 65 72 74 79 2d 6e 6f    74 2d 61 6c 6c 20 73 74 61 72 74 20 6c 69 6d 69  | text-property-not-all.start.limi | 
| 23a0 |  74 20 27 77 73 2d 62 75 74 6c 65 72 2d 63 68 67    20 70 72 6f 70 29 29 0a 20 20 20 20 20 20 28 69  | t.'ws-butler-chg.prop)).......(i | 
| 23c0 |  66 20 70 72 6f 70 0a 20 20 20 20 20 20 20 20 20    20 28 66 75 6e 63 61 6c 6c 20 66 75 6e 63 20 70  | f.prop...........(funcall.func.p | 
| 23e0 |  72 6f 70 20 73 74 61 72 74 20 28 6f 72 20 65 6e    64 20 6c 69 6d 69 74 29 29 29 0a 20 20 20 20 20  | rop.start.(or.end.limit)))...... | 
| 2400 |  20 28 73 65 74 71 20 73 74 61 72 74 20 65 6e 64    29 29 0a 20 20 20 20 28 73 65 74 2d 6d 61 72 6b  | .(setq.start.end)).....(set-mark | 
| 2420 |  65 72 20 6c 69 6d 69 74 20 6e 69 6c 29 29 29 0a    0a 28 64 65 66 75 6e 20 77 73 2d 62 75 74 6c 65  | er.limit.nil)))..(defun.ws-butle | 
| 2440 |  72 2d 62 65 66 6f 72 65 2d 73 61 76 65 20 28 29    0a 20 20 22 54 72 69 6d 20 77 68 69 74 65 20 73  | r-before-save.()..."Trim.white.s | 
| 2460 |  70 61 63 65 20 62 65 66 6f 72 65 20 73 61 76 65    2e 0a 52 65 73 70 65 63 74 73 20 60 77 73 2d 62  | pace.before.save..Respects.`ws-b | 
| 2480 |  75 74 6c 65 72 2d 6b 65 65 70 2d 77 68 69 74 65    73 70 61 63 65 2d 62 65 66 6f 72 65 2d 70 6f 69  | utler-keep-whitespace-before-poi | 
| 24a0 |  6e 74 27 2c 20 77 68 69 63 68 20 73 65 65 2e 22    0a 20 20 3b 3b 20 73 61 76 65 20 64 61 74 61 20  | nt',.which.see."...;;.save.data. | 
| 24c0 |  74 6f 20 72 65 73 74 6f 72 65 20 6c 61 74 65 72    0a 20 20 28 77 68 65 6e 20 77 73 2d 62 75 74 6c  | to.restore.later...(when.ws-butl | 
| 24e0 |  65 72 2d 6b 65 65 70 2d 77 68 69 74 65 73 70 61    63 65 2d 62 65 66 6f 72 65 2d 70 6f 69 6e 74 0a  | er-keep-whitespace-before-point. | 
| 2500 |  20 20 20 20 28 77 73 2d 62 75 74 6c 65 72 2d 77    69 74 68 2d 73 61 76 65 0a 20 20 20 20 20 28 77  | ....(ws-butler-with-save......(w | 
| 2520 |  69 64 65 6e 29 0a 20 20 20 20 20 28 73 65 74 71    20 77 73 2d 62 75 74 6c 65 72 2d 70 72 65 73 61  | iden)......(setq.ws-butler-presa | 
| 2540 |  76 65 2d 63 6f 6f 72 64 20 28 6c 69 73 74 20 28    6c 69 6e 65 2d 6e 75 6d 62 65 72 2d 61 74 2d 70  | ve-coord.(list.(line-number-at-p | 
| 2560 |  6f 73 20 28 70 6f 69 6e 74 29 29 0a 09 09 09 09    09 20 28 63 75 72 72 65 6e 74 2d 63 6f 6c 75 6d  | os.(point)).......(current-colum | 
| 2580 |  6e 29 29 29 29 29 0a 20 20 28 6c 65 74 20 28 6c    61 73 74 2d 65 6e 64 29 0a 20 20 20 20 28 77 73  | n)))))...(let.(last-end).....(ws | 
| 25a0 |  2d 62 75 74 6c 65 72 2d 6d 61 70 2d 63 68 61 6e    67 65 73 0a 20 20 20 20 20 28 6c 61 6d 62 64 61  | -butler-map-changes......(lambda | 
| 25c0 |  20 28 5f 70 72 6f 70 20 62 65 67 20 65 6e 64 29    0a 20 20 20 20 20 20 20 28 73 61 76 65 2d 65 78  | .(_prop.beg.end)........(save-ex | 
| 25e0 |  63 75 72 73 69 6f 6e 0a 20 20 20 20 20 20 20 20    20 28 73 65 74 71 20 62 65 67 20 28 70 72 6f 67  | cursion..........(setq.beg.(prog | 
| 2600 |  6e 20 28 67 6f 74 6f 2d 63 68 61 72 20 62 65 67    29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | n.(goto-char.beg)............... | 
| 2620 |  20 20 20 20 20 20 20 20 20 20 20 20 28 6c 69 6e    65 2d 62 65 67 69 6e 6e 69 6e 67 2d 70 6f 73 69  | ............(line-beginning-posi | 
| 2640 |  74 69 6f 6e 29 29 0a 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 3b 3b 20 53 75 62 74 72 61 63  | tion))................;;.Subtrac | 
| 2660 |  74 20 6f 6e 65 20 66 72 6f 6d 20 65 6e 64 20 74    6f 20 6f 76 65 72 63 6f 6d 65 20 45 6d 61 63 73  | t.one.from.end.to.overcome.Emacs | 
| 2680 |  20 62 75 67 20 23 31 37 37 38 34 2c 20 73 69 6e    63 65 20 77 65 0a 20 20 20 20 20 20 20 20 20 20  | .bug.#17784,.since.we........... | 
| 26a0 |  20 20 20 20 20 3b 3b 20 61 6c 77 61 79 73 20 65    78 70 61 6e 64 20 74 6f 20 65 6e 64 20 6f 66 20  | .....;;.always.expand.to.end.of. | 
| 26c0 |  6c 69 6e 65 20 61 6e 79 77 61 79 2c 20 74 68 69    73 20 73 68 6f 75 6c 64 20 62 65 20 4f 4b 2e 0a  | line.anyway,.this.should.be.OK.. | 
| 26e0 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 65    6e 64 20 28 70 72 6f 67 6e 20 28 67 6f 74 6f 2d  | ...............end.(progn.(goto- | 
| 2700 |  63 68 61 72 20 28 31 2d 20 65 6e 64 29 29 0a 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | char.(1-.end)).................. | 
| 2720 |  20 20 20 20 20 20 20 20 20 28 6c 69 6e 65 2d 65    6e 64 2d 70 6f 73 69 74 69 6f 6e 29 29 29 29 0a  | .........(line-end-position)))). | 
| 2740 |  20 20 20 20 20 20 20 28 77 68 65 6e 20 28 66 75    6e 63 61 6c 6c 20 77 73 2d 62 75 74 6c 65 72 2d  | .......(when.(funcall.ws-butler- | 
| 2760 |  74 72 69 6d 2d 70 72 65 64 69 63 61 74 65 20 62    65 67 20 65 6e 64 29 0a 20 20 20 20 20 20 20 20  | trim-predicate.beg.end)......... | 
| 2780 |  20 28 77 73 2d 62 75 74 6c 65 72 2d 63 6c 65 61    6e 2d 72 65 67 69 6f 6e 20 62 65 67 20 65 6e 64  | .(ws-butler-clean-region.beg.end | 
| 27a0 |  29 29 0a 20 20 20 20 20 20 20 28 73 65 74 71 20    6c 61 73 74 2d 65 6e 64 20 65 6e 64 29 29 29 0a  | ))........(setq.last-end.end))). | 
| 27c0 |  20 20 20 20 28 77 73 2d 62 75 74 6c 65 72 2d 6d    61 79 62 65 2d 74 72 69 6d 2d 65 6f 62 2d 6c 69  | ....(ws-butler-maybe-trim-eob-li | 
| 27e0 |  6e 65 73 20 6c 61 73 74 2d 65 6e 64 29 29 29 0a    0a 28 64 65 66 75 6e 20 77 73 2d 62 75 74 6c 65  | nes.last-end)))..(defun.ws-butle | 
| 2800 |  72 2d 63 6c 65 61 72 2d 70 72 6f 70 65 72 74 69    65 73 20 28 29 0a 20 20 22 43 6c 65 61 72 20 61  | r-clear-properties.()..."Clear.a | 
| 2820 |  6c 6c 20 60 77 73 2d 62 75 74 6c 65 72 2d 6d 6f    64 65 27 20 74 65 78 74 20 70 72 6f 70 65 72 74  | ll.`ws-butler-mode'.text.propert | 
| 2840 |  69 65 73 20 69 6e 20 74 68 65 20 62 75 66 66 65    72 2e 22 0a 20 20 28 77 69 74 68 2d 73 69 6c 65  | ies.in.the.buffer."...(with-sile | 
| 2860 |  6e 74 2d 6d 6f 64 69 66 69 63 61 74 69 6f 6e 73    0a 20 20 20 20 28 77 73 2d 62 75 74 6c 65 72 2d  | nt-modifications.....(ws-butler- | 
| 2880 |  6d 61 70 2d 63 68 61 6e 67 65 73 0a 20 20 20 20    20 28 6c 61 6d 62 64 61 20 28 5f 70 72 6f 70 20  | map-changes......(lambda.(_prop. | 
| 28a0 |  73 74 61 72 74 20 65 6e 64 29 0a 20 20 20 20 20    20 20 28 72 65 6d 6f 76 65 2d 6c 69 73 74 2d 6f  | start.end)........(remove-list-o | 
| 28c0 |  66 2d 74 65 78 74 2d 70 72 6f 70 65 72 74 69 65    73 20 73 74 61 72 74 20 65 6e 64 20 27 28 77 73  | f-text-properties.start.end.'(ws | 
| 28e0 |  2d 62 75 74 6c 65 72 2d 63 68 67 29 29 29 29 29    29 0a 0a 28 64 65 66 75 6e 20 77 73 2d 62 75 74  | -butler-chg))))))..(defun.ws-but | 
| 2900 |  6c 65 72 2d 61 66 74 65 72 2d 63 68 61 6e 67 65    20 28 62 65 67 20 65 6e 64 20 6c 65 6e 67 74 68  | ler-after-change.(beg.end.length | 
| 2920 |  2d 62 65 66 6f 72 65 29 0a 20 20 22 55 70 64 61    74 65 20 77 73 2d 62 75 74 6c 65 72 20 74 65 78  | -before)..."Update.ws-butler.tex | 
| 2940 |  74 20 70 72 6f 70 65 72 74 69 65 73 2e 0a 54 68    65 20 61 72 67 75 6d 65 6e 74 73 20 61 72 65 20  | t.properties..The.arguments.are. | 
| 2960 |  61 73 20 74 6f 20 6d 65 6d 62 65 72 73 20 6f 66    20 60 61 66 74 65 72 2d 63 68 61 6e 67 65 2d 66  | as.to.members.of.`after-change-f | 
| 2980 |  75 6e 63 74 69 6f 6e 73 27 2c 20 77 68 69 63 68    20 73 65 65 2e 22 0a 20 20 28 6c 65 74 20 28 28  | unctions',.which.see."...(let.(( | 
| 29a0 |  74 79 70 65 20 28 69 66 20 28 61 6e 64 20 28 3d    20 62 65 67 20 65 6e 64 29 20 28 3e 20 6c 65 6e  | type.(if.(and.(=.beg.end).(>.len | 
| 29c0 |  67 74 68 2d 62 65 66 6f 72 65 20 30 29 29 0a 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | gth-before.0)).................. | 
| 29e0 |  20 27 64 65 6c 65 74 65 0a 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 27 63 68 67 29 29 29  | .'delete.................'chg))) | 
| 2a00 |  0a 20 20 20 20 28 69 66 20 75 6e 64 6f 2d 69 6e    2d 70 72 6f 67 72 65 73 73 0a 20 20 20 20 20 20  | .....(if.undo-in-progress....... | 
| 2a20 |  20 20 3b 3b 20 61 64 64 20 62 61 63 6b 20 64 65    6c 65 74 65 64 20 74 65 78 74 20 64 75 72 69 6e  | ..;;.add.back.deleted.text.durin | 
| 2a40 |  67 20 75 6e 64 6f 0a 20 20 20 20 20 20 20 20 28    69 66 20 28 61 6e 64 20 28 7a 65 72 6f 70 20 6c  | g.undo.........(if.(and.(zerop.l | 
| 2a60 |  65 6e 67 74 68 2d 62 65 66 6f 72 65 29 0a 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 28 3e 20  | ength-before)................(>. | 
| 2a80 |  65 6e 64 20 62 65 67 29 0a 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 28 65 71 20 28 67 65 74  | end.beg)................(eq.(get | 
| 2aa0 |  2d 74 65 78 74 2d 70 72 6f 70 65 72 74 79 20 65    6e 64 20 27 77 73 2d 62 75 74 6c 65 72 2d 63 68  | -text-property.end.'ws-butler-ch | 
| 2ac0 |  67 29 20 27 64 65 6c 65 74 65 29 29 0a 20 20 20    20 20 20 20 20 20 20 20 20 28 72 65 6d 6f 76 65  | g).'delete)).............(remove | 
| 2ae0 |  2d 6c 69 73 74 2d 6f 66 2d 74 65 78 74 2d 70 72    6f 70 65 72 74 69 65 73 20 65 6e 64 20 28 31 2b  | -list-of-text-properties.end.(1+ | 
| 2b00 |  20 65 6e 64 29 20 27 28 77 73 2d 62 75 74 6c 65    72 2d 63 68 67 29 29 29 0a 20 20 20 20 20 20 28  | .end).'(ws-butler-chg))).......( | 
| 2b20 |  77 69 74 68 2d 73 69 6c 65 6e 74 2d 6d 6f 64 69    66 69 63 61 74 69 6f 6e 73 0a 20 20 20 20 20 20  | with-silent-modifications....... | 
| 2b40 |  20 20 28 77 68 65 6e 20 28 65 71 20 74 79 70 65    20 27 64 65 6c 65 74 65 29 0a 20 20 20 20 20 20  | ..(when.(eq.type.'delete)....... | 
| 2b60 |  20 20 20 20 28 73 65 74 71 20 65 6e 64 20 28 6d    69 6e 20 28 2b 20 65 6e 64 20 31 29 20 28 70 6f  | ....(setq.end.(min.(+.end.1).(po | 
| 2b80 |  69 6e 74 2d 6d 61 78 29 29 29 29 0a 20 20 20 20    20 20 20 20 28 70 75 74 2d 74 65 78 74 2d 70 72  | int-max)))).........(put-text-pr | 
| 2ba0 |  6f 70 65 72 74 79 20 62 65 67 20 65 6e 64 20 27    77 73 2d 62 75 74 6c 65 72 2d 63 68 67 20 74 79  | operty.beg.end.'ws-butler-chg.ty | 
| 2bc0 |  70 65 29 29 29 29 29 0a 0a 28 64 65 66 75 6e 20    77 73 2d 62 75 74 6c 65 72 2d 61 66 74 65 72 2d  | pe)))))..(defun.ws-butler-after- | 
| 2be0 |  73 61 76 65 20 28 29 0a 20 20 22 52 65 73 74 6f    72 65 20 74 72 69 6d 6d 65 64 20 77 68 69 74 65  | save.()..."Restore.trimmed.white | 
| 2c00 |  73 70 61 63 65 20 62 65 66 6f 72 65 20 70 6f 69    6e 74 2e 22 0a 20 20 28 77 73 2d 62 75 74 6c 65  | space.before.point."...(ws-butle | 
| 2c20 |  72 2d 63 6c 65 61 72 2d 70 72 6f 70 65 72 74 69    65 73 29 0a 20 20 3b 3b 20 67 6f 20 74 6f 20 73  | r-clear-properties)...;;.go.to.s | 
| 2c40 |  61 76 65 64 20 6c 69 6e 65 2b 63 6f 6c 0a 20 20    28 77 68 65 6e 20 77 73 2d 62 75 74 6c 65 72 2d  | aved.line+col...(when.ws-butler- | 
| 2c60 |  70 72 65 73 61 76 65 2d 63 6f 6f 72 64 0a 20 20    20 20 28 6c 65 74 20 28 72 65 6d 61 69 6e 69 6e  | presave-coord.....(let.(remainin | 
| 2c80 |  67 2d 6c 69 6e 65 73 29 0a 20 20 20 20 20 20 28    77 73 2d 62 75 74 6c 65 72 2d 77 69 74 68 2d 73  | g-lines).......(ws-butler-with-s | 
| 2ca0 |  61 76 65 0a 20 20 20 20 20 20 20 28 77 69 64 65    6e 29 0a 20 20 20 20 20 20 20 28 67 6f 74 6f 2d  | ave........(widen)........(goto- | 
| 2cc0 |  63 68 61 72 20 28 70 6f 69 6e 74 2d 6d 69 6e 29    29 0a 20 20 20 20 20 20 20 28 73 65 74 71 20 72  | char.(point-min))........(setq.r | 
| 2ce0 |  65 6d 61 69 6e 69 6e 67 2d 6c 69 6e 65 73 0a 09    20 20 20 20 20 28 66 6f 72 77 61 72 64 2d 6c 69  | emaining-lines.......(forward-li | 
| 2d00 |  6e 65 20 28 31 2d 20 28 63 61 72 20 77 73 2d 62    75 74 6c 65 72 2d 70 72 65 73 61 76 65 2d 63 6f  | ne.(1-.(car.ws-butler-presave-co | 
| 2d20 |  6f 72 64 29 29 29 29 29 0a 20 20 20 20 20 20 28    75 6e 6c 65 73 73 20 28 65 71 20 72 65 6d 61 69  | ord))))).......(unless.(eq.remai | 
| 2d40 |  6e 69 6e 67 2d 6c 69 6e 65 73 20 30 29 0a 20 20    20 20 20 20 20 20 28 69 6e 73 65 72 74 20 28 6d  | ning-lines.0).........(insert.(m | 
| 2d60 |  61 6b 65 2d 73 74 72 69 6e 67 20 72 65 6d 61 69    6e 69 6e 67 2d 6c 69 6e 65 73 20 3f 5c 6e 29 29  | ake-string.remaining-lines.?\n)) | 
| 2d80 |  29 29 0a 20 20 20 20 28 6d 6f 76 65 2d 74 6f 2d    63 6f 6c 75 6d 6e 20 28 63 61 64 72 20 77 73 2d  | )).....(move-to-column.(cadr.ws- | 
| 2da0 |  62 75 74 6c 65 72 2d 70 72 65 73 61 76 65 2d 63    6f 6f 72 64 29 20 74 29 0a 20 20 20 20 28 73 65  | butler-presave-coord).t).....(se | 
| 2dc0 |  74 2d 62 75 66 66 65 72 2d 6d 6f 64 69 66 69 65    64 2d 70 20 6e 69 6c 29 29 29 0a 0a 28 64 65 66  | t-buffer-modified-p.nil)))..(def | 
| 2de0 |  75 6e 20 77 73 2d 62 75 74 6c 65 72 2d 62 65 66    6f 72 65 2d 72 65 76 65 72 74 20 28 29 0a 20 20  | un.ws-butler-before-revert.()... | 
| 2e00 |  22 43 6c 65 61 72 20 60 77 73 2d 62 75 74 6c 65    72 2d 70 72 65 73 61 76 65 2d 63 6f 6f 72 64 27  | "Clear.`ws-butler-presave-coord' | 
| 2e20 |  2e 22 0a 20 20 28 73 65 74 71 20 77 73 2d 62 75    74 6c 65 72 2d 70 72 65 73 61 76 65 2d 63 6f 6f  | ."...(setq.ws-butler-presave-coo | 
| 2e40 |  72 64 20 6e 69 6c 29 29 0a 0a 3b 3b 3b 23 23 23    61 75 74 6f 6c 6f 61 64 0a 28 64 65 66 69 6e 65  | rd.nil))..;;;###autoload.(define | 
| 2e60 |  2d 6d 69 6e 6f 72 2d 6d 6f 64 65 20 77 73 2d 62    75 74 6c 65 72 2d 6d 6f 64 65 0a 20 20 22 57 68  | -minor-mode.ws-butler-mode..."Wh | 
| 2e80 |  69 74 65 73 70 61 63 65 20 63 6c 65 61 6e 75 70    20 77 69 74 68 6f 75 74 20 6f 62 74 72 75 73 69  | itespace.cleanup.without.obtrusi | 
| 2ea0 |  76 65 20 77 68 69 74 65 73 70 61 63 65 20 72 65    6d 6f 76 61 6c 2e 0a 57 68 69 74 65 73 70 61 63  | ve.whitespace.removal..Whitespac | 
| 2ec0 |  65 73 20 61 74 20 65 6e 64 2d 6f 66 2d 6c 69 6e    65 20 61 6e 64 20 65 6e 64 2d 6f 66 2d 62 75 66  | es.at.end-of-line.and.end-of-buf | 
| 2ee0 |  66 65 72 20 61 72 65 20 74 72 69 6d 6d 65 64 20    75 70 6f 6e 20 73 61 76 65 2c 20 62 75 74 0a 6f  | fer.are.trimmed.upon.save,.but.o | 
| 2f00 |  6e 6c 79 20 66 6f 72 20 6c 69 6e 65 73 20 6d 6f    64 69 66 69 65 64 20 62 79 20 79 6f 75 2e 22 0a  | nly.for.lines.modified.by.you.". | 
| 2f20 |  20 20 3a 6c 69 67 68 74 65 72 20 22 20 77 62 22    0a 20 20 3a 67 72 6f 75 70 20 27 77 73 2d 62 75  | ..:lighter.".wb"...:group.'ws-bu | 
| 2f40 |  74 6c 65 72 0a 20 20 28 69 66 20 77 73 2d 62 75    74 6c 65 72 2d 6d 6f 64 65 0a 20 20 20 20 20 20  | tler...(if.ws-butler-mode....... | 
| 2f60 |  28 70 72 6f 67 6e 0a 20 20 20 20 20 20 20 20 28    61 64 64 2d 68 6f 6f 6b 20 27 61 66 74 65 72 2d  | (progn.........(add-hook.'after- | 
| 2f80 |  63 68 61 6e 67 65 2d 66 75 6e 63 74 69 6f 6e 73    20 23 27 77 73 2d 62 75 74 6c 65 72 2d 61 66 74  | change-functions.#'ws-butler-aft | 
| 2fa0 |  65 72 2d 63 68 61 6e 67 65 20 74 20 74 29 0a 20    20 20 20 20 20 20 20 28 61 64 64 2d 68 6f 6f 6b  | er-change.t.t).........(add-hook | 
| 2fc0 |  20 27 62 65 66 6f 72 65 2d 73 61 76 65 2d 68 6f    6f 6b 20 23 27 77 73 2d 62 75 74 6c 65 72 2d 62  | .'before-save-hook.#'ws-butler-b | 
| 2fe0 |  65 66 6f 72 65 2d 73 61 76 65 20 74 20 74 29 0a    20 20 20 20 20 20 20 20 28 61 64 64 2d 68 6f 6f  | efore-save.t.t).........(add-hoo | 
| 3000 |  6b 20 27 61 66 74 65 72 2d 73 61 76 65 2d 68 6f    6f 6b 20 23 27 77 73 2d 62 75 74 6c 65 72 2d 61  | k.'after-save-hook.#'ws-butler-a | 
| 3020 |  66 74 65 72 2d 73 61 76 65 20 74 20 74 29 0a 20    20 20 20 20 20 20 20 28 61 64 64 2d 68 6f 6f 6b  | fter-save.t.t).........(add-hook | 
| 3040 |  20 27 62 65 66 6f 72 65 2d 72 65 76 65 72 74 2d    68 6f 6f 6b 20 23 27 77 73 2d 62 75 74 6c 65 72  | .'before-revert-hook.#'ws-butler | 
| 3060 |  2d 62 65 66 6f 72 65 2d 72 65 76 65 72 74 20 74    20 74 29 0a 20 20 20 20 20 20 20 20 28 61 64 64  | -before-revert.t.t).........(add | 
| 3080 |  2d 68 6f 6f 6b 20 27 61 66 74 65 72 2d 72 65 76    65 72 74 2d 68 6f 6f 6b 20 23 27 77 73 2d 62 75  | -hook.'after-revert-hook.#'ws-bu | 
| 30a0 |  74 6c 65 72 2d 61 66 74 65 72 2d 73 61 76 65 20    74 20 74 29 0a 20 20 20 20 20 20 20 20 28 61 64  | tler-after-save.t.t).........(ad | 
| 30c0 |  64 2d 68 6f 6f 6b 20 27 65 64 69 74 2d 73 65 72    76 65 72 2d 64 6f 6e 65 2d 68 6f 6f 6b 20 23 27  | d-hook.'edit-server-done-hook.#' | 
| 30e0 |  77 73 2d 62 75 74 6c 65 72 2d 62 65 66 6f 72 65    2d 73 61 76 65 20 74 20 74 29 29 0a 20 20 20 20  | ws-butler-before-save.t.t))..... | 
| 3100 |  28 72 65 6d 6f 76 65 2d 68 6f 6f 6b 20 27 61 66    74 65 72 2d 63 68 61 6e 67 65 2d 66 75 6e 63 74  | (remove-hook.'after-change-funct | 
| 3120 |  69 6f 6e 73 20 23 27 77 73 2d 62 75 74 6c 65 72    2d 61 66 74 65 72 2d 63 68 61 6e 67 65 20 74 29  | ions.#'ws-butler-after-change.t) | 
| 3140 |  0a 20 20 20 20 28 72 65 6d 6f 76 65 2d 68 6f 6f    6b 20 27 62 65 66 6f 72 65 2d 73 61 76 65 2d 68  | .....(remove-hook.'before-save-h | 
| 3160 |  6f 6f 6b 20 23 27 77 73 2d 62 75 74 6c 65 72 2d    62 65 66 6f 72 65 2d 73 61 76 65 20 74 29 0a 20  | ook.#'ws-butler-before-save.t).. | 
| 3180 |  20 20 20 28 72 65 6d 6f 76 65 2d 68 6f 6f 6b 20    27 61 66 74 65 72 2d 73 61 76 65 2d 68 6f 6f 6b  | ...(remove-hook.'after-save-hook | 
| 31a0 |  20 23 27 77 73 2d 62 75 74 6c 65 72 2d 61 66 74    65 72 2d 73 61 76 65 20 74 29 0a 20 20 20 20 28  | .#'ws-butler-after-save.t).....( | 
| 31c0 |  72 65 6d 6f 76 65 2d 68 6f 6f 6b 20 27 62 65 66    6f 72 65 2d 72 65 76 65 72 74 2d 68 6f 6f 6b 20  | remove-hook.'before-revert-hook. | 
| 31e0 |  23 27 77 73 2d 62 75 74 6c 65 72 2d 62 65 66 6f    72 65 2d 72 65 76 65 72 74 20 74 29 0a 20 20 20  | #'ws-butler-before-revert.t).... | 
| 3200 |  20 28 72 65 6d 6f 76 65 2d 68 6f 6f 6b 20 27 61    66 74 65 72 2d 72 65 76 65 72 74 2d 68 6f 6f 6b  | .(remove-hook.'after-revert-hook | 
| 3220 |  20 23 27 77 73 2d 62 75 74 6c 65 72 2d 61 66 74    65 72 2d 73 61 76 65 20 74 29 0a 20 20 20 20 28  | .#'ws-butler-after-save.t).....( | 
| 3240 |  72 65 6d 6f 76 65 2d 68 6f 6f 6b 20 27 65 64 69    74 2d 73 65 72 76 65 72 2d 64 6f 6e 65 2d 68 6f  | remove-hook.'edit-server-done-ho | 
| 3260 |  6f 6b 20 23 27 77 73 2d 62 75 74 6c 65 72 2d 62    65 66 6f 72 65 2d 73 61 76 65 20 74 29 29 29 0a  | ok.#'ws-butler-before-save.t))). | 
| 3280 |  0a 3b 3b 20 49 74 20 77 6f 75 6c 64 20 62 65 20    62 65 74 74 65 72 20 74 6f 20 75 73 65 20 61 20  | .;;.It.would.be.better.to.use.a. | 
| 32a0 |  60 3a 70 72 65 64 69 63 61 74 65 27 20 70 61 72    61 6d 65 74 65 72 20 74 6f 0a 3b 3b 20 60 64 65  | `:predicate'.parameter.to.;;.`de | 
| 32c0 |  66 69 6e 65 2d 67 6c 6f 62 61 6c 69 7a 65 64 2d    6d 69 6e 6f 72 2d 6d 6f 64 65 27 2c 20 61 6e 64  | fine-globalized-minor-mode',.and | 
| 32e0 |  20 6d 61 72 6b 20 60 77 73 2d 62 75 74 6c 65 72    2d 67 6c 6f 62 61 6c 2d 65 78 65 6d 70 74 2d 6d  | .mark.`ws-butler-global-exempt-m | 
| 3300 |  6f 64 65 73 27 0a 3b 3b 20 6f 62 73 6f 6c 65 74    65 2e 20 20 57 65 20 63 6f 75 6c 64 20 70 72 6f  | odes'.;;.obsolete...We.could.pro | 
| 3320 |  62 61 62 6c 79 20 73 74 69 6c 6c 20 68 6f 6e 6f    75 72 20 61 20 75 73 65 72 27 73 20 63 75 73 74  | bably.still.honour.a.user's.cust | 
| 3340 |  6f 6d 0a 3b 3b 20 60 77 73 2d 62 75 74 6c 65 72    2d 67 6c 6f 62 61 6c 2d 65 78 65 6d 70 74 2d 6d  | om.;;.`ws-butler-global-exempt-m | 
| 3360 |  6f 64 65 73 27 2c 20 69 66 20 69 74 20 77 61 73    20 73 65 74 2c 20 69 6e 20 74 68 69 73 20 54 55  | odes',.if.it.was.set,.in.this.TU | 
| 3380 |  52 4e 2d 4f 4e 20 66 75 6e 63 74 69 6f 6e 2e 0a    3b 3b 20 48 65 72 65 20 69 73 20 61 6e 20 65 78  | RN-ON.function..;;.Here.is.an.ex | 
| 33a0 |  61 6d 70 6c 65 20 6f 66 20 61 20 75 73 65 66 75    6c 20 63 75 73 74 6f 6d 2c 20 75 73 65 72 2d 73  | ample.of.a.useful.custom,.user-s | 
| 33c0 |  70 65 63 69 66 69 65 64 20 70 72 65 64 69 63 61    74 65 3a 0a 3b 3b 0a 3b 3b 20 20 20 20 20 27 28  | pecified.predicate:.;;.;;.....'( | 
| 33e0 |  28 6e 6f 74 20 6d 61 72 6b 64 6f 77 6e 2d 6d 6f    64 65 0a 3b 3b 20 20 20 20 20 20 20 20 20 20 20  | (not.markdown-mode.;;........... | 
| 3400 |  20 6d 65 73 73 61 67 65 2d 6d 6f 64 65 0a 3b 3b    20 20 20 20 20 20 20 20 20 20 20 20 6c 69 73 70  | .message-mode.;;............lisp | 
| 3420 |  2d 69 6e 74 65 72 61 63 74 69 6f 6e 2d 6d 6f 64    65 29 0a 3b 3b 20 20 20 20 20 20 20 70 72 6f 67  | -interaction-mode).;;.......prog | 
| 3440 |  2d 6d 6f 64 65 20 63 6f 6e 66 2d 6d 6f 64 65 20    74 65 78 74 2d 6d 6f 64 65 29 0a 3b 3b 0a 3b 3b  | -mode.conf-mode.text-mode).;;.;; | 
| 3460 |  20 48 6f 77 65 76 65 72 2c 20 74 68 69 73 20 77    6f 75 6c 64 20 6d 65 61 6e 20 62 75 6d 70 69 6e  | .However,.this.would.mean.bumpin | 
| 3480 |  67 20 6f 75 72 20 6d 69 6e 69 6d 75 6d 20 72 65    71 75 69 72 65 64 20 45 6d 61 63 73 20 76 65 72  | g.our.minimum.required.Emacs.ver | 
| 34a0 |  73 69 6f 6e 20 74 6f 0a 3b 3b 20 32 38 2e 31 2e    20 20 46 6f 72 20 61 20 70 61 63 6b 61 67 65 20  | sion.to.;;.28.1...For.a.package. | 
| 34c0 |  6c 69 6b 65 20 74 68 69 73 20 6f 6e 65 2c 20 49    20 74 68 69 6e 6b 20 69 74 20 69 73 20 74 6f 6f  | like.this.one,.I.think.it.is.too | 
| 34e0 |  20 73 6f 6f 6e 20 66 6f 72 20 74 68 61 74 2e 0a    3b 3b 0a 3b 3b 20 57 65 20 77 6f 75 6c 64 20 61  | .soon.for.that..;;.;;.We.would.a | 
| 3500 |  6c 73 6f 20 77 61 6e 74 20 74 6f 20 72 65 74 61    69 6e 20 74 68 65 20 73 70 65 63 69 61 6c 20 68  | lso.want.to.retain.the.special.h | 
| 3520 |  61 6e 64 6c 69 6e 67 20 6f 66 20 60 73 70 65 63    69 61 6c 2d 6d 6f 64 65 27 2e 0a 28 64 65 66 75  | andling.of.`special-mode'..(defu | 
| 3540 |  6e 20 77 73 2d 62 75 74 6c 65 72 2d 2d 67 6c 6f    62 61 6c 2d 6d 6f 64 65 2d 74 75 72 6e 2d 6f 6e  | n.ws-butler--global-mode-turn-on | 
| 3560 |  20 28 29 0a 20 20 22 45 6e 61 62 6c 65 20 60 77    73 2d 62 75 74 6c 65 72 2d 6d 6f 64 65 27 20 75  | .()..."Enable.`ws-butler-mode'.u | 
| 3580 |  6e 6c 65 73 73 20 63 75 72 72 65 6e 74 20 6d 61    6a 6f 72 20 6d 6f 64 65 20 69 73 20 65 78 65 6d  | nless.current.major.mode.is.exem | 
| 35a0 |  70 74 2e 22 0a 20 20 28 75 6e 6c 65 73 73 20 28    6f 72 20 28 61 6e 64 20 28 6d 65 6d 71 20 27 73  | pt."...(unless.(or.(and.(memq.'s | 
| 35c0 |  70 65 63 69 61 6c 2d 6d 6f 64 65 20 77 73 2d 62    75 74 6c 65 72 2d 67 6c 6f 62 61 6c 2d 65 78 65  | pecial-mode.ws-butler-global-exe | 
| 35e0 |  6d 70 74 2d 6d 6f 64 65 73 29 0a 09 09 20 20 20    28 65 71 20 28 67 65 74 20 6d 61 6a 6f 72 2d 6d  | mpt-modes)......(eq.(get.major-m | 
| 3600 |  6f 64 65 20 27 6d 6f 64 65 2d 63 6c 61 73 73 29    20 27 73 70 65 63 69 61 6c 29 29 0a 09 20 20 20  | ode.'mode-class).'special))..... | 
| 3620 |  20 20 20 28 61 70 70 6c 79 20 23 27 64 65 72 69    76 65 64 2d 6d 6f 64 65 2d 70 20 77 73 2d 62 75  | ...(apply.#'derived-mode-p.ws-bu | 
| 3640 |  74 6c 65 72 2d 67 6c 6f 62 61 6c 2d 65 78 65 6d    70 74 2d 6d 6f 64 65 73 29 29 0a 20 20 20 20 28  | tler-global-exempt-modes)).....( | 
| 3660 |  77 73 2d 62 75 74 6c 65 72 2d 6d 6f 64 65 20 31    29 29 29 0a 0a 3b 3b 3b 23 23 23 61 75 74 6f 6c  | ws-butler-mode.1)))..;;;###autol | 
| 3680 |  6f 61 64 0a 28 64 65 66 69 6e 65 2d 67 6c 6f 62    61 6c 69 7a 65 64 2d 6d 69 6e 6f 72 2d 6d 6f 64  | oad.(define-globalized-minor-mod | 
| 36a0 |  65 20 77 73 2d 62 75 74 6c 65 72 2d 67 6c 6f 62    61 6c 2d 6d 6f 64 65 0a 20 20 77 73 2d 62 75 74  | e.ws-butler-global-mode...ws-but | 
| 36c0 |  6c 65 72 2d 6d 6f 64 65 20 77 73 2d 62 75 74 6c    65 72 2d 2d 67 6c 6f 62 61 6c 2d 6d 6f 64 65 2d  | ler-mode.ws-butler--global-mode- | 
| 36e0 |  74 75 72 6e 2d 6f 6e 29 0a 0a 28 70 72 6f 76 69    64 65 20 27 77 73 2d 62 75 74 6c 65 72 29 0a 0a  | turn-on)..(provide.'ws-butler).. | 
| 3700 |  3b 3b 3b 20 77 73 2d 62 75 74 6c 65 72 2e 65 6c    20 65 6e 64 73 20 68 65 72 65 0a 00 00 00 00 00  | ;;;.ws-butler.el.ends.here...... | 
| 3720 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| 3740 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| 3760 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| 3780 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| 37a0 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| 37c0 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| 37e0 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| 3800 |  77 73 2d 62 75 74 6c 65 72 2d 31 2e 33 2f 77 73    2d 62 75 74 6c 65 72 2d 70 6b 67 2e 65 6c 00 00  | ws-butler-1.3/ws-butler-pkg.el.. | 
| 3820 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| 3840 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| 3860 |  00 00 00 00 30 30 30 30 36 34 34 00 30 30 30 30    30 30 30 00 30 30 30 30 30 30 30 00 30 30 30 30  | ....0000644.0000000.0000000.0000 | 
| 3880 |  30 30 30 30 36 34 35 00 30 30 30 30 30 30 30 30    30 30 30 00 30 31 34 37 37 32 00 20 30 00 00 00  | 0000645.00000000000.014772..0... | 
| 38a0 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| 38c0 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| 38e0 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| 3900 |  00 75 73 74 61 72 20 20 00 72 6f 6f 74 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | .ustar...root................... | 
| 3920 |  00 00 00 00 00 00 00 00 00 72 6f 6f 74 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | .........root................... | 
| 3940 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| 3960 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| 3980 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| 39a0 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| 39c0 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| 39e0 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| 3a00 |  3b 3b 20 47 65 6e 65 72 61 74 65 64 20 70 61 63    6b 61 67 65 20 64 65 73 63 72 69 70 74 69 6f 6e  | ;;.Generated.package.description | 
| 3a20 |  20 66 72 6f 6d 20 77 73 2d 62 75 74 6c 65 72 2e    65 6c 20 20 2d 2a 2d 20 6d 6f 64 65 3a 20 6c 69  | .from.ws-butler.el..-*-.mode:.li | 
| 3a40 |  73 70 2d 64 61 74 61 3b 20 6e 6f 2d 62 79 74 65    2d 63 6f 6d 70 69 6c 65 3a 20 74 20 2d 2a 2d 0a  | sp-data;.no-byte-compile:.t.-*-. | 
| 3a60 |  28 64 65 66 69 6e 65 2d 70 61 63 6b 61 67 65 20    22 77 73 2d 62 75 74 6c 65 72 22 20 22 31 2e 33  | (define-package."ws-butler"."1.3 | 
| 3a80 |  22 20 22 55 6e 6f 62 74 72 75 73 69 76 65 6c 79    20 72 65 6d 6f 76 65 20 74 72 61 69 6c 69 6e 67  | "."Unobtrusively.remove.trailing | 
| 3aa0 |  20 77 68 69 74 65 73 70 61 63 65 22 20 27 28 28    65 6d 61 63 73 20 22 32 34 2e 31 22 29 29 20 3a  | .whitespace".'((emacs."24.1")).: | 
| 3ac0 |  63 6f 6d 6d 69 74 20 22 39 65 65 35 61 37 36 35    37 61 32 32 65 38 33 36 36 31 38 38 31 33 63 32  | commit."9ee5a7657a22e836618813c2 | 
| 3ae0 |  65 32 62 36 34 61 35 34 38 64 32 37 64 32 66 66    22 20 3a 61 75 74 68 6f 72 73 20 27 28 28 22 4c  | e2b64a548d27d2ff".:authors.'(("L | 
| 3b00 |  65 20 57 61 6e 67 22 20 2e 20 22 6c 32 36 77 61    6e 67 40 67 6d 61 69 6c 2e 63 6f 6d 22 29 29 20  | e.Wang"..."l26wang@gmail.com")). | 
| 3b20 |  3a 6d 61 69 6e 74 61 69 6e 65 72 20 27 28 22 53    65 61 6e 20 57 68 69 74 74 6f 6e 22 20 2e 20 22  | :maintainer.'("Sean.Whitton"..." | 
| 3b40 |  73 70 77 68 69 74 74 6f 6e 40 73 70 77 68 69 74    74 6f 6e 2e 6e 61 6d 65 22 29 20 3a 6b 65 79 77  | spwhitton@spwhitton.name").:keyw | 
| 3b60 |  6f 72 64 73 20 27 28 22 74 65 78 74 22 29 20 3a    75 72 6c 20 22 68 74 74 70 73 3a 2f 2f 65 6c 70  | ords.'("text").:url."https://elp | 
| 3b80 |  61 2e 6e 6f 6e 67 6e 75 2e 6f 72 67 2f 6e 6f 6e    67 6e 75 2f 77 73 2d 62 75 74 6c 65 72 2e 68 74  | a.nongnu.org/nongnu/ws-butler.ht | 
| 3ba0 |  6d 6c 22 29 0a 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ml")............................ | 
| 3bc0 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| 3be0 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| 3c00 |  77 73 2d 62 75 74 6c 65 72 2d 31 2e 33 2f 52 45    41 44 4d 45 2e 6d 64 00 00 00 00 00 00 00 00 00  | ws-butler-1.3/README.md......... | 
| 3c20 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| 3c40 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| 3c60 |  00 00 00 00 30 30 30 30 36 34 34 00 30 30 30 30    30 30 30 00 30 30 30 30 30 30 30 00 30 30 30 30  | ....0000644.0000000.0000000.0000 | 
| 3c80 |  30 30 30 35 37 34 37 00 30 30 30 30 30 30 30 30    30 30 30 00 30 31 33 32 33 34 00 20 30 00 00 00  | 0005747.00000000000.013234..0... | 
| 3ca0 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| 3cc0 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| 3ce0 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| 3d00 |  00 75 73 74 61 72 20 20 00 72 6f 6f 74 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | .ustar...root................... | 
| 3d20 |  00 00 00 00 00 00 00 00 00 72 6f 6f 74 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | .........root................... | 
| 3d40 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| 3d60 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| 3d80 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| 3da0 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| 3dc0 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| 3de0 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| 3e00 |  5b 21 5b 42 75 69 6c 64 20 53 74 61 74 75 73 5d    28 68 74 74 70 73 3a 2f 2f 74 72 61 76 69 73 2d  | [](ht | 
| 3e40 |  74 70 3a 2f 2f 74 72 61 76 69 73 2d 63 69 2e 6f    72 67 2f 6c 65 77 61 6e 67 2f 77 73 2d 62 75 74  | tp://travis-ci.org/lewang/ws-but | 
| 3e60 |  6c 65 72 29 0a 5b 21 5b 4e 6f 6e 47 4e 55 20 45    4c 50 41 5d 28 68 74 74 70 73 3a 2f 2f 65 6c 70  | ler).[](https://elpa.nongnu.org/nong | 
| 3ec0 |  6e 75 2f 77 73 2d 62 75 74 6c 65 72 2e 68 74 6d    6c 29 0a 0a 23 23 20 77 73 2d 62 75 74 6c 65 72  | nu/ws-butler.html)..##.ws-butler | 
| 3ee0 |  20 2d 2d 20 61 6e 20 75 6e 6f 62 74 72 75 73 69    76 65 20 77 61 79 20 74 6f 20 74 72 69 6d 20 73  | .--.an.unobtrusive.way.to.trim.s | 
| 3f00 |  70 61 63 65 73 20 66 72 6f 6d 20 65 6e 64 20 6f    66 20 6c 69 6e 65 0a 0a 2d 20 4f 6e 6c 79 20 6c  | paces.from.end.of.line..-.Only.l | 
| 3f20 |  69 6e 65 73 20 74 6f 75 63 68 65 64 20 67 65 74    20 74 72 69 6d 6d 65 64 2e 20 20 49 66 20 74 68  | ines.touched.get.trimmed...If.th | 
| 3f40 |  65 20 77 68 69 74 65 20 73 70 61 63 65 20 61 74    20 65 6e 64 20 6f 66 20 62 75 66 66 65 72 20 69  | e.white.space.at.end.of.buffer.i | 
| 3f60 |  73 0a 20 20 63 68 61 6e 67 65 64 2c 20 74 68 65    6e 20 62 6c 61 6e 6b 20 6c 69 6e 65 73 20 61 74  | s...changed,.then.blank.lines.at | 
| 3f80 |  20 74 68 65 20 65 6e 64 20 6f 66 20 62 75 66 66    65 72 20 61 72 65 20 74 72 75 6e 63 61 74 65 64  | .the.end.of.buffer.are.truncated | 
| 3fa0 |  20 72 65 73 70 65 63 74 69 6e 67 0a 20 20 60 72    65 71 75 69 72 65 2d 66 69 6e 61 6c 2d 6e 65 77  | .respecting...`require-final-new | 
| 3fc0 |  6c 69 6e 65 60 2e 0a 0a 2d 20 54 72 69 6d 6d 69    6e 67 20 6f 6e 6c 79 20 68 61 70 70 65 6e 73 20  | line`...-.Trimming.only.happens. | 
| 3fe0 |  77 68 65 6e 20 73 61 76 69 6e 67 2e 0a 0a 23 23    20 57 68 61 74 20 64 6f 65 73 20 75 6e 6f 62 74  | when.saving...##.What.does.unobt | 
| 4000 |  72 75 73 69 76 65 20 6d 65 61 6e 3f 0a 0a 54 68    65 20 75 73 65 72 20 69 73 20 6e 6f 74 20 6d 61  | rusive.mean?..The.user.is.not.ma | 
| 4020 |  64 65 20 65 78 70 6c 69 63 69 74 6c 79 20 61 77    61 72 65 20 77 68 65 6e 20 74 72 69 6d 6d 69 6e  | de.explicitly.aware.when.trimmin | 
| 4040 |  67 20 68 61 70 70 65 6e 73 2e 20 20 59 6f 75 20    6b 65 65 70 20 77 6f 72 6b 69 6e 67 0a 61 6e 64  | g.happens...You.keep.working.and | 
| 4060 |  20 74 68 65 20 62 75 74 6c 65 72 20 74 61 6b 65    73 20 63 61 72 65 20 6f 66 20 77 68 69 74 65 73  | .the.butler.takes.care.of.whites | 
| 4080 |  70 61 63 65 20 66 6f 72 20 79 6f 75 2e 0a 0a 54    68 69 73 20 6d 65 61 6e 73 20 69 66 20 70 6f 69  | pace.for.you...This.means.if.poi | 
| 40a0 |  6e 74 20 69 73 20 61 74 20 61 20 6c 6f 63 61 74    69 6f 6e 20 74 68 61 74 20 77 61 73 20 74 72 69  | nt.is.at.a.location.that.was.tri | 
| 40c0 |  6d 6d 65 64 2c 20 70 6f 69 6e 74 20 69 73 20 6e    6f 74 20 6d 6f 76 65 64 2c 20 62 75 74 0a 74 68  | mmed,.point.is.not.moved,.but.th | 
| 40e0 |  65 20 64 61 74 61 20 6f 6e 20 64 69 73 6b 20 68    61 73 20 62 65 65 6e 20 63 6c 65 61 6e 65 64 20  | e.data.on.disk.has.been.cleaned. | 
| 4100 |  75 70 20 28 72 65 76 65 72 74 20 74 68 65 20 62    75 66 66 65 72 20 74 6f 20 63 6f 6e 66 69 72 6d  | up.(revert.the.buffer.to.confirm | 
| 4120 |  29 2e 0a 0a 23 23 23 20 4e 6f 74 20 6d 6f 76 69    6e 67 20 70 6f 69 6e 74 20 62 65 63 61 75 73 65  | )...###.Not.moving.point.because | 
| 4140 |  20 6f 66 20 73 70 61 63 65 20 64 65 6c 65 74 69    6f 6e 2e 0a 0a 42 79 20 64 65 66 61 75 6c 74 2c  | .of.space.deletion...By.default, | 
| 4160 |  20 77 73 2d 62 75 74 6c 65 72 20 70 72 65 73 65    72 76 65 73 20 22 76 69 72 74 75 61 6c 20 73 70  | .ws-butler.preserves."virtual.sp | 
| 4180 |  61 63 65 73 22 20 69 6e 20 66 72 6f 6e 74 20 6f    66 20 70 6f 69 6e 74 20 69 66 20 6e 65 63 65 73  | aces".in.front.of.point.if.neces | 
| 41a0 |  73 61 72 79 2e 20 20 54 68 65 20 66 69 6c 65 20    6f 6e 20 64 69 73 6b 20 69 73 20 63 6c 65 61 6e  | sary...The.file.on.disk.is.clean | 
| 41c0 |  65 64 20 75 70 20 68 6f 77 65 76 65 72 2e 0a 0a    54 68 69 73 20 63 61 6e 20 62 65 20 64 69 73 61  | ed.up.however...This.can.be.disa | 
| 41e0 |  62 6c 65 64 20 77 69 74 68 20 60 77 73 2d 62 75    74 6c 65 72 2d 6b 65 65 70 2d 77 68 69 74 65 73  | bled.with.`ws-butler-keep-whites | 
| 4200 |  70 61 63 65 2d 62 65 66 6f 72 65 2d 70 6f 69 6e    74 60 2e 0a 0a 23 23 23 23 20 54 72 69 6d 6d 69  | pace-before-point`...####.Trimmi | 
| 4220 |  6e 67 20 6f 6e 6c 79 20 73 70 65 63 69 66 69 63    20 6c 69 6e 65 73 2e 0a 0a 54 68 65 72 65 20 6d  | ng.only.specific.lines...There.m | 
| 4240 |  69 67 68 74 20 62 65 20 6c 69 6e 65 73 20 79 6f    75 20 64 6f 6e 27 74 20 77 61 6e 74 20 74 6f 20  | ight.be.lines.you.don't.want.to. | 
| 4260 |  67 65 74 20 74 72 69 6d 6d 65 64 2c 20 65 2e 67    2e 20 73 70 61 63 65 73 20 69 6e 20 6d 75 6c 74  | get.trimmed,.e.g..spaces.in.mult | 
| 4280 |  69 6c 69 6e 65 20 73 74 72 69 6e 67 73 2e 20 20    54 68 65 20 62 65 68 61 76 69 6f 72 20 63 61 6e  | iline.strings...The.behavior.can | 
| 42a0 |  20 62 65 20 63 75 73 74 6f 6d 69 7a 65 64 20 74    68 72 6f 75 67 68 20 60 77 73 2d 62 75 74 6c 65  | .be.customized.through.`ws-butle | 
| 42c0 |  72 2d 74 72 69 6d 2d 70 72 65 64 69 63 61 74 65    60 2e 20 20 54 68 69 73 20 76 61 72 69 61 62 6c  | r-trim-predicate`...This.variabl | 
| 42e0 |  65 20 73 68 6f 75 6c 64 20 68 6f 6c 64 20 61 20    66 75 6e 63 74 69 6f 6e 20 74 68 61 74 20 65 78  | e.should.hold.a.function.that.ex | 
| 4300 |  70 65 63 74 73 20 32 20 61 72 67 75 6d 65 6e 74    73 20 28 72 65 67 69 6f 6e 20 62 65 67 69 6e 6e  | pects.2.arguments.(region.beginn | 
| 4320 |  69 6e 67 20 61 6e 64 20 65 6e 64 29 20 61 6e 64    20 73 68 6f 75 6c 64 20 72 65 74 75 72 6e 20 74  | ing.and.end).and.should.return.t | 
| 4340 |  72 75 65 20 6f 6e 6c 79 20 66 6f 72 20 72 65 67    69 6f 6e 73 20 74 68 61 74 20 6f 6e 65 20 77 61  | rue.only.for.regions.that.one.wa | 
| 4360 |  6e 74 73 20 74 6f 20 67 65 74 20 74 72 69 6d 6d    65 64 2e 20 41 73 20 61 6e 20 65 78 61 6d 70 6c  | nts.to.get.trimmed..As.an.exampl | 
| 4380 |  65 0a 0a 20 20 20 20 28 73 65 74 71 20 77 73 2d    62 75 74 6c 65 72 2d 74 72 69 6d 2d 70 72 65 64  | e......(setq.ws-butler-trim-pred | 
| 43a0 |  69 63 61 74 65 0a 20 20 20 20 20 20 20 20 20 20    28 6c 61 6d 62 64 61 20 28 62 65 67 20 65 6e 64  | icate...........(lambda.(beg.end | 
| 43c0 |  29 0a 20 20 20 20 20 20 20 20 20 20 20 20 28 6e    6f 74 20 28 65 71 20 27 66 6f 6e 74 2d 6c 6f 63  | ).............(not.(eq.'font-loc | 
| 43e0 |  6b 2d 73 74 72 69 6e 67 2d 66 61 63 65 0a 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | k-string-face................... | 
| 4400 |  20 20 20 28 67 65 74 2d 74 65 78 74 2d 70 72 6f    70 65 72 74 79 20 65 6e 64 20 27 66 61 63 65 29  | ...(get-text-property.end.'face) | 
| 4420 |  29 29 29 29 0a 0a 0a 23 23 20 49 6e 73 74 61 6c    6c 61 74 69 6f 6e 0a 0a 23 23 23 20 44 65 62 69  | ))))...##.Installation..###.Debi | 
| 4440 |  61 6e 20 39 20 6f 72 20 6c 61 74 65 72 20 6f 72    20 55 62 75 6e 74 75 20 31 36 2e 31 30 20 6f 72  | an.9.or.later.or.Ubuntu.16.10.or | 
| 4460 |  20 6c 61 74 65 72 0a 0a 60 61 70 74 2d 67 65 74    20 69 6e 73 74 61 6c 6c 20 65 6c 70 61 2d 77 73  | .later..`apt-get.install.elpa-ws | 
| 4480 |  2d 62 75 74 6c 65 72 60 0a 0a 23 23 23 20 43 6f    6e 66 69 67 75 72 61 74 69 6f 6e 0a 0a 54 6f 20  | -butler`..###.Configuration..To. | 
| 44a0 |  75 73 65 20 77 73 2d 62 75 74 6c 65 72 2c 20 72    65 71 75 69 72 65 20 69 74 20 61 6e 64 20 61 64  | use.ws-butler,.require.it.and.ad | 
| 44c0 |  64 20 77 73 2d 62 75 74 6c 65 72 2d 6d 6f 64 65    20 61 73 20 61 20 68 6f 6f 6b 20 6f 6e 20 61 6e  | d.ws-butler-mode.as.a.hook.on.an | 
| 44e0 |  79 20 6d 6f 64 65 0a 77 68 65 72 65 20 79 6f 75    20 77 6f 75 6c 64 20 6c 69 6b 65 20 69 74 20 74  | y.mode.where.you.would.like.it.t | 
| 4500 |  6f 20 62 65 20 65 6e 61 62 6c 65 64 2e 20 46 6f    72 20 65 78 61 6d 70 6c 65 2c 20 74 6f 20 65 6e  | o.be.enabled..For.example,.to.en | 
| 4520 |  61 62 6c 65 20 66 6f 72 20 61 6c 6c 20 0a 70 72    6f 67 72 61 6d 6d 69 6e 67 20 6c 61 6e 67 75 61  | able.for.all..programming.langua | 
| 4540 |  67 65 20 6d 6f 64 65 73 2c 20 61 64 64 20 74 68    69 73 20 74 6f 20 79 6f 75 72 20 2e 65 6d 61 63  | ge.modes,.add.this.to.your..emac | 
| 4560 |  73 3a 0a 0a 20 20 20 20 28 72 65 71 75 69 72 65    20 27 77 73 2d 62 75 74 6c 65 72 29 0a 20 20 20  | s:......(require.'ws-butler).... | 
| 4580 |  20 28 61 64 64 2d 68 6f 6f 6b 20 27 70 72 6f 67    2d 6d 6f 64 65 2d 68 6f 6f 6b 20 23 27 77 73 2d  | .(add-hook.'prog-mode-hook.#'ws- | 
| 45a0 |  62 75 74 6c 65 72 2d 6d 6f 64 65 29 0a 0a 41 6c    74 65 72 6e 61 74 69 76 65 6c 79 2c 20 79 6f 75  | butler-mode)..Alternatively,.you | 
| 45c0 |  20 63 61 6e 20 75 73 65 20 77 73 2d 62 75 74 6c    65 72 2d 67 6c 6f 62 61 6c 2d 6d 6f 64 65 20 74  | .can.use.ws-butler-global-mode.t | 
| 45e0 |  6f 20 74 75 72 6e 20 69 74 20 6f 6e 20 65 76 65    72 79 77 68 65 72 65 2e 0a 0a 23 23 20 48 69 73  | o.turn.it.on.everywhere...##.His | 
| 4600 |  74 6f 72 79 0a 0a 31 2e 20 49 20 73 74 61 72 74    65 64 20 62 79 20 74 72 69 6d 6d 69 6e 67 20 61  | tory..1..I.started.by.trimming.a | 
| 4620 |  6c 6c 20 73 70 61 63 65 73 20 61 74 20 45 4f 4c    20 69 6e 20 73 6f 75 72 63 65 20 63 6f 64 65 20  | ll.spaces.at.EOL.in.source.code. | 
| 4640 |  69 6e 20 61 0a 20 20 20 22 77 72 69 74 65 2d 66    69 6c 65 2d 68 6f 6f 6b 22 20 77 68 65 6e 20 49  | in.a...."write-file-hook".when.I | 
| 4660 |  20 73 74 61 72 74 65 64 20 70 72 6f 67 72 61 6d    6d 69 6e 67 2e 20 20 49 74 20 73 65 65 6d 65 64  | .started.programming...It.seemed | 
| 4680 |  20 6c 69 6b 65 20 61 20 67 72 65 61 74 20 69 64    65 61 2e 0a 0a 32 2e 20 54 68 65 6e 20 49 20 67  | .like.a.great.idea...2..Then.I.g | 
| 46a0 |  6f 74 20 61 20 6a 6f 62 20 77 6f 72 6b 69 6e 67    20 6f 6e 20 61 20 63 6f 64 65 20 62 61 73 65 20  | ot.a.job.working.on.a.code.base. | 
| 46c0 |  77 68 65 72 65 20 6e 6f 20 6f 6e 65 20 65 6c 73    65 20 74 72 69 6d 6d 65 64 20 73 70 61 63 65 73  | where.no.one.else.trimmed.spaces | 
| 46e0 |  2c 0a 20 20 20 73 6f 20 6d 79 20 63 6f 6d 6d 69    74 73 20 62 65 63 61 6d 65 20 73 75 70 65 72 20  | ,....so.my.commits.became.super. | 
| 4700 |  6e 6f 69 73 79 2e 20 20 49 20 77 61 6e 74 65 64    20 74 6f 20 73 74 6f 70 20 62 65 69 6e 67 20 74  | noisy...I.wanted.to.stop.being.t | 
| 4720 |  68 65 20 22 77 68 69 74 65 20 73 70 61 63 65 22    0a 20 20 20 70 6f 6c 69 63 65 2c 20 73 6f 20 73  | he."white.space"....police,.so.s | 
| 4740 |  77 69 74 63 68 65 64 20 74 6f 20 5b 77 73 2d 74    72 69 6d 5d 5b 5d 2e 0a 20 20 20 20 2a 20 77 73  | witched.to.[ws-trim][]......*.ws | 
| 4760 |  2d 74 72 69 6d 20 77 6f 72 6b 73 20 69 6e 20 61    20 60 70 6f 73 74 2d 63 6f 6d 6d 61 6e 64 2d 68  | -trim.works.in.a.`post-command-h | 
| 4780 |  6f 6f 6b 60 20 61 6e 64 20 74 72 69 6d 73 20 77    68 69 74 65 20 73 70 61 63 65 20 77 68 69 6c 65  | ook`.and.trims.white.space.while | 
| 47a0 |  20 79 6f 75 0a 20 20 20 20 20 20 65 64 69 74 2e    0a 20 20 20 20 2a 20 54 68 69 73 20 77 61 73 20  | .you.......edit......*.This.was. | 
| 47c0 |  74 6f 6f 20 65 61 67 65 72 20 66 6f 72 20 6d 65    2e 20 46 6f 72 20 65 78 61 6d 70 6c 65 2c 20 49  | too.eager.for.me..For.example,.I | 
| 47e0 |  20 77 6f 75 6c 64 20 73 74 6f 70 20 61 6e 64 20    73 63 72 6f 6c 6c 20 61 77 61 79 20 74 6f 0a 20  | .would.stop.and.scroll.away.to.. | 
| 4800 |  20 20 20 20 20 6c 6f 6f 6b 20 61 74 20 73 6f 6d    65 20 63 6f 64 65 2c 20 61 6e 64 20 77 68 65 6e  | .....look.at.some.code,.and.when | 
| 4820 |  20 49 20 67 65 74 20 62 61 63 6b 20 74 6f 20 63    6f 6e 74 69 6e 75 65 2c 20 6d 79 20 69 6e 64 65  | .I.get.back.to.continue,.my.inde | 
| 4840 |  6e 74 61 74 69 6f 6e 20 69 73 0a 20 20 20 20 20    20 67 6f 6e 65 2e 0a 20 20 20 20 2a 20 49 74 20  | ntation.is.......gone......*.It. | 
| 4860 |  63 61 75 73 65 64 20 73 6f 6d 65 20 70 72 6f 62    6c 65 6d 73 20 77 69 74 68 20 6f 74 68 65 72 20  | caused.some.problems.with.other. | 
| 4880 |  63 75 73 74 6f 6d 69 7a 61 74 69 6f 6e 73 20 77    68 69 63 68 20 61 6c 73 6f 20 72 65 6c 79 20 6f  | customizations.which.also.rely.o | 
| 48a0 |  6e 0a 20 20 20 20 20 20 60 70 6f 73 74 2d 63 6f    6d 6d 61 6e 64 2d 68 6f 6f 6b 60 2e 0a 0a 33 2e  | n.......`post-command-hook`...3. | 
| 48c0 |  20 49 20 73 74 61 72 74 65 64 20 65 78 70 65 72    69 6d 65 6e 74 69 6e 67 20 77 69 74 68 20 75 73  | .I.started.experimenting.with.us | 
| 48e0 |  69 6e 67 20 60 68 69 67 68 6c 69 67 68 74 2d 63    68 61 6e 67 65 73 2d 6d 6f 64 65 60 20 74 6f 20  | ing.`highlight-changes-mode`.to. | 
| 4900 |  74 72 69 6d 20 6f 6e 6c 79 0a 20 20 20 6c 69 6e    65 73 20 49 20 74 6f 75 63 68 20 6f 6e 20 73 61  | trim.only....lines.I.touch.on.sa | 
| 4920 |  76 65 2e 0a 0a 34 2e 20 4e 6f 77 2c 20 74 68 65    20 64 65 70 65 6e 64 65 6e 63 79 20 6f 6e 20 60  | ve...4..Now,.the.dependency.on.` | 
| 4940 |  68 69 67 68 6c 69 67 68 74 2d 63 68 61 6e 67 65    73 2d 6d 6f 64 65 60 20 68 61 73 20 62 65 65 6e  | highlight-changes-mode`.has.been | 
| 4960 |  20 72 65 6d 6f 76 65 64 20 61 6e 64 20 77 65 0a    20 20 20 68 61 6e 64 6c 65 20 63 68 61 6e 67 65  | .removed.and.we....handle.change | 
| 4980 |  20 63 68 61 6e 67 69 6e 67 20 74 68 72 6f 75 67    68 20 74 65 78 74 20 70 72 6f 70 65 72 74 69 65  | .changing.through.text.propertie | 
| 49a0 |  73 20 6f 75 72 73 65 6c 76 65 73 2e 0a 0a 5b 77    73 2d 74 72 69 6d 5d 3a 20 66 74 70 3a 2f 2f 66  | s.ourselves...[ws-trim]:.ftp://f | 
| 49c0 |  74 70 2e 6c 79 73 61 74 6f 72 2e 6c 69 75 2e 73    65 2f 70 75 62 2f 65 6d 61 63 73 2f 77 73 2d 74  | tp.lysator.liu.se/pub/emacs/ws-t | 
| 49e0 |  72 69 6d 2e 65 6c 0a 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | rim.el.......................... | 
| 4a00 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| 4a20 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| 4a40 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| 4a60 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| 4a80 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| 4aa0 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| 4ac0 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| 4ae0 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| 4b00 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| 4b20 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| 4b40 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| 4b60 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| 4b80 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| 4ba0 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| 4bc0 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| 4be0 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| 4c00 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| 4c20 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| 4c40 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| 4c60 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| 4c80 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| 4ca0 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| 4cc0 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| 4ce0 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| 4d00 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| 4d20 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| 4d40 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| 4d60 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| 4d80 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| 4da0 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| 4dc0 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| 4de0 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| 4e00 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| 4e20 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| 4e40 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| 4e60 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| 4e80 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| 4ea0 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| 4ec0 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| 4ee0 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| 4f00 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| 4f20 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| 4f40 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| 4f60 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| 4f80 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| 4fa0 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| 4fc0 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| 4fe0 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ |