Commit graph

198 commits

Author SHA1 Message Date
Daniel Shahaf
11d378332e widget binding: Further unbreak the build.
7e7e291b20 broke 'zle -C' completions, as reported in #278 just now.
2016-03-18 15:12:04 +00:00
Daniel Shahaf
6a634fac9f widget binding: Properly escape widget names at definition.
Re-Fixes zsh-users/zsh-syntax-highlighting#278.
2016-03-18 14:53:53 +00:00
Daniel Shahaf
47a664447c noop: Remove stray statement terminators and line joiners. 2016-03-18 14:47:53 +00:00
Daniel Shahaf
261c180a36 widget binding: Unbreak the build.
The last commit inadvertently broke interactive use, although the test suite passed.

See issue #278.
2016-03-18 14:41:18 +00:00
Daniel Shahaf
7e7e291b20 widget binding: Remove an unnecessary layer of indirection.
The 'eval' was never needed, and the lack of proper quoting of the interpolated
variables caused issues, such as #278.

Fixes zsh-users/zsh-syntax-highlighting#278.
2016-03-18 13:58:55 +00:00
m0viefreak
4849ef3307 Refactor the application of zle_highlight settings
- Extract duplicated code into a new function.
  This makes it easier to add support for other entries in the
  future, that cannot be accessed in the current version of zsh
  (isearch, suffix).
- Make decision logic more comprehensible.
- Respect deliberately empty entries in zle_highlight.
  Don't force the default value when the user deliberately sets
  an entry in zle_highlight to the empty string.
  For example
    zle_highligh(paste:)
  to disable paste highlighting completely.
2016-03-13 16:29:00 +01:00
Daniel Shahaf
18df692ae6 widget binding: Remove some too-wide exclusions
* m0vie/p_bindings:
  widget binding: don't exlude widgets with identical function name
  widget binding: don't exclude widgets starting with '_'
2016-03-12 17:24:03 +00:00
m0viefreak
487b122c48 widget binding: don't exclude widgets with identical function name
Skipping when $cur_widgets == user:$cur_widget was introduced
with 776453cb5b. However there
are cases where this is not just an 'already rebound' event, but
simply a normal widget whose function name happens to be identical
to its widget name.

Example:
expand-absolute-path is a widget whose function name is also
expand-absolute-path. No reason why this should be ignored.

Another example:
edit-command-line
2016-03-12 17:23:12 +00:00
Daniel Shahaf
282c7134e8 Revert "wrapping: Don't add '--' when invoking widgets."
The '--' guard was correct; it was there to guard against arguments belonging
to the syntax «zle widget [ -n num ] [ -Nw ] [ -K keymap ] args».

For example, this affected using <backward-kill-word> over
    BUFFER="-w "
    CURSOR=3
after
    autoload -Uz select-word-style
    select-word-style default
    zstyle ':zle:backward-kill-word' word-style shell
.

This reverts commit c808d2187a.
2016-01-17 19:43:48 +00:00
m0viefreak
ed33d2cb13 widget binding: don't exclude widgets starting with '_'
Just because a widget starts with _ does not mean it should be
skipped when rebinding. The only reason widgets need to be skipped
is when their function name start with _zsh_highlight_widget*,
which is checked later.

Example:
_expand_alias (^Xa) needs to be wrapped.

The exclusion of _* was introduced in 186d80054a
to fix #65, but it is not needed. The relevant exclusion of
_zsh_highlight_widget* is already enough due to the case statement.
2016-01-02 14:29:04 +01:00
Daniel Shahaf
84734ba950 versionstamp: Better $ZSH_HIGHLIGHT_REVISION reporting when running from git. 2015-11-25 03:55:20 +00:00
Daniel Shahaf
635a68f7b4 driver: Fix error message wording 2015-11-25 03:54:33 +00:00
Daniel Shahaf
8f19af6b31 driver: Tolerate KSH_ARRAYS being set in the calling context.
Fixes zsh-users/zsh-syntax-highlighting#162.
2015-11-17 00:48:22 +00:00
Daniel Shahaf
c808d2187a wrapping: Don't add '--' when invoking widgets.
It's the widget's caller's responsibility, not ours, to add '--' where due.  If
we do it, two instances of '--' might result.  (I haven't been able to provoke
this problem.)

If this commit causes problems, the cause would be widget-callers that don't
pass '--' although they should.
2015-10-28 08:30:05 +02:00
Daniel Shahaf
7e6d960a08 noop: Break out a helper function. 2015-10-28 08:30:05 +02:00
Daniel Shahaf
083c47b007 regerssion: Look for .version and .revision-hash in the correct place.
Fixes zsh-users/zsh-syntax-highlighting#215.
2015-10-21 06:55:00 +00:00
Daniel Shahaf
c30301d474 Drop unnecessary shebang lines.
All these files should be sourced, not executed; and Debian's lintian complains:

