Commit Graph

259 Commits

Author SHA1 Message Date
Marco Hinz
0a65a0c504
Avoid useless updates 2017-02-24 12:48:35 +01:00
Marco Hinz
d155dffd9d
GUI: use :redraw for all GUIs except MacVim 2017-02-20 16:47:35 +01:00
Marco Hinz
bf099a3fe2
Nvim: provide cwd to jobstart() 2017-02-20 15:14:24 +01:00
Marco Hinz
61d5a48c71
Simplify has-patch condition
The new format is supported since 7.4.237. If a Vim doesn't recognize the
format, it's too old by definition.
2017-02-20 15:03:34 +01:00
Marco Hinz
7a639b0263
Rename callback functions 2017-02-20 14:52:24 +01:00
Marco Hinz
0908e37758
Vim: make sure all stdout is read when job exits
References #228.
2017-02-20 14:47:51 +01:00
Marco Hinz
3020873ee4
Use correct cwd in verbose output 2017-02-20 01:38:25 +01:00
Marco Hinz
2778fd928c
GUIs: redraw screen after sign update
Some GUIs (MacVim, gVim) wouldn't show placed signs after updating. Force a
redraw.

References #228.
2017-02-20 01:15:50 +01:00
Marco Hinz
40deeb3fdf
Win: string passed to job_start() must contain shell
References #228.
2017-02-19 17:11:07 +01:00
Marco Hinz
e1396b903c
Add cmd and cwd to verbose output 2017-02-19 02:23:06 +01:00
Marco Hinz
34ee12d179
Vim compat fix: type variables were introduced in 7.4.2071
To avoid issues for Vim versions between 7.4.1966 and 7.4.2071, we now use
type() to distinguish between the type of variable `job_id` being either Number
or Job.
2017-02-17 16:25:00 +01:00
Marco Hinz
8d35722aa1
Fix "Calling dict function without Dictionary"
Closes #223.
2017-02-17 15:14:34 +01:00
Marco Hinz
b7db40e58e
Vim uses Job instances instead of job IDs
References #222.
2017-02-17 11:29:06 +01:00
Marco Hinz
6364e8f7f2 Vim: use close_cb to trigger exit_cb
Before Vim 8.0.50, an exited job was only detected with a potentially huge
delay.

Thus, for versions smaller than 8.0.50, we add a close_cb callback that runs
job_status() which in return runs the exit_cb callback immeditely if the job was
found to be dead.

Vim patch:

    01688ad545

References: #216.
2017-02-16 15:29:41 +01:00
Marco Hinz
f6d76b41d6
Neovim: fix stdout logic
References #218.
2017-02-15 15:27:24 +01:00
Marco Hinz
a2c28f6540
A diff is a list of lines and no long string anymore
References #216.
2017-02-10 17:40:11 +01:00
Marco Hinz
dd34401bc3
Prevent running Sy more than once during startup 2017-02-03 20:48:48 +01:00
Marco Hinz
dea49a1967
Fix toggling when g:signify_disable_by_default is set 2017-02-03 01:49:46 +01:00
James McCoy
8d5e018519 Rename variable to work with older (n)vim, when types were sticky
Closes #213
2017-02-01 09:10:06 -05:00
Marco Hinz
f194e3aced
Fix get_diff_start_{vcs}() for older Vims
Fixes #212.
2017-01-31 12:15:35 +01:00
Marco Hinz
6d8837f878
Fix TFS context stripping
Fixes #211.
2017-01-31 11:36:16 +01:00
James McCoy
716ce90fe4 Simplify job ID handling a little more 2017-01-30 09:31:14 -05:00
Marco Hinz
014b058d3d
Simplify job ID handling 2017-01-30 15:26:11 +01:00
Marco Hinz
82d6df9f71
Don't switch window in exit handler
Since we don't switch the window anymore, we can't simply refer to b:sy as we
used to do while Sy worked only synchronously.

Now we provide the buffer number to each job and the exit handler gets a pointer
to the b:sy of that buffer and passes it to all the subsequent functions.

