Skip to content

Commit a56df20

Browse files
committed
don't save custom register in viminfo
1 parent 982e210 commit a56df20

File tree

4 files changed

+30
-9
lines changed

4 files changed

+30
-9
lines changed

src/option.h

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -867,8 +867,10 @@ EXTERN long p_rdt; // 'redrawtime'
867867
#endif
868868
EXTERN int p_remap; // 'remap'
869869
EXTERN long p_re; // 'regexpengine'
870+
#ifdef FEAT_EVAL
870871
EXTERN char_u *p_rrf; // 'regreqfunc'
871872
EXTERN char_u *p_rsf; // 'regsetfunc'
873+
#endif
872874
#ifdef FEAT_RENDER_OPTIONS
873875
EXTERN char_u *p_rop; // 'renderoptions'
874876
#endif

src/register.c

Lines changed: 22 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@
1919
* 1..9 = registers '1' to '9', for deletes
2020
* 10..35 = registers 'a' to 'z' ('A' to 'Z' for appending)
2121
* 36 = delete register '-'
22-
* 37 = custom register '&'
22+
* 37 = custom register '&'. Only if FEAT_EVAL is defined
2323
*
2424
* 38 = Selection register '*'. Only if FEAT_CLIPBOARD defined
2525
* 39 = Clipboard register '+'. Only if FEAT_CLIPBOARD and FEAT_X11
@@ -31,8 +31,10 @@ static yankreg_T *y_current; // ptr to current yankreg
3131
static int y_append; // TRUE when appending
3232
static yankreg_T *y_previous = NULL; // ptr to last written yankreg
3333

34+
#ifdef FEAT_EVAL
3435
static callback_T rrf_cb; // 'regreqfunc'
3536
static callback_T rsf_cb; // 'regsetfunc'
37+
#endif
3638

3739
static int stuff_yank(int, char_u *);
3840
static void put_reedit_in_typebuf(int silent);
@@ -42,8 +44,10 @@ static int yank_copy_line(struct block_def *bd, long y_idx, int exclude_trailing
4244
static void copy_yank_reg(yankreg_T *reg);
4345
#endif
4446
static void dis_msg(char_u *p, int skip_esc);
47+
#ifdef FEAT_EVAL
4548
static void call_regreqfunc(void);
4649
static void call_regsetfunc(void);
50+
#endif
4751

4852
#if defined(FEAT_VIMINFO)
4953
yankreg_T *
@@ -197,7 +201,9 @@ valid_yank_reg(
197201
|| regname == '"'
198202
|| regname == '-'
199203
|| regname == '_'
204+
#ifdef FEAT_EVAL
200205
|| regname == '&'
206+
#endif
201207
#ifdef FEAT_CLIPBOARD
202208
|| regname == '*'
203209
|| regname == '+'
@@ -254,8 +260,10 @@ get_yank_register(int regname, int writing)
254260
}
255261
else if (regname == '-')
256262
i = DELETION_REGISTER;
263+
#ifdef FEAT_EVAL
257264
else if (regname == '&')
258265
i = CUSTOM_REGISTER;
266+
#endif
259267
#ifdef FEAT_CLIPBOARD
260268
// When selection is not available, use register 0 instead of '*'
261269
else if (clip_star.available && regname == '*')
@@ -1447,7 +1455,7 @@ op_yank(oparg_T *oap, int deleting, int mess)
14471455

14481456
#ifdef FEAT_EVAL
14491457
// Call custom register set function if is custom register
1450-
if (curr == get_y_register(CUSTOM_REGISTER))
1458+
if (curr == &y_regs[CUSTOM_REGISTER])
14511459
call_regsetfunc();
14521460
#endif
14531461

@@ -1578,7 +1586,10 @@ do_put(
15781586
(void)may_get_selection(regname);
15791587
#endif
15801588

1581-
call_regreqfunc();
1589+
#ifdef FEAT_EVAL
1590+
if (regname == '&')
1591+
call_regreqfunc();
1592+
#endif
15821593

15831594
curbuf->b_op_start = curwin->w_cursor; // default for '[ mark
15841595
curbuf->b_op_end = curwin->w_cursor; // default for '] mark
@@ -2365,8 +2376,10 @@ get_register_name(int num)
23652376
return num + '0';
23662377
else if (num == DELETION_REGISTER)
23672378
return '-';
2379+
#ifdef FEAT_EVAL
23682380
else if (num == CUSTOM_REGISTER)
23692381
return '&';
2382+
#endif
23702383
#ifdef FEAT_CLIPBOARD
23712384
else if (num == STAR_REGISTER)
23722385
return '*';
@@ -2710,7 +2723,8 @@ get_reg_contents(int regname, int flags)
27102723
# endif
27112724

27122725
#ifdef FEAT_EVAL
2713-
call_regreqfunc();
2726+
if (regname == '&')
2727+
call_regreqfunc();
27142728
#endif
27152729

27162730
if (get_spec_reg(regname, &retval, &allocated, FALSE))
@@ -2987,7 +3001,7 @@ call_regreqfunc(void)
29873001
// like a normal one.
29883002
if (rrf_cb.cb_name == NULL)
29893003
return;
2990-
3004+
29913005
argvars[0].v_type = VAR_UNKNOWN;
29923006

29933007
textlock++;
@@ -3071,7 +3085,7 @@ call_regreqfunc(void)
30713085
&& get_yank_type(&reg_type, &yank_type, &block_len) == FAIL)
30723086
goto free_lstval;
30733087

3074-
y_current = get_y_register(CUSTOM_REGISTER);
3088+
y_current = &y_regs[CUSTOM_REGISTER];
30753089
old_y_current = y_current;
30763090

30773091
free_yank_all();
@@ -3109,7 +3123,7 @@ call_regsetfunc(void)
31093123
{
31103124
typval_T rettv;
31113125
typval_T argvars[3];
3112-
yankreg_T *y_ptr = get_y_register(CUSTOM_REGISTER);
3126+
yankreg_T *y_ptr = &y_regs[CUSTOM_REGISTER];
31133127
char_u type[2 + NUMBUFLEN] = {0};
31143128
list_T *list = NULL;
31153129

@@ -3354,7 +3368,7 @@ str_to_reg(
33543368
# endif
33553369

33563370
#ifdef FEAT_EVAL
3357-
if (y_ptr == get_y_register(CUSTOM_REGISTER))
3371+
if (y_ptr == &y_regs[CUSTOM_REGISTER])
33583372
call_regsetfunc();
33593373
#endif
33603374
}

src/structs.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4879,7 +4879,7 @@ typedef enum {
48794879
#define DELETION_REGISTER 36
48804880

48814881
#ifdef FEAT_EVAL
4882-
# define CUSTOM_REGISTER 37
4882+
# define CUSTOM_REGISTER 37
48834883
#endif
48844884

48854885
#ifdef FEAT_CLIPBOARD

src/viminfo.c

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1916,6 +1916,11 @@ write_viminfo_registers(FILE *fp)
19161916
// Neither do we want the '~' register
19171917
if (i == TILDE_REGISTER)
19181918
continue;
1919+
#endif
1920+
#ifdef FEAT_EVAL
1921+
// Skip the custom register as well
1922+
if (i == CUSTOM_REGISTER)
1923+
continue;
19191924
#endif
19201925
// When reading viminfo for merging and writing: Use the register from
19211926
// viminfo if it's newer.

0 commit comments

Comments
 (0)