W: zsh-syntax-highlighting: script-not-executable usr/share/zsh-syntax-highlighting/zsh-syntax-highlighting.zsh
2015-10-20 11:49:51 +00:00
Daniel Shahaf
0a7035170a versioning: Expose .revision-hash as $ZSH_HIGHLIGHT_REVISION.
Currently, this only works in installed trees and exported tarballs; the
parameter is left unset when running directly from a git worktree.
2015-10-20 03:07:04 +00:00
Daniel Shahaf
3576df29aa Don't leak $REPLY into global scope.
Fixes issue #213.
2015-10-20 00:21:11 +00:00
Daniel Shahaf
f48f5400c1 Revert "Do wrap the 'yank' widget, because that works."
This reverts commit 8e7c26f489.

Currently, after a 'yank', paste highlighting (via $YANK_ACTIVE in zsh 5.1.1)
is applied but other highlighting (e.g., string highlighting when the yanked
text is «"foo» as a new word) is not.

See issue #183 for context.

Conflicts:
	zsh-syntax-highlighting.zsh
2015-10-19 13:40:51 +00:00
Daniel Shahaf
766b350a7d Wrap yank-pop.
As explained in #143 (which was a PR for #99), 'yank-pop' only works when the
previous widget has the ZLE_YANK flag, which means wrapping the 'yank' widget
breaks the 'yank-pop' widget (makes it a no-op).  However, that is a reason
against wrapping the 'yank' widget, but not against wrapping the 'yank-pop'
widget.  Indeed, if 'yank-pop' is wrapped but 'yank' isn't, then yank-pop
functions correctly and updates highlighting properly.

To unbreak yank-pop, either 'yank' should be excluded from wrapping, or one of
the fixes mentioned on issue #183 should be applied.
2015-10-19 08:34:08 +00:00
Daniel Shahaf
9c56c624e9 versionstamp: Handle NO_FUNCTION_ARGZERO.
Sourcing zsh-syntax-highlighting.zsh without FUNCTION_ARGZERO doesn't work (for
reasons unrelated to this branch), but now errors out gracefully.  The failure mode
before this branch was:

    zsh-syntax-highlighting: highlighters directory '/usr/local/bin/highlighters' not found.

