57 |
|
|
58 |
extern Lisp_Object Voverriding_local_map; |
extern Lisp_Object Voverriding_local_map; |
59 |
|
|
60 |
|
extern Lisp_Object Qremap; |
61 |
|
|
62 |
/* For VMS versions with limited file name syntax, |
/* For VMS versions with limited file name syntax, |
63 |
convert the name to something VMS will allow. */ |
convert the name to something VMS will allow. */ |
64 |
static void |
static void |
814 |
else if (strp[0] == '\\' && strp[1] == '[') |
else if (strp[0] == '\\' && strp[1] == '[') |
815 |
{ |
{ |
816 |
int start_idx; |
int start_idx; |
817 |
|
int follow_remap = 1; |
818 |
|
|
819 |
changed = 1; |
changed = 1; |
820 |
strp += 2; /* skip \[ */ |
strp += 2; /* skip \[ */ |
833 |
idx = strp - SDATA (string); |
idx = strp - SDATA (string); |
834 |
name = Fintern (make_string (start, length_byte), Qnil); |
name = Fintern (make_string (start, length_byte), Qnil); |
835 |
|
|
836 |
|
do_remap: |
837 |
/* Ignore remappings unless there are no ordinary bindings. */ |
/* Ignore remappings unless there are no ordinary bindings. */ |
838 |
tem = Fwhere_is_internal (name, keymap, Qt, Qnil, Qt); |
tem = Fwhere_is_internal (name, keymap, Qt, Qnil, Qt); |
839 |
if (NILP (tem)) |
if (NILP (tem)) |
840 |
tem = Fwhere_is_internal (name, keymap, Qt, Qnil, Qnil); |
tem = Fwhere_is_internal (name, keymap, Qt, Qnil, Qnil); |
841 |
|
|
842 |
|
if (VECTORP (tem) && XVECTOR (tem)->size > 1 |
843 |
|
&& EQ (AREF (tem, 0), Qremap) && SYMBOLP (AREF (tem, 1)) |
844 |
|
&& follow_remap) |
845 |
|
{ |
846 |
|
name = AREF (tem, 1); |
847 |
|
follow_remap = 0; |
848 |
|
goto do_remap; |
849 |
|
} |
850 |
|
|
851 |
/* Note the Fwhere_is_internal can GC, so we have to take |
/* Note the Fwhere_is_internal can GC, so we have to take |
852 |
relocation of string contents into account. */ |
relocation of string contents into account. */ |
853 |
strp = SDATA (string) + idx; |
strp = SDATA (string) + idx; |