;ELC ;;; Compiled by pot@pot.cnuce.cnr.it on Tue Mar 18 15:39:55 2003 ;;; from file /home/pot/gnu/emacs-pretest.new/lisp/emulation/ws-mode.el ;;; in Emacs version 21.3 ;;; with bytecomp version 2.85.4.1 ;;; with all optimizations. ;;; This file uses dynamic docstrings, first added in Emacs 19.29. (if (and (boundp 'emacs-version) (< (aref emacs-version (1- (length emacs-version))) ?A) (or (and (boundp 'epoch::version) epoch::version) (string-lessp emacs-version "19.29"))) (error "`ws-mode.el' was compiled for Emacs 19.29 or later")) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; #@2  (defvar wordstar-mode-map nil (#$ . 625)) #@2  (defvar wordstar-C-j-map nil (#$ . 673)) #@2  (defvar wordstar-C-k-map nil (#$ . 720)) #@2  (defvar wordstar-C-o-map nil (#$ . 767)) #@2  (defvar wordstar-C-q-map nil (#$ . 814)) (byte-code "\204(\304 \304 \304 \304 \305\306\307#\210\305\310\311#\210\305\312\313#\210\305\314\315#\210\305\316\317#\210\305\320\321#\210\305\322\323#\210\305\324\325#\210\305\326\327#\210\305\330\331#\210\305\332 #\210\305\333\334#\210\305\335\336#\210\305\337\n#\210\305\340\341#\210\305\342 #\210\305\343\344#\210\305\345\325#\210\305\346\347#\210\305\350\351#\210\305\352\353#\210\305\354\355#\210\305\356\357#\210\305\360\361#\210\305\362\363#\210\305 \364\365#\210\305 \366\367#\210\305 \370\371#\210\305 \372\373#\210\305 \374\375#\210\305 \376\377#\210\305 \201@\201A#\210\305 \201B\201C#\210\305 \201D\201E#\210\305 \201F\201G#\210\305 \201H\201I#\210\305 \201J\201K#\210\305 \310\201K#\210\305 \201L\201M#\210\305 \312\201M#\210\305 \201N\201O#\210\305 \314\201O#\210\305 \201P\201Q#\210\305 \320\201Q#\210\305 \201R\201S#\210\305 \324\201S#\210\305 \201T\201U#\210\305 \326\201U#\210\305 \201V\201W#\210\305 \332\201W#\210\305 \201X\201Y#\210\305 \340\201Y#\210\305 \201Z\201[#\210\305 \342\201[#\210\305 \201\\\201]#\210\305 \343\201]#\210\305 \201^\201_#\210\305 \345\201_#\210\305 \201`\201a#\210\305 \346\201a#\210\305 \201b\201c#\210\305 \350\351#\210\305 \201d\201e#\210\305 \352\201e#\210\305 \201f\201g#\210\305 \354\201g#\210\305 \201h\201O#\210\305 \356\201O#\210\305 \201i\201j#\210\305 \360\201j#\210\305\n\364\365#\210\305\n\201L\201k#\210\305\n\312\201k#\210\305\n\201J\201l#\210\305\n\310\201l#\210\305\n\201m\201n#\210\305\n\330\201n#\210\305\n\201V\201o#\210\305\n\332\201o#\210\305\n\201p\201q#\210\305\n\333\201q#\210\305\n\201r\201s#\210\305\n\201t\201s#\210\305\n\201\\\201u#\210\305\n\343\201u#\210\305\n\350\351#\210\305\n\201v\201w#\210\305\n\201x\201y#\210\305\n\201z\201{#\210\305\n\201|\201}#\210\305 \364\365#\210\305 \366\201~#\210\305 \370\201#\210\305 \372\201\200#\210\305 \374\201\201#\210\305 \376\201\202#\210\305 \201@\201\203#\210\305 \201B\201\204#\210\305 \201D\201\205#\210\305 \201F\201\206#\210\305 \201H\201\207#\210\305 \201\210\201\211#\210\305 \306\201\211#\210\305 \201J\201\212#\210\305 \310\201\212#\210\305 \201L\201\213#\210\305 \312\201\213#\210\305 \201N\201\214#\210\305 \314\201\214#\210\305 \201P\201\215#\210\305 \320\201\215#\210\305 \201V\201\216#\210\305 \332\201\216#\210\305 \201p\201\217#\210\305 \333\201\217#\210\305 \201X\201\220#\210\305 \340\201\220#\210\305 \201\\\201\221#\210\305 \343\201\221#\210\305 \201^\201\222#\210\305 \345\201\222#\210\305 \350\351#\210\305 \201f\201\223#\210\305 \354\201\223#\210\305 \201i\201\224#\210\305 \360\201\224#\210\305 \201\225\201\226#\210\201\227\201\230\201\231\201\232#\207" [wordstar-mode-map wordstar-C-k-map wordstar-C-o-map wordstar-C-q-map make-keymap define-key "" backward-word "" fill-paragraph "" scroll-up "" forward-char "" previous-line "" forward-word "" delete-char "" backward-char " " indent-for-tab-command "\n" help-for-help " " "\f" ws-repeat-search "" open-line "" "" quoted-insert "" "" scroll-down "" "" kill-word "" keyboard-quit "" overwrite-mode "" scroll-down-line "" next-line "" kill-complete-line "" scroll-up-line " " nil "0" ws-set-marker-0 "1" ws-set-marker-1 "2" ws-set-marker-2 "3" ws-set-marker-3 "4" ws-set-marker-4 "5" ws-set-marker-5 "6" ws-set-marker-6 "7" ws-set-marker-7 "8" ws-set-marker-8 "9" ws-set-marker-9 "b" ws-begin-block "c" ws-copy-block "d" save-buffers-kill-emacs "f" find-file "h" ws-show-markers "i" ws-indent-block "k" ws-end-block "p" ws-print-block "q" kill-emacs "r" insert-file "s" save-some-buffers "t" ws-mark-word "u" ws-exdent-block "v" ws-move-block "w" ws-write-block "x" "y" ws-delete-block wordstar-center-line switch-to-buffer "j" justify-current-line kill-buffer "l" list-buffers "m" auto-fill-mode " " set-fill-column "wd" delete-other-windows "wh" split-window-horizontally "wo" other-window "wv" split-window-vertically ws-find-marker-0 ws-find-marker-1 ws-find-marker-2 ws-find-marker-3 ws-find-marker-4 ws-find-marker-5 ws-find-marker-6 ws-find-marker-7 ws-find-marker-8 ws-find-marker-9 "a" ws-query-replace ws-goto-block-begin end-of-buffer end-of-line ws-search ws-goto-block-end ws-undo ws-last-cursorp beginning-of-buffer beginning-of-line ws-last-error ws-kill-eol "" ws-kill-bol put wordstar-mode mode-class special] 4) #@2442 Major mode with WordStar-like key bindings. BUGS: - Help menus with WordStar commands (C-j just calls help-for-help) are not implemented - Options for search and replace - Show markers (C-k h) is somewhat strange - Search and replace (C-q a) is only available in forward direction No key bindings beginning with ESC are installed, they will work Emacs-like. The key bindings are: C-a backward-word C-b fill-paragraph C-c scroll-up-line C-d forward-char C-e previous-line C-f forward-word C-g delete-char C-h backward-char C-i indent-for-tab-command C-j help-for-help C-k ordstar-C-k-map C-l ws-repeat-search C-n open-line C-p quoted-insert C-r scroll-down-line C-s backward-char C-t kill-word C-u keyboard-quit C-v overwrite-mode C-w scroll-down C-x next-line C-y kill-complete-line C-z scroll-up C-k 0 ws-set-marker-0 C-k 1 ws-set-marker-1 C-k 2 ws-set-marker-2 C-k 3 ws-set-marker-3 C-k 4 ws-set-marker-4 C-k 5 ws-set-marker-5 C-k 6 ws-set-marker-6 C-k 7 ws-set-marker-7 C-k 8 ws-set-marker-8 C-k 9 ws-set-marker-9 C-k b ws-begin-block C-k c ws-copy-block C-k d save-buffers-kill-emacs C-k f find-file C-k h ws-show-markers C-k i ws-indent-block C-k k ws-end-block C-k p ws-print-block C-k q kill-emacs C-k r insert-file C-k s save-some-buffers C-k t ws-mark-word C-k u ws-exdent-block C-k C-u keyboard-quit C-k v ws-move-block C-k w ws-write-block C-k x kill-emacs C-k y ws-delete-block C-o c wordstar-center-line C-o b switch-to-buffer C-o j justify-current-line C-o k kill-buffer C-o l list-buffers C-o m auto-fill-mode C-o r set-fill-column C-o C-u keyboard-quit C-o wd delete-other-windows C-o wh split-window-horizontally C-o wo other-window C-o wv split-window-vertically C-q 0 ws-find-marker-0 C-q 1 ws-find-marker-1 C-q 2 ws-find-marker-2 C-q 3 ws-find-marker-3 C-q 4 ws-find-marker-4 C-q 5 ws-find-marker-5 C-q 6 ws-find-marker-6 C-q 7 ws-find-marker-7 C-q 8 ws-find-marker-8 C-q 9 ws-find-marker-9 C-q a ws-query-replace C-q b ws-to-block-begin C-q c end-of-buffer C-q d end-of-line C-q f ws-search C-q k ws-to-block-end C-q l ws-undo C-q p ws-last-cursorp C-q r beginning-of-buffer C-q C-u keyboard-quit C-q w ws-last-error C-q y ws-kill-eol C-q DEL ws-kill-bol  (defalias 'wordstar-mode #[nil "\303 \210\304!\210\305\306\307\310!\207" [wordstar-mode-map mode-name major-mode kill-all-local-variables use-local-map "WordStar" wordstar-mode run-hooks wordstar-mode-hook] 2 (#$ . 5291) nil]) #@96 Center each line in the paragraph at or after point. See `wordstar-center-line' for more info. (defalias 'wordstar-center-paragraph #[nil "\212\301 \210n\204\f\302\303!\210`\304 \210\305`\"*\207" [end forward-paragraph newline 1 backward-paragraph wordstar-center-region] 3 (#$ . 7968) nil]) #@84 Center each line starting in the region. See `wordstar-center-line' for more info. (defalias 'wordstar-center-region #[(from to) " V\203 \n)\212\214 }\210b\210m?\205$\303 \210\304y\210\202*\207" [from to tem wordstar-center-line 1] 2 (#$ . 8269) "r"]) #@181 Center the line point is on, within the width specified by `fill-column'. This means adjusting the indentation to match the distance between the end of the text and `fill-column'. (defalias 'wordstar-center-line #[nil "\212\303\304 \210\305 \210\303\210\305 \210i\304 \210 \n ZZ\306\245\\j*\207" [line-length left-margin fill-column nil beginning-of-line delete-horizontal-space 2] 3 (#$ . 8540) nil]) #@23 Scroll one line down. (defalias 'scroll-down-line #[nil "\300\301!\207" [scroll-down 1] 2 (#$ . 8952) nil]) #@21 Scroll one line up. (defalias 'scroll-up-line #[nil "\300\301!\207" [scroll-up 1] 2 (#$ . 9066) nil]) #@37 Position marker 0 in WordStar mode. (defvar ws-marker-0 nil (#$ . 9174)) #@37 Position marker 1 in WordStar mode. (defvar ws-marker-1 nil (#$ . 9253)) #@37 Position marker 2 in WordStar mode. (defvar ws-marker-2 nil (#$ . 9332)) #@37 Position marker 3 in WordStar mode. (defvar ws-marker-3 nil (#$ . 9411)) #@37 Position marker 4 in WordStar mode. (defvar ws-marker-4 nil (#$ . 9490)) #@37 Position marker 5 in WordStar mode. (defvar ws-marker-5 nil (#$ . 9569)) #@37 Position marker 6 in WordStar mode. (defvar ws-marker-6 nil (#$ . 9648)) #@37 Position marker 7 in WordStar mode. (defvar ws-marker-7 nil (#$ . 9727)) #@37 Position marker 8 in WordStar mode. (defvar ws-marker-8 nil (#$ . 9806)) #@37 Position marker 9 in WordStar mode. (defvar ws-marker-9 nil (#$ . 9885)) #@40 Beginning of "Block" in WordStar mode. (defvar ws-block-begin-marker nil (#$ . 9964)) #@34 End of "Block" in WordStar mode. (defvar ws-block-end-marker nil (#$ . 10056)) #@41 String of last search in WordStar mode. (defvar ws-search-string nil (#$ . 10141)) #@75 Direction of last search in WordStar mode. T if forward, NIL if backward. (defvar ws-search-direction t (#$ . 10230)) #@52 Position before last search etc. in WordStar mode. (defvar ws-last-cursorposition nil (#$ . 10354)) #@56 Last error message issued by a WordStar mode function. (defvar ws-last-errormessage nil (#$ . 10460)) #@118 Report error of a WordStar special function. Error message is saved in ws-last-errormessage for recovery with C-q w. (defalias 'ws-error #[(string) "\302!\207" [string ws-last-errormessage error] 2 (#$ . 10569)]) #@60 In WordStar mode: Set marker 0 to current cursor position. (defalias 'ws-set-marker-0 #[nil "\301 \302\303!\207" [ws-marker-0 point-marker message "Marker 0 set"] 2 (#$ . 10791) nil]) #@60 In WordStar mode: Set marker 1 to current cursor position. (defalias 'ws-set-marker-1 #[nil "\301 \302\303!\207" [ws-marker-1 point-marker message "Marker 1 set"] 2 (#$ . 10982) nil]) #@60 In WordStar mode: Set marker 2 to current cursor position. (defalias 'ws-set-marker-2 #[nil "\301 \302\303!\207" [ws-marker-2 point-marker message "Marker 2 set"] 2 (#$ . 11173) nil]) #@60 In WordStar mode: Set marker 3 to current cursor position. (defalias 'ws-set-marker-3 #[nil "\301 \302\303!\207" [ws-marker-3 point-marker message "Marker 3 set"] 2 (#$ . 11364) nil]) #@60 In WordStar mode: Set marker 4 to current cursor position. (defalias 'ws-set-marker-4 #[nil "\301 \302\303!\207" [ws-marker-4 point-marker message "Marker 4 set"] 2 (#$ . 11555) nil]) #@60 In WordStar mode: Set marker 5 to current cursor position. (defalias 'ws-set-marker-5 #[nil "\301 \302\303!\207" [ws-marker-5 point-marker message "Marker 5 set"] 2 (#$ . 11746) nil]) #@60 In WordStar mode: Set marker 6 to current cursor position. (defalias 'ws-set-marker-6 #[nil "\301 \302\303!\207" [ws-marker-6 point-marker message "Marker 6 set"] 2 (#$ . 11937) nil]) #@60 In WordStar mode: Set marker 7 to current cursor position. (defalias 'ws-set-marker-7 #[nil "\301 \302\303!\207" [ws-marker-7 point-marker message "Marker 7 set"] 2 (#$ . 12128) nil]) #@60 In WordStar mode: Set marker 8 to current cursor position. (defalias 'ws-set-marker-8 #[nil "\301 \302\303!\207" [ws-marker-8 point-marker message "Marker 8 set"] 2 (#$ . 12319) nil]) #@60 In WordStar mode: Set marker 9 to current cursor position. (defalias 'ws-set-marker-9 #[nil "\301 \302\303!\207" [ws-marker-9 point-marker message "Marker 9 set"] 2 (#$ . 12510) nil]) #@70 In WordStar mode: Set block begin marker to current cursor position. (defalias 'ws-begin-block #[nil "\301 \302\303!\207" [ws-block-begin-marker point-marker message "Block begin marker set"] 2 (#$ . 12701) nil]) #@39 In WordStar mode: Show block markers. (defalias 'ws-show-markers #[nil "\204 \203>\212\203b\210\302\303!\210\304\305!\210\202#\302\306!\210\304\305!\210 \2035 b\210\302\307!\210\304\305!\210\2029\302\310!\210\302\311!)\207\302\312!\207" [ws-block-begin-marker ws-block-end-marker message "Block begin marker" sit-for 2 "Block begin marker not set" "Block end marker" "Block end marker not set" "" "Block markers not set"] 2 (#$ . 12921) nil]) #@55 In WordStar mode: Indent block (not yet implemented). (defalias 'ws-indent-block #[nil "\300\301!\207" [ws-error "Indent block not yet implemented"] 2 (#$ . 13381) nil]) #@68 In WordStar mode: Set block end marker to current cursor position. (defalias 'ws-end-block #[nil "\301 \302\303!\207" [ws-block-end-marker point-marker message "Block end marker set"] 2 (#$ . 13557) nil]) #@32 In WordStar mode: Print block. (defalias 'ws-print-block #[nil "\300\301!\207" [message "Don't do this. Write block to a file (C-k w) and print this file."] 2 (#$ . 13769) nil]) #@47 In WordStar mode: Mark current word as block. (defalias 'ws-mark-word #[nil "\212\300v\210\301\300!\210\302 \210\303v\210\301\300!\210\304 )\207" [1 sit-for ws-end-block -1 ws-begin-block] 2 (#$ . 13953) nil]) #@43 I don't know what this (C-k u) should do. (defalias 'ws-exdent-block #[nil "\300\301!\207" [ws-error "This won't be done -- not yet implemented."] 2 (#$ . 14169) nil]) #@58 In WordStar mode: Move block to current cursor position. (defalias 'ws-move-block #[nil "\203\" \203\"\302 \"\210\303 \210\212\304 b\210\305 \306 b\210\305 \211)\207\307\203+\310\2024 \2033\311\2024\312!\207" [ws-block-begin-marker ws-block-end-marker kill-region yank region-beginning point-marker region-end ws-error "Block end marker not set" "Block begin marker not set" "Block markers not set"] 3 (#$ . 14343) nil]) #@40 In WordStar mode: Write block to file. (defalias 'ws-write-block #[nil "\203 \203\303\304!\305 \n#)\207\306\203\307\202% \203$\310\202%\311!\207" [ws-block-begin-marker ws-block-end-marker filename read-file-name "Write block to file: " write-region ws-error "Block end marker not set" "Block begin marker not set" "Block markers not set"] 4 (#$ . 14781) nil]) #@33 In WordStar mode: Delete block. (defalias 'ws-delete-block #[nil "\203 \203\302 \"\210\303\303\211\207\304\203\305\202% \203$\306\202%\307!\207" [ws-block-begin-marker ws-block-end-marker kill-region nil ws-error "Block end marker not set" "Block begin marker not set" "Block markers not set"] 3 (#$ . 15161) nil]) #@35 In WordStar mode: Go to marker 0. (defalias 'ws-find-marker-0 #[nil "\203\n\302 b\207\303\304!\207" [ws-marker-0 ws-last-cursorposition point-marker ws-error "Marker 0 not set"] 2 (#$ . 15496) nil]) #@35 In WordStar mode: Go to marker 1. (defalias 'ws-find-marker-1 #[nil "\203\n\302 b\207\303\304!\207" [ws-marker-1 ws-last-cursorposition point-marker ws-error "Marker 1 not set"] 2 (#$ . 15705) nil]) #@35 In WordStar mode: Go to marker 2. (defalias 'ws-find-marker-2 #[nil "\203\n\302 b\207\303\304!\207" [ws-marker-2 ws-last-cursorposition point-marker ws-error "Marker 2 not set"] 2 (#$ . 15914) nil]) #@35 In WordStar mode: Go to marker 3. (defalias 'ws-find-marker-3 #[nil "\203\n\302 b\207\303\304!\207" [ws-marker-3 ws-last-cursorposition point-marker ws-error "Marker 3 not set"] 2 (#$ . 16123) nil]) #@35 In WordStar mode: Go to marker 4. (defalias 'ws-find-marker-4 #[nil "\203\n\302 b\207\303\304!\207" [ws-marker-4 ws-last-cursorposition point-marker ws-error "Marker 4 not set"] 2 (#$ . 16332) nil]) #@35 In WordStar mode: Go to marker 5. (defalias 'ws-find-marker-5 #[nil "\203\n\302 b\207\303\304!\207" [ws-marker-5 ws-last-cursorposition point-marker ws-error "Marker 5 not set"] 2 (#$ . 16541) nil]) #@35 In WordStar mode: Go to marker 6. (defalias 'ws-find-marker-6 #[nil "\203\n\302 b\207\303\304!\207" [ws-marker-6 ws-last-cursorposition point-marker ws-error "Marker 6 not set"] 2 (#$ . 16750) nil]) #@35 In WordStar mode: Go to marker 7. (defalias 'ws-find-marker-7 #[nil "\203\n\302 b\207\303\304!\207" [ws-marker-7 ws-last-cursorposition point-marker ws-error "Marker 7 not set"] 2 (#$ . 16959) nil]) #@35 In WordStar mode: Go to marker 8. (defalias 'ws-find-marker-8 #[nil "\203\n\302 b\207\303\304!\207" [ws-marker-8 ws-last-cursorposition point-marker ws-error "Marker 8 not set"] 2 (#$ . 17168) nil]) #@35 In WordStar mode: Go to marker 9. (defalias 'ws-find-marker-9 #[nil "\203\n\302 b\207\303\304!\207" [ws-marker-9 ws-last-cursorposition point-marker ws-error "Marker 9 not set"] 2 (#$ . 17377) nil]) #@45 In WordStar mode: Go to block begin marker. (defalias 'ws-goto-block-begin #[nil "\203\n\302 b\207\303\304!\207" [ws-block-begin-marker ws-last-cursorposition point-marker ws-error "Block begin marker not set"] 2 (#$ . 17586) nil]) #@66 In WordStar mode: Search string, remember string for repetition. (defalias 'ws-search #[(string) "\305\306!\210\307 \211\226\310\232\203 \311\312 \313 !\2021\226\314\232\203/ \315\312 \316 !\2021\317 )\207" [direction string ws-search-string ws-search-direction ws-last-cursorposition message "Forward (f) or backward (b)" read-char 70 t point-marker search-forward 66 nil search-backward keyboard-quit] 3 (#$ . 17828) "sSearch for: "]) #@43 In WordStar mode: Go to block end marker. (defalias 'ws-goto-block-end #[nil "\203\n\302 b\207\303\304!\207" [ws-block-end-marker ws-last-cursorposition point-marker ws-error "Block end marker not set"] 2 (#$ . 18284) nil]) #@69 In WordStar mode: Undo and give message about undoing more changes. (defalias 'ws-undo #[nil "\300 \210\301\302!\207" [undo message "Repeat C-q l to undo more changes."] 2 (#$ . 18518) nil]) #@20 In WordStar mode:  (defalias 'ws-goto-last-cursorposition #[nil "\203\n\301 \211b\207\302\303!\207" [ws-last-cursorposition point-marker ws-error "No last cursor position available."] 3 (#$ . 18715) nil]) #@112 In WordStar mode: repeat last error message. This will only work for errors raised by WordStar mode functions. (defalias 'ws-last-error #[nil "\203\301!\207\301\302!\207" [ws-last-errormessage message "No WordStar error yet."] 2 (#$ . 18930) nil]) #@72 In WordStar mode: Kill to end of line (like WordStar, not like Emacs). (defalias 'ws-kill-eol #[nil "`\301\210\302`\")\207" [p nil kill-region] 3 (#$ . 19188) nil]) #@79 In WordStar mode: Kill to beginning of line (like WordStar, not like Emacs). (defalias 'ws-kill-bol #[nil "`\301 \210\302`\")\207" [p beginning-of-line kill-region] 3 (#$ . 19362) nil]) #@25 Kill the complete line. (defalias 'kill-complete-line #[nil "\301 \210m\203 \302\303!\210`\304y\210\305`\")\207" [beg beginning-of-line error "End of buffer" 1 kill-region] 3 (#$ . 19557) nil]) #@39 In WordStar mode: Repeat last search. (defalias 'ws-repeat-search #[nil "\303  \203\n\203\304 !\207\305 !\207\306\307!\207" [ws-last-cursorposition ws-search-string ws-search-direction point-marker search-forward search-backward ws-error "No search to repeat"] 2 (#$ . 19760) nil]) #@66 In WordStar mode: Search string, remember string for repetition. (defalias 'ws-query-replace #[(from to) "\305\306 \307\f\"\207" [from ws-search-string ws-search-direction ws-last-cursorposition to t point-marker query-replace] 3 (#$ . 20053) "sReplace: \nsWith: "]) #@58 In WordStar mode: Copy block to current cursor position. (defalias 'ws-copy-block #[nil "\203\" \203\"\302 \"\210\303 \210\212\304 b\210\305 \306 b\210\305 \211)\207\307\203+\310\2024 \2033\311\2024\312!\207" [ws-block-begin-marker ws-block-end-marker copy-region-as-kill yank region-beginning point-marker region-end ws-error "Block end marker not set" "Block begin marker not set" "Block markers not set"] 3 (#$ . 20331) nil]) (provide 'ws-mode)