References #209, #210.
2017-01-30 14:50:32 +01:00
Marco Hinz
68013238b4
Restrict to be removed sign IDs to buffer 2017-01-29 02:22:35 +01:00
Marco Hinz
f7678884f0
Race condition: make sure we're still in same buffer
Fixes #207.
2017-01-23 13:37:53 +01:00
Marco Hinz
e43155f3e1
Fix typo in callback_stdout_nvim()
Fixes #206.
2017-01-23 12:50:16 +01:00
Marco Hinz
0db69f4658
Fix CVS
References #205.
2017-01-23 02:58:41 +01:00
Marco Hinz
9ced2cf73f
Fix arguments of a few diff functions
Fixes #205.
2017-01-23 02:02:03 +01:00
Marco Hinz
faf5240823
Fix exit callback
Vim provides 2 arguments to the exit handler whereas Neovim always provides 3.
Change function signature to handle an optional third argument, even if it never
gets used.

Fixes #204.
2017-01-22 20:42:31 +01:00
Marco Hinz
8f3fc1c023
Simplify a few verbose messages 2017-01-18 17:27:44 +01:00
Marco Hinz
295e449db6
Add sy#util#chdir() 2017-01-18 17:15:15 +01:00
Marco Hinz
304a2b9c27
Simplify sign ID handling 2017-01-18 16:28:35 +01:00
Marco Hinz
b839e8092f
Add s:initialize_job() 2017-01-18 13:40:34 +01:00
Marco Hinz
3aa8eb9ec6
Jump to correct window in exit handler 2017-01-18 11:07:21 +01:00
Marco Hinz
3f9c4e4ea0
Don't retry VCS detection for performance purposes
For each new buffer sy#repo#detect() gets run. That function invokes callbacks
for all VCS from g:signify_vcs_list.

If no callback finds a valid repo, sy#set_signs() is never called and the VCS
type of the newly registered buffer keeps its initial value: "unknown".

The next time Sy gets run in that buffer, Sy will disable itself, so that all
subsequent times it gets run it will never even attempt to get a diff.

If a buffer was added to a repo that was initialized after Sy registered that
buffer, it will remain inactive.

In those cases, :SignifyEnable will purge the cache for the current buffer and
start all over.
2017-01-18 10:50:07 +01:00
Marco Hinz
f6a0a50e06
Only run s:set_signs() if diff was found 2017-01-18 03:43:59 +01:00
Marco Hinz
6c2b6c4f08
Refactoring 2017-01-18 02:42:00 +01:00
Marco Hinz
fcecc3c868
Remove rather useless :SignifyDebugDiff 2017-01-18 00:14:36 +01:00
Marco Hinz
31d4c55187
Make sy#verbose() slightly more useful 2017-01-17 23:57:29 +01:00
Marco Hinz
0e609fdf1d
Make Vim and job_start() work 2017-01-17 23:12:00 +01:00
Marco Hinz
72c7ba9e2b
Make all supported VCS work 2017-01-17 20:37:58 +01:00
Marco Hinz
d2fda2847f
Propagate the correct VCS 2017-01-17 19:45:03 +01:00
Marco Hinz
0df130ac6e
Make Vim + system() work 2017-01-17 19:41:55 +01:00
Marco Hinz
a67b613acf
Add more calls to sy#verbose() 2017-01-17 17:04:19 +01:00
Marco Hinz
e72ccb952d
PoC: make async work with git and Neovim 2017-01-17 16:17:16 +01:00
Marco Hinz
3ad10c65b5
First changes 2017-01-17 14:22:19 +01:00
Marco Hinz
379db4ad0b
Add missing comment 2017-01-10 14:45:28 +01:00
James McCoy
32d8797d88 Check whether :tcd exists before using tab-specific haslocaldir()
Closes #197
2016-12-31 15:52:09 +01:00
Marco Hinz
79d867a7a6
Remove unused argument
Temporarily changing directories is cheap.
2016-12-30 14:27:12 +01:00
Marco Hinz
4aca2ee9c5 Don't rely on :language
Fixes #187.
2016-12-15 14:56:20 +01:00
Marco Hinz
fab2a9d878 SignifyRefresh: use window ID instead of number
`win_getid()` and `win_gotoid()` were introduced in 7.4.1557.

