- Subject: Re: L4J: complete \end with \begin
 
- From: Joerg Sommer <joerg@xxxxxxxxxxxx>
 
- Date: Tue, 3 Jun 2003 21:50:26 +0000 (UTC)
 
begin  Joerg Sommer <joerg@xxxxxxxxxxxx> wrote:
> Hi,
> 
> I hate it to enter the same after \end what I wrote after \begin. So I
> thourght jed can do that for me. Here is my patch for it:
but this patch isn't correct. It doesn't work with nested environments in
all cases. Here is a new one:
#v+
   if ( blooking_at("\\end{") ) {
      push_spot();
      ERROR_BLOCK {
	 pop_spot();
      }
      
      () = left(5);
      % Idea: increase for every \end we found and decrease for ever \begin
      %       we found. If we have 0, the founded \begin is for our \end.
      variable ends=1;
      forever {
	 push_mark();
	 !if ( bsearch("\\begin{") ) {
	    pop_mark(1);
	    error("no \\begin{} found");
	 }
	 --ends;
	 push_spot();
      
	 variable tmp = bufsubstr(), pos=0;
	 % see if there are any \ends between our \end and the found \begin
	 do {
	    variable ret = is_substr(tmp[[pos:]], "\\end{");
	    pos += ret;
	    if (ret > 0) ++ends;
	 } while (ret > 0);
	 
	 pop_spot();
	 if (ends == 0) {
	    () = right(7);
	    push_mark();
	    if ( ffind_char('}') == 0 ) {
	       pop_mark(1);
	       error("malformed \\begin{}");
	    }
	    completion = bufsubstr() + "}";
	    break;
	 }
      }
      pop_spot();
      if (completion != NULL)
	insert(completion);
      return;
   }
#v-
Jörg.
--------------------------
To unsubscribe send email to <jed-users-request@xxxxxxxxxxx> with
the word "unsubscribe" in the message body.
Need help? Email <jed-users-owner@xxxxxxxxxxx>.
  [2003 date index]
  [2003 thread index]
  
  [Thread Prev] [Thread Next]
      
  [Date Prev] [Date Next]