% % $Id: hnf.sl,v 1.1.1.1 2000/12/30 08:16:28 terada Exp $ % % Author: Yohei Terada % Original file : html.sl % % Original Author : Raikanta Sahu, rsahu@mail.unm.edu % Substantial additions by Jim Knoble. % Modified by John E. Davis for incorporation into JED. %% %% Modified by Michael D Johnson to conform with the standards recommendation %% on capitalization. % % some variables % variable diary_dir = "~/public_html/ordiary"; % % First define some useful functions % define hnf_insert_pair_around_region (lfttag, rgttag) { % make sure mark is before point; % 1 => push spot first check_region(1); % put tags on appropriate sides of region, % then return to where we were exchange_point_and_mark(); insert(lfttag); exchange_point_and_mark(); insert(rgttag); pop_spot(); pop_mark_0 (); } define hnf_insert_move (str) { variable len; variable beg, end; len = is_substr (str, "@"); !if (len) return; len--; if (markp ()) { beg = substr (str, 1, len); end = substr (str, len + 2, strlen (str)); hnf_insert_pair_around_region (beg, end); return; } push_spot (); insert (str); pop_spot (); go_right (len); del (); } define hnf_simple_insert (str) { hnf_insert_move (sprintf ("%s@/%s", str, str)); } define hnf_insert_with_newline (str) { hnf_insert_move (sprintf ("%s\n@\n/%s\n", str, str)); } define hnf_template () { hnf_insert_move ("BASHO @\nTENKI\nOK\n\nNEW") ; } % % Make comment % define hnf_comment () { hnf_insert_move ("! @ !"); } % % open today's hnf file % define hnf () { variable date, hour, year, month, day, test, file, fp; date = localtime (_time ()); hour = date.tm_hour; year = date.tm_year+1900; month = date.tm_mon + 1; day = date.tm_mday; % for 28 hours people if (hour < 4) { day -= 1; if (day == 0) { month -= 1; if (month == 0){ month = 12; year -= 1; } if (month==4 | month==6 | month==9 | month==11) day = 30; else if (month==1) { test = year / 4.0 - year / 4; if (test==0) day = 29; else day = 28; } else day = 31; } } if (month < 10) { if (day < 10) { file = sprintf ("%s/%d/d%d0%d0%d.hnf", diary_dir, year, year, month ,day); } else { file = sprintf ("%s/%d/d%d0%d%d.hnf", diary_dir, year, year, month ,day); } } else { if (day < 10) { file = sprintf ("%s/%d/d%d%d0%d.hnf", diary_dir, year, year, month ,day); } else { file = sprintf ("%s/%d/d%d%d%d.hnf", diary_dir, year, year, month ,day); } } fp = file_status (expand_filename (file)); if (fp == 0) { % open new hnf file fp = find_file (file); if (fp == NULL) verror ("%s could not be opened", file); hnf_template (); % insert default header } else if (fp == 1) { % open hnf file which already exits fp = find_file (file); if (fp == NULL) verror ("%s could not be opened", file); eob (); } else { verror ("%s could not be opend", file); } } % % print current time % define print_current_time () { variable date, hour, min, sec; date = localtime (_time ()); hour = date.tm_hour; min = date.tm_min; sec = date.tm_sec; % for 28 hours people if (hour < 4) hour += 24; insert (sprintf ("(%d時%d分%d秒に書きました)\n", hour, min, sec)); } % % save file and insert change time % define hnf_write_buffer () { variable file, dir, name, flags; hnf_insert_move ("~\n~\n@"); print_current_time; (file, dir, name, flags) = getbuf_info(); file = strcat (dir, file); () = write_buffer (file); } define hnf_read_key (hlp) { variable key; !if (input_pending (3)) flush (hlp); tolower (getkey ()); } define hnf_keymap_h () { variable bgm = "BGM @"; variable taiju = "TAIJU @"; variable taion = "TAION @"; switch (hnf_read_key ("Bgm taiJu taiOn Default")) { case 'b': bgm; } { case 'j': taiju; } { case 'o': taion; } { case 'd': hnf_template (); } { beep (); return; } hnf_insert_move (()); } define hnf_keymap_b () { variable new = "NEW @"; variable sub = "SUB @"; variable br = "~\n@"; switch (hnf_read_key ("New Sub Br")) { case 'n': new; } { case 's': sub; } { case 'b': br; } { beep (); return; } hnf_insert_move (()); } define hnf_keymap_e () { variable cat = "CAT @"; variable lnew = "LNEW @"; variable lsub = "LSUB @"; variable p = "\nP\n\n@\n\n/P"; switch (hnf_read_key ("Cat lNew lSub P")) { case 'c': cat; } { case 'n': lnew; } { case 's': lsub; } { case 'p': p; } { beep (); return; } hnf_insert_move (()); } define hnf_keymap_l () { variable link = "LINK @"; variable url = "URL @"; variable rlink = "RLINK @"; variable alias = "ALIAS @"; switch (hnf_read_key ("Link Url Rlink Alias")) { case 'l': link; } { case 'u': url; } { case 'r': rlink; } { case 'a': alias; } { beep (); return; } hnf_insert_move (()); } define hnf_keymap_d () { variable font = "FONT COLOR @"; variable strike = "STRIKE @"; variable lstrike = "LSTRIKE @"; variable strong = "STRONG @"; switch (hnf_read_key ("Font striKe Lstrike Strong")) { case 'f': font; } { case 'k': strike; } { case 'l': lstrike; } { case 's': strong; } { beep (); return; } hnf_insert_move (()); } define hnf_keymap_i () { variable img = "IMG @"; variable limg = "LIMG @"; variable mark = "MARK @"; switch (hnf_read_key ("Img Limg Mark")) { case 'i': img; } { case 'l': limg; } { case 'm': mark; } { beep (); return; } hnf_insert_move (()); } define hnf_keymap_s () { variable ul = "UL\nLI @\n/UL"; variable ol = "OL\nLI @\n/OL"; variable dl = "DL\nDT @\nDD\n/DT"; variable li = "LI @"; variable dt = "DT @\nDD"; switch (hnf_read_key ("Unorder Order Define Li dT")) { case 'u': ul; } { case 'o': ol; } { case 'd': dl; } { case 'l': li; } { case 't': dt; } { beep (); return; } hnf_insert_move (()); } define hnf_keymap_q () { variable pre = "PRE\n @\n/PRE"; variable cite = "CITE\n @\n/CITE"; variable fn = "FN\n @\n/FN"; switch (hnf_read_key ("Pre Cite Fn")) { case 'p': pre; } { case 'c': cite; } { case 'f': fn;} { beep (); return; } hnf_insert_move (()); } define hnf_keymap () { variable key = hnf_read_key ("Header Basic Extend Link Dress Images liSts Quote ?help"); switch (key) { case 'c': hnf_comment (); } { case 'h': hnf_keymap_h (); } { case 'b': hnf_keymap_b (); } { case 'e': hnf_keymap_e (); } { case 'l': hnf_keymap_l (); } { case 'd': hnf_keymap_d (); } { case 'i': hnf_keymap_i (); } { case 's': hnf_keymap_s (); } { case 'q': hnf_keymap_q (); } { ungetkey (key); } flush (""); } $1 = "hnf"; !if (keymap_p ($1)) make_keymap ($1); undefinekey ("^C", $1); definekey("hnf_keymap", "^C", $1); undefinekey ("\e;", $1); definekey ("hnf_comment", "\e;", $1); undefinekey ("^X^W", $1); definekey ("hnf_write_buffer", "^X^W", $1); create_syntax_table ($1); define_syntax ("!", "!", '%', $1); define_syntax ("A-Za-z~\/", 'w', $1); () = define_keywords ($1, "P~", 1); () = define_keywords ($1, "/PDDDLDTFNLIOKOLUL", 2); () = define_keywords ($1, "/FN/DL/OL/ULBGMCATIMGNEWPRESUBURL", 3); () = define_keywords ($1, "/PRECITEFONTLINKLNEWLSUBMARK", 4); () = define_keywords ($1, "/CITEALIASBASHORLINKTAIJUTAIONTENKI", 5); () = define_keywords ($1, "STRIKESTRONG", 6); () = define_keywords ($1, "LSTRIKE", 7); define hnf_mode () { variable hnf = "hnf"; set_mode(hnf, 1); use_syntax_table (hnf); use_keymap (hnf); runhooks ("hnf_mode_hook"); }