Older versions will continue using the less accurate window number instead.
2016-12-11 01:02:35 +01:00
Henry Kupty
a7e3219de8 Fix tcd breakage
This fix is backwards compatible with vim.
2016-10-07 04:27:11 +02:00
Marco Hinz
faf7a03071
New option: g:signify_sign_show_text
This makes all Signify signs use a non-breaking space as text. This is
convenient if only the background colors of the signs are important.

References #188.
2016-09-28 17:05:40 +02:00
Marco Hinz
3037d0bd8a Only emit User event if there is a receiving end
This way we can also leave away the :silent and users can't walk into the
:unsilent trap.
2016-07-21 18:26:34 +02:00
Marco Hinz
76bde232d1 Avoid errors from older Vims that don't support <nomodeline>
The <nomodeline> flag for :doautocmd was implemented in 7.3.438. Certain
LTS distros, e.g. Ubuntu 12.04, come with even older Vim versions,
though.

Silently ignore the flag in such cases.

Closes https://github.com/mhinz/vim-signify/issues/185
2016-06-19 14:12:47 +02:00
James McCoy
f708bc475f Stop clearing stats in sy#sign#remove_all_the_signs 2016-06-01 21:13:33 -04:00
James McCoy
3f0df1498c Trigger the User autocommand when Sy detects differences
This provides the hook needed for the request in mhinz/vim-signify#181
to disable signs but still get the stats about the detected changes.

Closes mhinz/vim-signify#181
2016-06-01 21:13:15 -04:00
Marco Hinz
9c0e901579 TFS: support incomplete lines
Add support for incomplete lines according to:

    http://www.gnu.org/software/diffutils/manual/diffutils.html#Incomplete-Lines

Closes #183.
2016-06-01 18:12:29 +02:00
James McCoy
37376d9970 Treat v:shell_error >= 2 as "not version controlled" for AccuRev
When a user isn't logged in, "accurev diff" will return an exit code of
52.  Since the only well defined values are 0 or 1, treat anything else
as unversioned.
2016-04-08 11:16:14 -04:00
James McCoy
6b4abcd754 Detect AccuRev controlled, but unmodified, files properly
"accurev diff" returns 0 for no diff, 1 for differences, and 2 for error
(like not being run from a workspace).  Use 2 to indicate the file isn't
being versioned by AccuRev so Sy properly sets the vcs type to AccuRev
for unmodified files.
2016-03-31 10:16:54 -04:00
Marco Hinz
a02c8793bf New option: g:signify_skip_filename_pattern
Closes #179.
2016-03-03 14:53:17 +01:00
James McCoy
ca302f7233 Replace all modifiers in a vcs_cmd string, not just the first.
Closes #176

Signed-off-by: James McCoy <jamessan@jamessan.com>
2016-03-02 13:03:38 -05:00
Marco Hinz
051dc1a853 Add support for Team Foundation Server
The actual patch is courtesy of @Grueslayer. Thanks!

Closes #177.
2016-02-25 01:21:12 +01:00
Marco Hinz
4f69c11c7c De Morgan 2016-01-15 17:02:53 +01:00
Marco Hinz
e73a0114f3 Add sy#buffer_is_active()
Mostly an API function that can be used by other plugins.
2016-01-15 12:56:21 +01:00
Marco Hinz
a96f1a7dc7 Register non-versioned files as inactive 2016-01-15 02:04:59 +01:00
William Clemens
e134c152e0 Add :SignifyEnable and :SignifyDisable 2016-01-07 02:54:44 +01:00
Marco Hinz
2dc2526426 SignifyToggleFold -> SignifyFold! 2015-12-09 00:31:59 +01:00
Marco Hinz
75cdb17d99 Use :mkview for restoring manual folds 2015-12-08 23:47:15 +01:00
Marco Hinz
a0e061a5cf Refactoring 2015-12-08 22:19:46 +01:00
albfan
64a6dbd5d8 Add bang option to SignifyToggleFold
Without bang open folds on a new tab, with it on current buffer
2015-12-08 13:48:07 +01:00
albfan
2033f3ce4e Restore previous foldmethod 2015-12-08 12:26:10 +01:00
albfan
d5e72e0ae7 Toggle folding on same buffer
resolves #169
2015-12-08 11:22:25 +01:00
Marco Hinz
3ea223ac76 Redraw screen on :SignifyToggleHighlight 2015-12-06 14:00:35 +01:00
Marco Hinz
6333c7f140 Do not cache g:signify_vcs_cmds
Now you can change this option on the fly.

