johnm@trsvax.UUCP (02/18/89)
I was wondering if anybody had MicroEmacs macros that would automatically process the error output of either the Turbo or Microsoft C compilers? Somebody posted their tags macro for MicroEmacs not to long ago and that has proved to be very usefull. John Munsch
schro@nixpbe.uucp (02/22/89)
hello, John Munsch wrote: > I was wondering if anybody had MicroEmacs macros that would automatically > process the error output of either the Turbo or Microsoft C compilers? this is errlin.cmd . it has been tested with microemacs 3.9e on output files from ms-c 4.0, ms-c 5.0, masm 4.0 and masm 5.1 . i don't have turbo . 1. execute-file errlin.cmd 2. enter the output file containing error messages 3. hit alt-f3 to go to the source-file and -line of the first/next error 4. hit alt-f3 to go back to output file 5. repeat step 3 and 4 for next error hope this helps . django #--------------------------------CUT HERE------------------------------------- #! /bin/sh # # This is a shell archive. Save this into a file, edit it # and delete all lines above this comment. Then give this # file to sh by executing the command "sh file". The files # will be extracted into the current directory owned by # you with default permissions. # # The files contained herein are: # # -rw------- 1 schro pws 853 Feb 22 16:23 errlin.cmd # echo 'x - errlin.cmd' if test -f errlin.cmd; then echo 'shar: not overwriting errlin.cmd'; else sed 's/^X//' << '________This_Is_The_END________' > errlin.cmd X; Find-Error-Line Macro for MicroEMACS 3.9e and higher X; Author: W.F.Schroeder uunet!mcvax!unido!nixpbe!schroeder.pad X; Date: 22 Feb. 1989 X; X; Goes to file and line corresponding to error or warning in output file X; Tested with MS-C 4.0, MS-C 5.0, MASM 4.0 and MASM 5.1 X; X32 store-macro X !if %back2log X select-buffer %logbuf X set %back2log 0 X !else X set %logbuf $cbufname X add-mode "MAGIC" X search-forward "\.[a-z][a-z]*([1-9][0-9]*) *: *[ew]" X search-reverse "\." X previous-word X set-mark X search-forward "(" X backward-character X copy-region X set %srcfile $kill X search-forward "(" X set-mark X search-forward ")" X backward-character X copy-region X set %line $line X find-file %srcfile X $kill goto-line X write-message %line X set %back2log 1 X !endif X!endm X Xset %back2log 0 Xbind-to-key execute-macro-32 FNj ;ALT-F3 Xclear-message-line ________This_Is_The_END________ if test `wc -l < errlin.cmd` -ne 38; then echo 'shar: errlin.cmd was damaged during transit (should have been 38 bytes)' fi fi ; : end of overwriting check exit 0 +---------------+------------------------+-----------------------------+ | W.F.Schroeder | Workstation Software | Paper-: Nixdorf Computer AG | +---------------+------------------------+ mail : Dep. PE PC-SOFTWARE | | UUCP: {uunet,mcvax}!unido!nixpbe!schro | Pontanusstr. 55 | | Phone: nat-5251-14-6694 | D-4790 Paderborn | | AMPR: DL5YEC @ DB0BQ IP:44.130.16.15 | Fed. Rep of Germany | +----------------------------------------+-----------------------------+
johnm@trsvax.UUCP (02/25/89)
Apparently no one has already done macros to handle MSC and Turbo C error
output (yeah right...) so I'll have to do my own. In the mean time I did
get a couple of requests for the previously posted ctags macro. I've modified
it so that it will ask for a tag name to find if you are not actually sitting
on a function name.
The original author mentioned that ESC-tab makes a good binding for it.
John Munsch
========================= chew here ========================
; Find-Tags Macro for uEMACS 3.8i and higher ....
; simply add to your '.emacsrc'-file
; Author: Reimer Mellin
; Date: 13.apr.88
; You can copy, modify, use, abuse this stuff as you wish
;
; If you use this Macro please send a small contribution to GreenPeace
; or to some organisation against famine in the third world !!!!!!!!
; Minor-mods: John Munsch
; Date: 2.feb.89
22 store-macro
!if ¬ &band $cmode 2
!return
!endif ; only allowed in CMODE
set $discmd FALSE
set %tmp01 $cwline ; remember line
add-mode "magic"
set-mark
!force search-forward "[^0-9A-Za-z_]" ; search for end of identifier
delete-mode "magic"
backward-character
copy-region ; get identifier
set %tagstr $kill
!if &seq %tagstr ""
set %tagstr @"Tag: "
!endif
!if &seq %tagstr ""
set %var1 "no identifier specified"
!goto error2
!endif
set %var1 &sub $wline $cwline
%var1 next-line ; go to last line of window
split-current-window ; so the new window will be the lower one
previous-window
%var1 previous-line
exchange-point-and-mark
set %tmp02 %tmp01
!if &gre %tmp02 $wline
set %tmp02 $wline
!endif
!if &les $cwline %tmp02
&sub %tmp02 $cwline move-window-up
!endif ; complicate calculation for restoring the
; old context
next-window
!if &exist TAGS ; the TAGS-file ...
find-file TAGS
!else
set %var1 "tags-file not found"
previous-window
!goto error1
!endif
add-mode "exact" ; for speed ....
beginning-of-file ; rewind tags-file
!force search-forward %tagstr
!if ¬ $status
set %var1 &cat %tagstr " not in tags-file"
*error1
!force delete-window
*error2
write-message &cat "Fatal error: " %var1
set $discmd TRUE
!return
!endif
forward-character ; we were at end of identifier ...
set-mark ; extract filename ..
search-forward &chr 9
backward-character
copy-region
set %var1 $kill
3 forward-character ; extract pattern without '^' and '$' !!
set-mark
end-of-line
2 backward-character
copy-region
set %pattern $kill
!force find-file %var1 ; look for filename
!if ¬ $status
set %var1 &cat %var1 " not found"
!goto error1
!endif
beginning-of-file
add-mode "exact"
!force search-forward %pattern
!if ¬ $status
set %var1 &cat %var1 " is not as I remember (run ctags again)"
!goto error1
!endif
delete-mode "exact"
beginning-of-line ; found it ....
set-mark
set $discmd TRUE
!endm ;DONE