where /usr/local/bin is dirname() of the zsh binary.
2015-10-19 07:21:20 +00:00
Daniel Shahaf
43386376d8 Set the version number.
Store it in a separate file so OS packages and 'make install' (issue #177) can
reuse it.
2015-10-19 07:20:57 +00:00
Daniel Shahaf
3fdaec3d4a WARN_CREATE_GLOBAL: Plug yet another instance. 2015-09-26 16:27:08 +00:00
Daniel Shahaf
dd12dde93a Fix errors with non-reserved-word typeset.
Follow-up to 908c4fe150.

Intended to fix fix zsh-users/zsh-syntax-highlighting#206.
2015-09-25 17:53:22 +00:00
Daniel Shahaf
cb5589db73 Don't wrap set-local-history.
See issue #137.  A reproduction recipe for testing this change:

$ zsh -f
% bindkey -e
% source <the script from http://www.zsh.org/mla/users/2014/msg00321.html users/18584>
% source zsh-syntax-highlighting.zsh
% echo foo
% echo bar
% <^R>echo<^R>

This finds the 'echo foo' with this change but not without it.
2015-09-25 15:35:03 +00:00
Daniel Shahaf
35c4bb7bdc More WARN_CREATE_GLOBAL cleanups.
Followup to 908c4fe150.
Found by test-perfs.zsh.
2015-09-25 13:04:37 +00:00
Daniel Shahaf
908c4fe150 Stop leaking variables into global namespace.
Set WARN_CREATE_GLOBAL to prevent recurrence.

Fixes zsh-users/zsh-syntax-highlighting#192.
2015-09-24 18:01:06 +00:00
Daniel Shahaf
9e80fe8f02 Bump copyright years. 2015-09-24 16:46:28 +00:00
Daniel Shahaf
00862cf4fa Followup to e5c2a88db0 (merged in 51102bf83f):
Have widgets return EXIT_SUCCESS.
2015-09-18 12:38:24 +00:00
Daniel Shahaf
e5c2a88db0 Highlight yanks/pastes on top of syntax highlighting.
Let $zle_highlight[paste] override $region_highlight.
2015-09-10 19:31:36 +00:00
Daniel Shahaf
0e31d6e1a2 Highlight the region on top of syntax highlighting.
Let $zle_highlight[region] override $region_highlight.
2015-09-08 20:22:22 +00:00
Daniel Shahaf
f78919d941 Preserve $? of wrapped widgets. 2015-09-05 21:44:11 +00:00
Daniel Shahaf
8e7c26f489 Do wrap the 'yank' widget, because that works.
Partly reverts eb9870f4db which was PR #143 to
fix issue #99.
2015-09-05 12:50:32 +00:00
nicoulaj
3dc5741900 Merge pull request #140 from randomize/pr_fix_issue_#77
Pr fix issue #77
2014-09-24 22:58:20 +02:00
Vincent Bernat
74a183447d zle: don't override yank/yank-pop
`yank-pop` relies on the fact that the last zle command is `yank` or
`yank-pop` to work correctly. Rewriting them prevents this check to work
correctly breaking `yank-pop`.

This fix just disallow overriding of those two zle commands. As a
side-effect, syntax highlighting will not happen when using.

This fixes #99.
2014-06-29 11:52:32 +02:00
Randy
7edd08156e Chaned main highlighter alorithm to resolve issue #77 2014-03-29 22:52:10 +02:00
Evan Pitstick
dffbab0c92 a more simple and universal way (for zsh projects) to find highlight dir path 2013-10-09 12:02:34 -04:00
Evan Pitstick
0fcc2629d2 Finds highlighters dir a little better 2013-03-08 00:57:16 -05:00
Jan M. Binder
966eb851ca Added quotes to suppress error 2012-04-07 11:48:11 +02:00
NAKAMURA Yoshitaka
56b134f5d6 fix "_zsh_highlight_widget_XXX:zle: unknown option: X" error 2011-11-01 20:02:03 +09:00
Andreas Gahr
603fce64b5 autoload add-zsh-hook && provide a nicer error message if that fails due to old zsh version, or similar situations. Reset another variable in hook function; it can't hurt 2011-09-28 16:35:19 +02:00
Andreas Gahr
304ddb9400 make highlighting work for first entry in history. fixes #79 2011-09-27 16:08:23 +02:00
Takeshi Banse
b0fee4e758 pass args down to each original zle call
Signed-off-by: Takeshi Banse <takebi@laafc.net>
2011-09-07 01:39:52 +08:00
Takeshi Banse
9706996d3b make _zsh_highlight nounset-able
Signed-off-by: Takeshi Banse <takebi@laafc.net>
2011-08-24 14:18:23 +09:00
Simon Heimlicher
854038010f Added || true to ensure zero exit code 2011-08-03 09:40:19 +00:00
Julien Nicoulaud
186d80054a Fix #65, sourcing the script multiples times should not cause issues anymore 2011-08-02 20:25:49 +02:00
Julien Nicoulaud
0e331cd654 Isolate setup code in functions to ease messing with zsh-syntax-highlighting 2011-07-31 17:59:55 +02:00
Julien Nicoulaud
5003fa7c9b We don't need this hook as we have already bound every widget we could find (stop me if I'm wrong) 2011-07-31 17:14:56 +02:00
Julien Nicoulaud
4ff08dcfa6 Fix #53: Prefix all defined functions with _zsh_highlight 2011-07-26 23:16:52 +02:00
Julien Nicoulaud
776453cb5b Fix #46: Conflict with url-quote-magic 2011-07-26 22:50:53 +02:00
Julien Nicoulaud
3b27ad778d More efficient way to strip leading dot 2011-07-25 22:30:06 +02:00
Valodim
5f68accccf Don't highlight if buffer is longer than $ZSH_HIGHLIGHT_MAXLENGTH 2011-07-25 14:51:43 +02:00
garinger
1858be26bd exclude .beep 2011-07-07 00:25:44 +08:00
Julien Nicoulaud
28720c77aa Some fixes consecutive to pull request #61 merge
* Allow to override highlighters directory through `ZSH_HIGHLIGHT_HIGHLIGHTERS_DIR`
* Handle spaces in the directory path
* Use Zsh builtin "h" modifier instead of `dirname`
2011-06-30 20:08:43 +02:00
Ted Naleid
4ed9f9a68f fix for issue #60, unrecognized modifier 'A' on startup 2011-06-29 21:32:58 -05:00
Julien Nicoulaud
e04f6ab862 Safety checks before looking up cursor position 2011-06-17 12:36:07 +02:00
Julien Nicoulaud
f6af27b8a6 More reliable way to hook precmd 2011-06-17 12:35:26 +02:00
Guido
71e797a8b5 Much easier and less error prone way to start highlighting immediately after the creation of a new command line. 2011-06-16 13:57:34 -07:00
Guido
56801a6b42 * added a workaround to start highlighting immediately after the creation of a new command line. 2011-06-16 04:26:51 -07:00
Julien Nicoulaud
bb7fcb79fa Fix #56: tolerance to WARN_GLOBAL option 2011-06-12 23:09:59 +02:00
Julien Nicoulaud
55e6a85fbb Merge branch 'master' of github.com:nicoulaj/zsh-syntax-highlighting
Conflicts:
	zsh-syntax-highlighting.zsh
