mirror of
git://git.sv.gnu.org/emacs.git
synced 2025-12-20 20:50:53 -08:00
Merged in changes from CVS trunk.
Patches applied: * miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-714 Update from CVS git-archimport-id: lorentey@elte.hu--2004/emacs--multi-tty--0--patch-271
This commit is contained in:
commit
fad2f68580
200 changed files with 25780 additions and 10574 deletions
108
src/coding.c
108
src/coding.c
|
|
@ -6004,6 +6004,37 @@ code_convert_region (from, from_byte, to, to_byte, coding, encodep, replace)
|
|||
return 0;
|
||||
}
|
||||
|
||||
/* Name (or base name) of work buffer for code conversion. */
|
||||
static Lisp_Object Vcode_conversion_workbuf_name;
|
||||
|
||||
/* Set the current buffer to the working buffer prepared for
|
||||
code-conversion. MULTIBYTE specifies the multibyteness of the
|
||||
buffer. */
|
||||
|
||||
static struct buffer *
|
||||
set_conversion_work_buffer (multibyte)
|
||||
int multibyte;
|
||||
{
|
||||
Lisp_Object buffer;
|
||||
struct buffer *buf;
|
||||
|
||||
buffer = Fget_buffer_create (Vcode_conversion_workbuf_name);
|
||||
buf = XBUFFER (buffer);
|
||||
delete_all_overlays (buf);
|
||||
buf->directory = current_buffer->directory;
|
||||
buf->read_only = Qnil;
|
||||
buf->filename = Qnil;
|
||||
buf->undo_list = Qt;
|
||||
eassert (buf->overlays_before == NULL);
|
||||
eassert (buf->overlays_after == NULL);
|
||||
set_buffer_internal (buf);
|
||||
if (BEG != BEGV || Z != ZV)
|
||||
Fwiden ();
|
||||
del_range_2 (BEG, BEG_BYTE, Z, Z_BYTE, 0);
|
||||
buf->enable_multibyte_characters = multibyte ? Qt : Qnil;
|
||||
return buf;
|
||||
}
|
||||
|
||||
Lisp_Object
|
||||
run_pre_post_conversion_on_str (str, coding, encodep)
|
||||
Lisp_Object str;
|
||||
|
|
@ -6013,7 +6044,6 @@ run_pre_post_conversion_on_str (str, coding, encodep)
|
|||
int count = SPECPDL_INDEX ();
|
||||
struct gcpro gcpro1, gcpro2;
|
||||
int multibyte = STRING_MULTIBYTE (str);
|
||||
Lisp_Object buffer;
|
||||
struct buffer *buf;
|
||||
Lisp_Object old_deactivate_mark;
|
||||
|
||||
|
|
@ -6024,23 +6054,10 @@ run_pre_post_conversion_on_str (str, coding, encodep)
|
|||
old_deactivate_mark = Vdeactivate_mark;
|
||||
GCPRO2 (str, old_deactivate_mark);
|
||||
|
||||
buffer = Fget_buffer_create (build_string (" *code-converting-work*"));
|
||||
buf = XBUFFER (buffer);
|
||||
|
||||
delete_all_overlays (buf);
|
||||
buf->directory = current_buffer->directory;
|
||||
buf->read_only = Qnil;
|
||||
buf->filename = Qnil;
|
||||
buf->undo_list = Qt;
|
||||
eassert (buf->overlays_before == NULL);
|
||||
eassert (buf->overlays_after == NULL);
|
||||
|
||||
set_buffer_internal (buf);
|
||||
/* We must insert the contents of STR as is without
|
||||
unibyte<->multibyte conversion. For that, we adjust the
|
||||
multibyteness of the working buffer to that of STR. */
|
||||
Ferase_buffer ();
|
||||
buf->enable_multibyte_characters = multibyte ? Qt : Qnil;
|
||||
set_conversion_work_buffer (multibyte);
|
||||
|
||||
insert_from_string (str, 0, 0,
|
||||
SCHARS (str), SBYTES (str), 0);
|
||||
|
|
@ -6061,6 +6078,64 @@ run_pre_post_conversion_on_str (str, coding, encodep)
|
|||
return unbind_to (count, str);
|
||||
}
|
||||
|
||||
|
||||
/* Run pre-write-conversion function of CODING on NCHARS/NBYTES
|
||||
text in *STR. *SIZE is the allocated bytes for STR. As it
|
||||
is intended that this function is called from encode_terminal_code,
|
||||
the pre-write-conversion function is run by safe_call and thus
|
||||
"Error during redisplay: ..." is logged when an error occurs.
|
||||
|
||||
Store the resulting text in *STR and set CODING->produced_char and
|
||||
CODING->produced to the number of characters and bytes
|
||||
respectively. If the size of *STR is too small, enlarge it by
|
||||
xrealloc and update *STR and *SIZE. */
|
||||
|
||||
void
|
||||
run_pre_write_conversin_on_c_str (str, size, nchars, nbytes, coding)
|
||||
unsigned char **str;
|
||||
int *size, nchars, nbytes;
|
||||
struct coding_system *coding;
|
||||
{
|
||||
struct gcpro gcpro1, gcpro2;
|
||||
struct buffer *cur = current_buffer;
|
||||
Lisp_Object old_deactivate_mark, old_last_coding_system_used;
|
||||
Lisp_Object args[3];
|
||||
|
||||
/* It is not crucial to specbind this. */
|
||||
old_deactivate_mark = Vdeactivate_mark;
|
||||
old_last_coding_system_used = Vlast_coding_system_used;
|
||||
GCPRO2 (old_deactivate_mark, old_last_coding_system_used);
|
||||
|
||||
/* We must insert the contents of STR as is without
|
||||
unibyte<->multibyte conversion. For that, we adjust the
|
||||
multibyteness of the working buffer to that of STR. */
|
||||
set_conversion_work_buffer (coding->src_multibyte);
|
||||
insert_1_both (*str, nchars, nbytes, 0, 0, 0);
|
||||
UNGCPRO;
|
||||
inhibit_pre_post_conversion = 1;
|
||||
args[0] = coding->pre_write_conversion;
|
||||
args[1] = make_number (BEG);
|
||||
args[2] = make_number (Z);
|
||||
safe_call (3, args);
|
||||
inhibit_pre_post_conversion = 0;
|
||||
Vdeactivate_mark = old_deactivate_mark;
|
||||
Vlast_coding_system_used = old_last_coding_system_used;
|
||||
coding->produced_char = Z - BEG;
|
||||
coding->produced = Z_BYTE - BEG_BYTE;
|
||||
if (coding->produced > *size)
|
||||
{
|
||||
*size = coding->produced;
|
||||
*str = xrealloc (*str, *size);
|
||||
}
|
||||
if (BEG < GPT && GPT < Z)
|
||||
move_gap (BEG);
|
||||
bcopy (BEG_ADDR, *str, coding->produced);
|
||||
coding->src_multibyte
|
||||
= ! NILP (current_buffer->enable_multibyte_characters);
|
||||
set_buffer_internal (cur);
|
||||
}
|
||||
|
||||
|
||||
Lisp_Object
|
||||
decode_coding_string (str, coding, nocopy)
|
||||
Lisp_Object str;
|
||||
|
|
@ -7539,6 +7614,9 @@ init_coding_once ()
|
|||
void
|
||||
syms_of_coding ()
|
||||
{
|
||||
staticpro (&Vcode_conversion_workbuf_name);
|
||||
Vcode_conversion_workbuf_name = build_string (" *code-conversion-work*");
|
||||
|
||||
Qtarget_idx = intern ("target-idx");
|
||||
staticpro (&Qtarget_idx);
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue