82 lines
		
	
	
		
			1.7 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			82 lines
		
	
	
		
			1.7 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
| /* ELLE - Copyright 1982, 1987 by Ken Harrenstien, SRI International
 | |
|  *	This software is quasi-public; it may be used freely with
 | |
|  *	like software, but may NOT be sold or made part of licensed
 | |
|  *	products without permission of the author.
 | |
|  */
 | |
| /*	EEHELP - Help function
 | |
|  */
 | |
| 
 | |
| #include "elle.h"		       /* include structure definitions */
 | |
| 
 | |
| 
 | |
| #if FX_DESCRIBE
 | |
| /* EFUN: "Describe" */
 | |
| /*	DESCRIBE - Help-command hack.
 | |
| **	Crude approximation of EMACS function.
 | |
| */
 | |
| static struct buffer *help_buf;
 | |
| 
 | |
| f_describe()
 | |
| {	register char *cp;
 | |
| 	register int i, c;
 | |
| 	char str[10];
 | |
| 	struct buffer *savbuf, *b, *make_buf();
 | |
| 	chroff bdot;
 | |
| 
 | |
| 	saynow("Help for command: ");
 | |
| 	i = cmd_idx(c = cmd_read());		/* Get function idx for cmd */
 | |
| 	if(c&CB_META) sayntoo("M-");
 | |
| 	if(i == FN_PFXMETA)
 | |
| 	  {	sayntoo("M-");
 | |
| 		i = cmd_idx(c = (cmd_read() | CB_META));
 | |
| 	  }
 | |
| 	else if(i == FN_PFXEXT)
 | |
| 	  {	sayntoo("^X-");
 | |
| 		i = cmd_idx(c = (cmd_read() | CB_EXT));
 | |
| 	  }
 | |
| 	str[0] = c&0177;
 | |
| 	str[1] = 0;
 | |
| 	sayntoo(str);
 | |
| 
 | |
| 	/* Now read in the help file, if necessary */
 | |
| 	savbuf = cur_buf;
 | |
| 	if(help_buf)
 | |
| 		chg_buf(help_buf);
 | |
| 	else
 | |
| 	  {
 | |
| 		saynow("Loading ");
 | |
| 		sayntoo(ev_helpfile);
 | |
| 		sayntoo("...");
 | |
| 		chg_buf(help_buf = make_buf(" **HELP**"));
 | |
| 		if(read_file(ev_helpfile) == 0)
 | |
| 		  {	chg_buf(savbuf);
 | |
| 			kill_buf(help_buf);
 | |
| 			help_buf = 0;
 | |
| 			return;
 | |
| 		  }
 | |
| 	  }
 | |
| 
 | |
| 
 | |
| 	/* Find function index in current buffer */
 | |
| 	cp = str;
 | |
| 	*cp++ = '<';
 | |
| 	*cp++ = 'F';
 | |
| 	cp = dottoa(cp, (chroff)i);
 | |
| 	*cp++ = '>';
 | |
| 	e_gobob();
 | |
| 	if(e_search(str, cp-str, 0) == 0)
 | |
| 		sayntoo(" No help found");
 | |
| 	else
 | |
| 	  {
 | |
| 		bdot = e_dot();
 | |
| 		while(!e_lblankp()) e_gonl();	/* Move past 1st blank line */
 | |
| 		b = make_buf(" *SHOW*");
 | |
| 		sb_sins((SBBUF *)b, e_copyn(bdot - e_dot()));
 | |
| 		mk_showin(b);			/* Show the stuff */
 | |
| 		kill_buf(b);
 | |
| 		sayclr();
 | |
| 	  }
 | |
| 	chg_buf(savbuf);
 | |
| }
 | |
| #endif /*FX_DESCRIBE*/
 | 
