zsh-workers
 help / color / mirror / code / Atom feed
From: Bart Schaefer <schaefer@brasslantern.com>
To: Zsh list <zsh-workers@zsh.org>
Subject: Re: How to get syntax highlighting working??
Date: Fri, 31 Dec 2010 12:21:47 -0800	[thread overview]
Message-ID: <101231122149.ZM8730@torch.brasslantern.com> (raw)
In-Reply-To: <AANLkTin8mo_VSXuaO1gijGJr0yDUoD0_AMFq4XoxM22w@mail.gmail.com>

On Dec 31, 10:28am, Wayne Davison wrote:
} 
} While playing with this syntax highlighting code, I've come to the
} conclusion that it would be much nicer to have a hook where the zle code
} asks for a changed line to be highlighted.

I've been thinking for a couple of days now about some related ideas.

I loaded the zsh-syntax-highlighting script from github but found it
to be *agonizingly* slow when running zed (or on any other significant
multi-line buffer), because it recomputes the colorization of the whole
buffer in shell code on every keystroke -- including movement up or
down in the buffer.

Several changes could improve this; (1) don't re-highlight if the buffer
hasn't changed [your edit to _zsh_highlight-zle-buffer]; (2) highlight
incrementally based on $CURSOR rather than starting over with a fresh
${(z)BUFFER} on every change; and (3) get some help from the C code,
which presently isn't available.

This is exactly the reason that completion has so many helper builtins
to figure out the context around the cursor position.  Perhaps the code
for completion could be repurposed for this; in fact perhaps a way to
approach it without hacking new C code directly, is to restructure the
colorize-zle-buffer function such that it becomes a completion widget
(one which always succeeds without adding any matches), and then invoke
that with "zle colorize-zle-buffer" instead of a direct call.

} This avoids having to create functions for an ever-changing plethora
} of zle functions, and makes things like push-line, yank, yank-pop,
} delete-char-or-list, and who-knows-what-else Just Work (all of which
} have issues when using override widgets).

Aside:  It appears the thread beginning users/15493 then workers/28369
never went anywhere (about making the zle hooks into arrays of function
or widget names).

} Here's a patch for zsh:
} 
}   http://opencoder.net/zle-set-highlight-hook.patch
} 
} Thoughts?  I really like this single hook point for highlighting.

Yes, this makes good sense.

-- 


  reply	other threads:[~2010-12-31 20:22 UTC|newest]

Thread overview: 3+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
     [not found] <997733.11083.qm@web65612.mail.ac4.yahoo.com>
     [not found] ` <AANLkTi=T73W8vi3PJDH8=AWeCq-YG=iK_42MeBmU2Z-F@mail.gmail.com>
2010-12-31 18:28   ` Wayne Davison
2010-12-31 20:21     ` Bart Schaefer [this message]
2010-12-31 20:33       ` Mikael Magnusson

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=101231122149.ZM8730@torch.brasslantern.com \
    --to=schaefer@brasslantern.com \
    --cc=zsh-workers@zsh.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
Code repositories for project(s) associated with this public inbox

	https://git.vuxu.org/mirror/zsh/

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).