2011-06-12 23:04:33 +02:00
Julien Nicoulaud
0772ddd346 Big refactoring.
* Don't override user defined styles
* Better modularisation of highlighters
* Allow to define which highlighters are activated
* Allow to define the order in which they are defined
* Minor performance optimizations
* Fixed some variables leak
* Improve documentation
* Brackets highlighter: use ZSH_HIGHLIGHT_STYLES instead of a specific array
2011-06-12 22:57:14 +02:00
NAKAMURA Yoshitaka
0999ab05ba do nothing if PENDING inputs are exist
Originally, zsh-syntax-highlighting called highlight functions at every inputs.
It's OK for user's keyboard inputs. But when long inputs come from clipboard,
it cause noticeable slowdown.
2011-03-12 16:31:18 +09:00
Julien Nicoulaud
19f16752bb Issue 49: Don't use readlink, options differ between systems
Signed-off-by: Julien Nicoulaud <julien.nicoulaud@gmail.com>
2011-03-02 00:34:12 +01:00
Julien Nicoulaud
bc788f3f19 Start splitting highlighters to separate files.
The script still works on its own, highlighters in highlighters/ are
loaded as addons if present.

Signed-off-by: Julien Nicoulaud <julien.nicoulaud@gmail.com>
2011-02-17 23:41:01 +01:00
Julien Nicoulaud
2f0fb81af4 More efficient way to look for elements in arrays
Signed-off-by: Julien Nicoulaud <julien.nicoulaud@gmail.com>
2011-02-17 22:27:31 +01:00
Julien Nicoulaud
3abf463753 More code style fixes
Signed-off-by: Julien Nicoulaud <julien.nicoulaud@gmail.com>
2011-02-17 21:02:23 +01:00
Julien Nicoulaud
2670c93e05 Make sure functions names match _zsh_highlight_*
Signed-off-by: Julien Nicoulaud <julien.nicoulaud@gmail.com>
2011-02-17 20:58:22 +01:00
Julien Nicoulaud
dd84bff854 Code style
Signed-off-by: Julien Nicoulaud <julien.nicoulaud@gmail.com>
2011-02-17 19:51:07 +01:00
Julien Nicoulaud
6879d3c29f Issue 47: Removing styling of 'isearch' and 'special', as it has no effect
Signed-off-by: Julien Nicoulaud <julien.nicoulaud@gmail.com>
2011-02-17 19:31:20 +01:00
Julien Nicoulaud
e1479022a0 Merge branch 'hchbaw-for-nicoulaj' 2011-02-17 19:20:32 +01:00
NAKAMURA Yoshitaka
390ab0fc32 Highlight variable assignment 2011-02-14 19:26:24 +09:00
Julien Nicoulaud
78ff61eddc Fix typo
Signed-off-by: Julien Nicoulaud <julien.nicoulaud@gmail.com>
2011-02-01 21:01:37 +01:00
Takeshi Banse
0948c3d676 Introduce _zsh_add-highlighter.
For easily extending the highlighting behavior, split the
actual highlighting function into some pieces.

For example "_zsh_main-highlight" transformed into,

1) An actual highlighting function which updates the
`region_highlight` on its own. (_zsh_main-highlight)
2) A predicate which determines whether its highlighting function
(in this case `_zsh_main-highlight`) should be called or not.
(_zsh_buffer-modified-p)

Likewise, `_zsh_highlight-bracket-match` and
`_zsh_highlight-bracket-match-p` are born.

Eventually, `_zsh_highlight-zle-buffer` coordinates above these
functions and maintain some internal state variables.

Finally, added `_zsh_add-highlighter` a little syntactic-sugar-ish
function to register the highlighting functions in an appropriate manner.

Signed-off-by: Takeshi Banse <takebi@laafc.net>
2011-01-16 20:32:53 +09:00
Takeshi Banse
6663c5647d Make bracket match a function.
Append it to ZSH_HIGHLIGHT_FUNCTIONS.

