home *** CD-ROM | disk | FTP | other *** search
- ; SCAN.CMD: MicroEMACS macro for scanning
- ; SPELL.LST from MicroSPELL 1.0
- ; (C)opyright 1987 by Daniel M Lawrence
-
- ;***** Load up the needed procedures *****
-
- store-procedure getnext
- ; Go to the next entry in the spell list
-
- *next
- set %line &add #%slist 1
- set %col #%slist
-
- ; user file name?
- !if &equ %line -2
- set %userlist %col
- !goto next
- !endif
-
- ; if we are all done...
- !if &equ %line -1
- set %done TRUE
- !return
- !endif
-
- ; if we are starting a new file.....
- !if &equ %line 0
- set %cfile %col
- write-message &cat &cat "[Reading " %cfile "]"
- find-file %cfile
- set %cbuffer $cbufname
- set %cfnum &add %cfnum 1
- !goto next
- !endif
-
- ;reset column offset if needed
- !if ¬ &equ %lastline %line
- set %offset 0
- !endif
- set %lastline %line
-
- ;go to it!!!
- set $curline %line
- &add %col %offset forward-character
- set %cwnum &add %cwnum 1
- !endm
-
- store-procedure doopt
- ;Macro for asking and resolving options
-
- ;grab the word
- 0 delete-next-word
- yank
- set %word $kill
- !force previous-word
-
- ;next check to see if this should be ignored....
- select-buffer "[ignore]
- beginning-of-file
- !force search-forward &cat &cat "~n" %word "~n"
- set %sstatus $status
- select-buffer %cbuffer
- !if &seq %sstatus TRUE
- !return
- !endif
-
- ;see if this word has been replaced in the past
- select-buffer "[source]
- beginning-of-file
- !force search-forward &cat &cat "~n" %word "~n"
- set %sstatus $status
-
- !if &seq %sstatus TRUE
- set %repline &sub $curline 2
- select-buffer "[replace]"
- set $curline %repline
- set %defrep #"[replace]"
- select-buffer %cbuffer
- set %defflag "*"
- ;check to see if this is a global replacement
- !if &equ &asc %defrep 19
- set %defrep &mid %defrep 2 255
- !goto globalrep
- !endif
- !else
- select-buffer %cbuffer
- set %defrep ""
- set %defflag ""
- !endif
-
- *askopt
- run upstat ;update the dialog window
- clear-message-line
- 1 next-window ;skip to the dialog window
- set $curline 3 ;update the current word & default
- 3 redraw-display
- set $curcol 21
- 20 delete-next-character
- &sub 20 &len %word insert-space
- insert-string %word
- set $curline 4
- set $curcol 21
- 20 delete-next-character
- &sub 20 &len %defrep insert-space
- insert-string %defrep
-
- set $curline 6
- 15 delete-next-character
- insert-string " Option: "
- beginning-of-file
- 2 next-window
- update-screen
- set %resp >key
- 1 next-window
- set $curline 6
- 15 delete-next-character
- 15 insert-space
- 2 next-window
- update-screen
-
- ;skip just this occurence....
- !if &seq %resp "s"
- !return
- !endif
-
- ;Ignore this mismatch and all like it
- !if &seq %resp "i"
- select-buffer "[ignore]"
- end-of-file
- insert-string %word
- select-buffer %cbuffer
- !return
- !endif
-
- ;Replace this string with the default string
- !if &seq %resp "d"
- *globalrep
- 0 delete-next-word
- insert-string %defrep
- update-screen
- set %offset &add &sub %offset &len %word &len %repstring
- !return
- !endif
-
- ;Replace this string with another.....
- !if &or &seq %resp "c" &seq %resp "g"
- set $discmd TRUE
- set %repstring ""
- !if &seq %resp "g"
- set %repstring "Globally "
- !endif
- !if &seq %defflag ""
- set %repstring @&cat %repstring "Replace with: "
- !else
- set %repstring @&cat &cat &cat %repstring "Replace with[" %defrep "]: "
- !if &seq %repstring ""
- set %repstring %defrep
- !endif
- !endif
- set $discmd FALSE
- 0 delete-next-word
- insert-string %repstring
- update-screen
- set %offset &add &sub %offset &len %word &len %repstring
- !if &seq %defflag ""
- select-buffer "[source]"
- end-of-file
- insert-string %word
- select-buffer "[replace]"
- end-of-file
- ;if it is a global replace, add this marker
- !if &seq %resp "g"
- insert-string &chr 19
- !endif
- insert-string %repstring
- select-buffer %cbuffer
- !endif
- !return
- !endif
-
- ;if we are adding this word and it is not to upper case,
- ;...lower case it
- !if &seq %resp "a"
- set %resp "u"
- set %word &lower %word
- !endif
-
- ;Add this word to a user dictionary and ignore it
- !if &seq %resp "u"
- select-buffer "[ignore]"
- end-of-file
- insert-string %word
- select-buffer "[add]"
- end-of-file
- insert-string %word
- select-buffer %cbuffer
- set %addflag TRUE
- !return
- !endif
-
- ;Abort the spell check run
- !if &or &seq %resp "" &seq %resp "q"
- set %done ABORT
- !return
- !endif
-
- write-message ""
- !goto askopt
- !endm
-
- store-procedure cleanup
- ; Add the requested user words to a user dictionary
-
- !if &seq %addflag TRUE
- !if &seq %userlist ""
- set %userlist @"User dictionary name: "
- !endif
- write-message "[Updating User Dictionary]"
- !force find-file %userlist
- set %bdict $cbufname
- select-buffer "[add]"
- beginning-of-file
- set-mark
- end-of-file
- kill-region
- select-buffer %bdict
- end-of-file
- yank
- delete-blank-lines
- save-file
- !endif
-
- select-buffer "[ignore]"
- unmark-buffer
- select-buffer "[add]"
- unmark-buffer
- select-buffer "[source]"
- unmark-buffer
- select-buffer "[replace]"
- unmark-buffer
- select-buffer "Dialog Window"
- unmark-buffer
-
- select-buffer %cbuffer
- beginning-of-file
- update-screen
- !endm
-
- store-procedure upstat
- ; update the dialog window stats
-
- 1 next-window
- beginning-of-file
- set $curcol 44
- &len %cfnum delete-previous-character
- insert-string %cfnum
- set $curcol 48
- &len %tfnum delete-previous-character
- insert-string %tfnum
- set $curcol 61
- &len %cwnum delete-previous-character
- insert-string %cwnum
- set $curcol 67
- &len %twnum delete-previous-character
- insert-string %twnum
- next-window
- !endm
-
- ; init for spell check run
-
- add-global-mode "blue"
- add-mode "blue"
-
- !force find-file "spell.lst"
- !if ¬ &seq $status TRUE
- write-message "[No file to scan]~n"
- exit-emacs
- !endif
- write-message "[Preparing to Scan]"
-
- select-buffer "[source]"
- unmark-buffer
- select-buffer "[replace]"
- delete-buffer "[source]"
- unmark-buffer
- select-buffer "[add]"
- delete-buffer "[replace]"
- unmark-buffer
- select-buffer "[ignore]"
- delete-buffer "[add]"
- unmark-buffer
- select-buffer "[add]"
- delete-buffer "[ignore]"
- select-buffer "[source]"
- newline
- select-buffer "[replace]"
- select-buffer "[ignore]"
- newline
-
- set $discmd FALSE
- set %slist "spell.lst"
- set %userlist ""
- set %done FALSE
- set %cfile ""
- set %cbuffer ""
- set %lastline -1
- set %addflag FALSE
- delete-other-windows
- select-buffer "spell.lst"
- beginning-of-file
-
- ;init data for the dialog window
- set %cfnum 0
- set %tfnum 0
- *nxtfile
- !force search-forward "-1~n"
- !if &seq $status TRUE
- set %tfnum &add %tfnum 1
- !goto nxtfile
- !endif
- set %cwnum 0
- end-of-file
- set %twnum &sub &sub &div &sub $curline 1 2 %tfnum 1
- beginning-of-file
-
- ;set up the dialog window
- 1 split-current-window
- 7 resize-window
- add-mode "red"
- select-buffer "Dialog Window"
- beginning-of-file
- set-mark
- end-of-file
- kill-region
- insert-string "MicroSPELL 1.0 spell scan File / Word / ~n~n"
- insert-string " Suspect word: (S)kip (C)hange word~n"
- insert-string "Default Replacement: (I)gnore (D)efault replace~n"
- insert-string " (A)dd word (G)lobal change~n"
- insert-string " Add word as (U)pper case (Q)uit"
- beginning-of-file
- next-window
- clear-message-line
-
- *nxtword
-
- run getnext
- !if &seq %done TRUE
- !goto alldone
- !endif
- run doopt
- !if &seq %done FALSE
- !goto nxtword
- !endif
-
- *alldone
-
- !if &seq %done "ABORT"
- ;edit up the spell.lst file so we could continue..
- select-buffer "spell.lst"
- 2 previous-line
- set-mark
- beginning-of-file
- kill-region
- insert-string &cat &cat "-1~n" %cfile "~n"
- save-file
- select-buffer %cbuffer
- run cleanup
- write-message "[Spell check ABORTED]"
- !if ¬ &seq %rcspell TRUE
- set $discmd TRUE
- save-file
- update-screen
- exit-emacs
- !endif
- !else
- run cleanup
- ;MACHINE DEPENDANT!!!!!!!!!!!!
- shell-command "del spell.lst"
- write-message "[Spell check run complete]~n"
- set $discmd TRUE
- !if ¬ &seq %rcspell TRUE
- quick-exit
- !endif
- !endif
- set $discmd TRUE
- !return
-