Mercurial > vim
diff src/diff.c @ 18619:788d76db02ac v8.1.2302
patch 8.1.2302: :lockmarks does not work for '[ and ']
Commit: https://github.com/vim/vim/commit/f4a1d1c0542df151bc59ac3b798ed198b5c71ccc
Author: Bram Moolenaar <Bram@vim.org>
Date: Sat Nov 16 13:50:25 2019 +0100
patch 8.1.2302: :lockmarks does not work for '[ and ']
Problem: :lockmarks does not work for '[ and '].
Solution: save and restore '[ and '] marks. (James McCoy, closes https://github.com/vim/vim/issues/5222)
author | Bram Moolenaar <Bram@vim.org> |
---|---|
date | Sat, 16 Nov 2019 14:00:05 +0100 |
parents | 41484f342f80 |
children | 3a68dc2a1bc1 |
line wrap: on
line diff
--- a/src/diff.c +++ b/src/diff.c @@ -772,6 +772,7 @@ diff_write(buf_T *buf, diffin_T *din) { int r; char_u *save_ff; + int save_lockmarks; if (din->din_fname == NULL) return diff_write_buffer(buf, din); @@ -779,9 +780,14 @@ diff_write(buf_T *buf, diffin_T *din) // Always use 'fileformat' set to "unix". save_ff = buf->b_p_ff; buf->b_p_ff = vim_strsave((char_u *)FF_UNIX); + save_lockmarks = cmdmod.lockmarks; + // Writing the buffer is an implementation detail of performing the diff, + // so it shouldn't update the '[ and '] marks. + cmdmod.lockmarks = TRUE; r = buf_write(buf, din->din_fname, NULL, (linenr_T)1, buf->b_ml.ml_line_count, NULL, FALSE, FALSE, FALSE, TRUE); + cmdmod.lockmarks = save_lockmarks; free_string_option(buf->b_p_ff); buf->b_p_ff = save_ff; return r;