-
Notifications
You must be signed in to change notification settings - Fork 1.4k
Closed
Description
I have string copied from my text editor:
echo aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
- when I paste it to my local machine (zsh 5.2) it will run for more then 10 minutes with 100% cpu usage
- when I disable zsh-syntax-highlighting, it is pasted instantly
- when I ssh to my remote machine (zsh 5.0.2), it is also pasted almost instantly with zsh-syntax-highlighting enabled.. (I have exactly the same configuration of zsh on my remote)
- when I use ctrl+r wpapper (zsh-navigation-tools) wich uses
zle -U
to paste command from history (https://github.com/psprint/zsh-navigation-tools/blob/master/n-history#L46) it works very long (10m+) both on local and remote.
Of course I do not use such extreme commands like in this example, but commands I use when I am pasting are long enough to make the lagging of 5-10 seconds.
caesar, sbdchd, samcraigjohnson, jakwuh, pierpow and 15 more
Metadata
Metadata
Assignees
Type
Projects
Milestone
Relationships
Development
Select code repository
Activity
danielshahaf commentedon Apr 22, 2016
I cannot reproduce that: when I paste your long
echo aa…aa
command, it is pasted instantly and rendered in reverse video. Using zsh 5.3-to-be from git master.Can you reproduce it in
zsh -f
+source zsh-syntax-highlighting.zsh
? Do you use a framework (oh-my-zsh/prezto/antigen/etc)? Do you use bracketed-paste-magic?Workaround: set
ZSH_HIGHLIGHT_MAXLENGTH=300
in your .zshrc.doubleloop commentedon Apr 22, 2016
Hmm, I can not reproduce it with zsh -f + source zsh-syntax-highlighting.zsh..
I am using oh-my-zsh. I will try to investigate more, still if you have any suggestions what to look for it would be helpful.
my zshrc (rest is default ohmyzsh with some aliases):
3 plugins are in custom:
doubleloop commentedon Apr 22, 2016
The workaround reduced time to about 7 seconds:)
doubleloop commentedon Apr 22, 2016
I investigated more and the line that was causing the problem is:
if I comment it, the problem disappears.
danielshahaf commentedon Apr 22, 2016
I can reproduce this: with your highlighters setting, pasting your example text to
zsh -f
, and even typing a single space at the end of it, is noticeably slow (I'm seeing subsecond delays, but it's still noticeable).danielshahaf commentedon Apr 22, 2016
zprof output is basically what you'd expect:
ericfreese commentedon Apr 22, 2016
Pretty sure this has to do with bracketed-paste-magic. See zsh-users/zsh-autosuggestions#141
danielshahaf commentedon Apr 22, 2016
@ericfreese I can reproduce slowness in
zsh -f
with onlyZSH_HIGHLIGHT_HIGHLIGHTERS=(brackets)
, i.e., without bracketed-paste-magic. I guess these are two separate issues, then: one in the brackets highlighter and one involving b-p-magic.danielshahaf commentedon Apr 22, 2016
Breaking out the two
for
loops in_zsh_highlight_brackets_highlighter
into subfunctions gives:Here,
f
is the first for loop andg
the second.danielshahaf commentedon Apr 22, 2016
@doubleloop Is the behaviour under
zsh -f
withZSH_HIGHLIGHT_HIGHLIGHTERS=(brackets)
identical to the behaviour you were originally seeing?brackets: Optimize a tiny bit.
danielshahaf commentedon Apr 22, 2016
@doubleloop Can you try this patch?
Timing data:
doubleloop commentedon Apr 22, 2016
Strange.
I pulled current master with your commit (b52a485).
the issue is there (10+ minutes). When I comment
ZSH_HIGHLIGHT_HIGHLIGHTERS=(brackets)
everything works ok. In this situation the newest commit does not matter nor the patch you posted. I've never read oh-my-zsh code so just in case I didrm -rf ~/.oh-my-zsh/cache/*
before testing.48 remaining items