Closes #168.
2015-11-04 15:12:08 +01:00
Ben Jackon
10ec6c1a40 Fix shell redirection when detecting perforce
Previously, when using *nix csh-like (or probably ksh-like) shells, perforce
detection would fail with E484. This was due to hard-coded bash-like
redirection.

This change obeys the vim `shellredir` option when detecting perforce.
2015-07-29 01:38:38 +02:00
Marco Hinz
dc09aa72ad Handle errors more gracefully
References #164.
2015-07-06 22:36:43 +02:00
Marco Hinz
021b801eb4 Work around separator issues
Use split() instead of substitute(), since the latter simply parses strings
and doesn't understand the notion of path separators. Backslashes would be
interpreted as beginning escape sequences.

Using split() works around this problem.

Closes #163.
2015-06-04 09:51:48 +02:00
Marco Hinz
8c5ad74a7b Add :SignifyFold
References #118.
2015-06-02 15:12:57 +02:00
Marco Hinz
861f1b24d8 Remove dead :autocmd! 2015-06-01 12:13:06 +02:00
Marco Hinz
0814b97d2a Refact: b:sy_path -> sy_path 2015-06-01 12:10:28 +02:00
Marco Hinz
335c2944be Stop Sy if file isn't readable anymore
References #162.
2015-06-01 12:04:50 +02:00
Marco Hinz
50a3161bd5 Update b:sy_info more often
This avoids outdated cache entries if paths changed between calls to Sy.

References #162.
2015-06-01 11:13:28 +02:00
Marco Hinz
0867de3ac3 Escape cwd 2015-05-28 19:24:40 +02:00
Marco Hinz
c0da740d7e Don't cache cwd 2015-05-28 18:40:30 +02:00
Marco Hinz
a05b780c33 Add :SignifyDebugUnknown 2015-05-26 10:59:29 +02:00
Marco Hinz
a58fbe93df Useless use of :execute 2015-05-25 16:37:37 +02:00
Marco Hinz
a1cfbc8b70 Perforce: use difftool modifier 2015-05-25 09:25:23 +02:00
Marco Hinz
2e1fd54601 Make :SignifyDebugDiff more robust and add it to help 2015-05-24 10:52:28 +02:00
Marco Hinz
3f1f9c17fd Add :SignifyDebugDiff
References #161
2015-05-24 10:40:18 +02:00
Marco Hinz
4ed7b37205 Merge branch 'cmd-options'
This merge removes g:signify_diffoptions and replaces it by the much more
general g:signify_vcs_commands. Users can customize the entire command to be
run now.
2015-05-24 09:42:03 +02:00
James McCoy
0001094dea Copy stdout fd to stderr only after stdout is redirected
Signed-off-by: James McCoy <vega.james@gmail.com>
2015-05-24 00:56:44 -04:00
James McCoy
c2fc1dc78a Revert "Escape 2>&1 in the p4 detection"
This reverts commit 5cdf72acd1.

`shellescape()`, which is what `sy#util#escape()` is a front-end to, is
only supposed to escape a single element of an argv list. In this case,
it's being used to escape multiple -- `p4 info 2>&1 >`. None of that
should be escaped anyway, because they need to be interpreted by the
shell.
2015-05-24 00:41:21 -04:00
Marco Hinz
8955952295 /dev/null -> %n 2015-05-20 14:22:52 +02:00
Marco Hinz
23ddfa87a0 Use b:sy_info 2015-05-20 14:00:39 +02:00
Marco Hinz
ae38ddc7f6 Move variables to the bottom 2015-05-20 13:11:26 +02:00
Marco Hinz
1469ecb05f g:signify_diffcmds -> g:signify_vcs_cmds 2015-05-19 15:39:04 +02:00
Marco Hinz
7d022eb5fd Introduce g:signify_diffcmds 2015-05-19 15:26:22 +02:00
Marco Hinz
57f51d197d Remove useless fnamemodify() 2015-05-19 15:07:25 +02:00