home *** CD-ROM | disk | FTP | other *** search
- Last revision: May 15, 1986 at 16:08
-
- file: BRIEF-TS.HOW - instructions for adding time/date stamps to Brief
- by: H.M. Van Tassell - a no rights reserved public Domain donation...
-
- In the BRIEF Editor version 1.31 from the UnderWare Inc. (gosh, sure
- wish I had thought of that neat name!), a function was added that will
- get the DOS system date and time. I thought it would be nice to time
- stamp certain files such as "C", Pascal, dBASE etc. The code below
- when added to the files STARTUP.M and SYSTEM.M and then recompiled by
- using >CM STARTUP will make a new Brief STARTUP.CM that automatically
- adds a time stamp with the proper remark symbols for the file of type
- ".C & .H", ".PRG", ".PAS", ".M", ".ASM", or ".PRG". In other files just
- hit the F10 key and invoke the "today" macro to get a time stamp at the
- then current cursor position.
-
- If the words "Last revision:" are on the first line of a file it will
- be updated by the "write_it" macro in SYSTEM.M.
-
- *********************>>>>> changes to file STARTUP.M <<<<< ***************
-
- >>>>>> Look for this in the STARTUP.M file as your position finder <<<<<<
- (extended) <----
- ) <----
- ) <----
- >>>> This next code replaces all the code to the end of the file STARTUP.M <<<<<
-
- ;** This next macro will either over-write or insert a
- ;** Last revision: date & time on the first line of a buffer.
- ;** It is the callers duty to put the comment symbol in front
- ;** of the new line.
-
- (macro today
- (
- (string month_string rev_msg rev_time)
- (int year month day hours minutes)
- (date year month day month_string)
- (time hours minutes)
- (sprintf rev_msg " Last revision: %s %d, %d" month_string day year)
- (if (< minutes 10)
- (sprintf rev_time " at %d:0%d" hours minutes)
- ;else
- (sprintf rev_time " at %d:%d" hours minutes)
- )
- (+= rev_msg rev_time)
- (insert rev_msg)
- )
- )
-
- (macro no_date
- (
- (int found)
- (move_abs 1 1)
- (search_string "Last revision:" (read) found)
- (returns (! found))
- )
- )
-
-
- ;** The following macros are called when files with their names as
- ;** extensions are read into buffers.
-
- ;** This macro, which is called when a file with a .c extension is read
- ;** into a buffer, sets the tabs.
- ;**
- ;** Note that the (tabs) macro primitive replicates the distance of the
- ;** last tab stop until the end of the line.
-
-
- (macro .c
- (
- (if (no_date)
- (
- (insert "\n")
- (move_abs 1 1)
- (insert "/* ")
- (today)
- (insert " */\n")
- )
- )
- (tabs 4 7)
- )
- )
-
- (macro .h
- (.c) ;** same as a c file.
- )
-
- (macro .m
- (
- (if (no_date)
- (
- (move_abs 1 1)
- (insert "\;** ")
- (today)
- (insert "\n")
- )
- )
- (tabs 4 7)
- )
- )
-
- (macro .asm
- (
- (if (no_date)
- (
- (insert "\n")
- (move_abs 1 1)
- (insert "\; ")
- (today)
- (insert "\n")
- )
- )
- (tabs 9 17)
- )
- )
-
- (macro .prg
- (
- (if (no_date)
- (
- (insert "\n")
- (move_abs 1 1)
- (insert "** ")
- (today)
- (insert "\n")
- )
- )
- (tabs 3 5 7 9 11 13 15) ;** Tabs for dBase III source code
- )
- )
-
- (macro .pas
- (
- (if (no_date)
- (
- (insert "\n")
- (move_abs 1 1)
- (insert "(* ")
- (today)
- (insert " *)\n")
- )
- )
- (tabs 4 7)
- )
- )
-
- ;**
- ;** The next macro is called if the extension of the file does not match
- ;** any of the previous macros (".h", ".c", ".m", ".asm", ".prg", ".pas").
- ;**
-
- (macro default
- (tabs 9 17) ;** By default, use assembler-style tabs.
- )
- ;[eof] STARTUP.M
-
- *********************>>>> end of changes to file SYSTEM.M <<<<<*************
-
- *************************>>>>> Changes to file SYSTEM.M <<<<<****************
-
- >>>>> Replace the write_it macro in the file SYSTEM.M with this code <<<<<
-
- ;**
- ;** write_it:
- ;**
- ;** This macro decides what to do when Alt-w is pressed -- if a block
- ;** is marked, then the "write_block" primitive is called. Otherwise,
- ;** write_buffer is called to write out the entire buffer.
- ;**
-
- (macro write_it
- (
- (int old_msg_level)
-
- (= old_msg_level (inq_msg_level))
- (set_msg_level 0)
-
- (if (inq_marked)
- (write_block)
- ;else
- (
- (if (inq_modified)
- (
- (int c_symbol p_symbol c_line c_col)
- (inq_position c_line c_col)
- (if (! (no_date)) ;** if there is a time stamp
- (
- (move_abs 1 1)
- (search_string "/*" (read 2) c_symbol)
- (search_string "(*" (read 2) p_symbol)
- (move_abs 1 4)
- (delete_to_eol)
- (today) ;** update the time stamp
- (if c_symbol (insert " */"))
- (if p_symbol (insert " *)"))
- )
- )
- (move_abs c_line c_col)
- )
- )
- (write_buffer)
- )
- )
- (set_msg_level old_msg_level)
- )
- )
- ******************>>>> end of changes to file SYSTEM.M <<<<<**************
- >>>> Use this as your position finder so you know where write_it ends <<<<
- ;** <----
- ;** next_word: <----
- ;** <----
- ;** Locates the next word in the file using a regular expression. If
- ;** there are no following words in the file, the cursor does not move.
- ;** <----
-
- [ end of file BRIEF-TS.HOW ]
-
-
-
-