Signed-off-by: Takeshi Banse <takebi@laafc.net>
2011-01-16 20:32:20 +09:00
Takeshi Banse
07588d2165 Make core syntax highlighting a function.
Make `_zsh_highlight-zle-buffer` just a hands-off.
Now, `_zsh_highlight-zle-buffer` calls each ZSH_HIGHLIGHT_FUNCTIONS
in turn.  The former `_zsh_highlight-zle-buffer` is renamed to
`_zsh_main-highlight.`

Signed-off-by: Takeshi Banse <takebi@laafc.net>
2011-01-16 20:26:50 +09:00
Julien Nicoulaud
e162de6f51 Add BSD license
(http://www.zsh.org/mla/users//2011/msg00030.html)

Signed-off-by: Julien Nicoulaud <julien.nicoulaud@gmail.com>
2011-01-10 10:11:35 +01:00
Julien Nicoulaud
0392fdc46a Issue 34: Do not highlight non commands as commands.
Signed-off-by: Julien Nicoulaud <julien.nicoulaud@gmail.com>
2011-01-08 18:03:52 +01:00
Arlen Cuss
a40d777860 Use ${(Q)arg} to expand a level of quotes, such that files/directories with spaces in their name (escaped with backslash) are noticed correctly. 2011-01-08 15:51:26 +11:00
Takeshi Banse
d2f641ca50 Carefully rebind the $clean_event.
% bindkey "^I" complete-word
  % bi<TAB>

If we had not source the zsh-syntax-highlighting.zsh, it could
complete something. This is due to that `complete-word` will be
rebinded with 'zle -N $clean_event'.

Signed-off-by: Takeshi Banse <takebi@laafc.net>
2011-01-07 21:51:39 +09:00
Takeshi Banse
2fd0845b77 Recreate the completion widget with its own function.
Currently, each completion widgets will be re-installed, but its
function will be statically associated with `_main_complete`.

We can get this function name via $widget[$event] which is the
zsh's zsh/zleparameter module's feature. We can use this information
for `zle -C`ing.

Signed-off-by: Takeshi Banse <takebi@laafc.net>
2011-01-07 21:46:17 +09:00
Takeshi Banse
802583ea94 Make this clause function and call it afterward.
Signed-off-by: Takeshi Banse <takebi@laafc.net>
2011-01-07 21:35:43 +09:00
Julien Nicoulaud
f962bdf1e7 Fix regression 2011-01-06 23:28:41 +01:00
Julien Nicoulaud
83372a5cee Issue 38: Conflict with command-not-found 2011-01-06 22:25:16 +01:00
Julien Nicoulaud
fc5caa4e2d Fix error when sourcing twice the script 2011-01-06 14:59:23 +01:00
Mounier Florian
7e963c6c7e Fix issue 31 2011-01-06 09:16:15 +01:00
Julien Nicoulaud
0a50e2a830 Issue 32: 'xargs' and 'zargs' are followed by commands (thanks to claytron) 2011-01-06 08:41:52 +01:00
Julien Nicoulaud
a9da4e6c76 Harmonize exported variables names 2011-01-05 23:07:56 +01:00
Julien Nicoulaud
60842aa75b Define a style for hashed commands 2011-01-05 22:51:00 +01:00
Sorin Ionescu
a7746077bf Added hashed commands highlighting to zsh-syntax-highlighting oh-my-zsh plugin. 2011-01-06 05:47:42 +08:00
Julien Nicoulaud
b45891cdf4 Fix variable scope and make variable names even more obvious 2011-01-05 22:16:17 +01:00
Julien Nicoulaud
0e55450a0b Issue 26: The script unplugs user defined events 2011-01-05 22:11:00 +01:00
Mounier Florian
701cc303fe Highlighting bracket pair, when one is under the cursor (Issue 24) 2011-01-05 17:08:34 +01:00
Mounier Florian
f78e444451 Fix highlighting on new line with same buffer 2011-01-05 14:27:22 +01:00
Mounier Florian
a765f76656 Remove the huge zle functions array and replace it with zle -la output 2011-01-05 14:10:57 +01:00
Mounier Florian
2ca730ed17 Merge branch 'master' of gh:nicoulaj/zsh-syntax-highlighting 2011-01-05 13:50:19 +01:00
Mounier Florian
1da1aeb6f8 Simple rainbow style bracket matching 2011-01-05 13:48:23 +01:00
Julien Nicoulaud
a640bb8b96 Fix for aliases (from zsh-users)
http://www.zsh.org/mla/users/2011/msg00005.html
2011-01-05 11:28:24 +01:00
Mounier Florian
5afa8fcb32 Add all zle hookable functions 2011-01-05 10:54:25 +01:00