Mercurial > emacs
changeset 107281:e8f3e6f246f6
Merge from mainline.
author | Katsumi Yamaoka <yamaoka@jpl.org> |
---|---|
date | Wed, 17 Feb 2010 22:09:13 +0000 |
parents | 742c52095274 (current diff) 6e6072f0c0a2 (diff) |
children | 5937202fb760 |
files | |
diffstat | 6 files changed, 47 insertions(+), 35 deletions(-) [+] |
line wrap: on
line diff
--- a/lisp/ChangeLog Tue Feb 16 21:53:57 2010 +0000 +++ b/lisp/ChangeLog Wed Feb 17 22:09:13 2010 +0000 @@ -1,3 +1,10 @@ +2010-02-17 Mark A. Hershberger <mah@everybody.org> + + * vc-bzr.el: fix typo in Known Bugs section. + + * isearch.el (isearch-update-post-hook): New hook + (isearch-update): Use the new hook. + 2010-02-16 Michael Albinus <michael.albinus@gmx.de> * net/tramp.el (tramp-do-copy-or-rename-file-out-of-band): Fix
--- a/lisp/isearch.el Tue Feb 16 21:53:57 2010 +0000 +++ b/lisp/isearch.el Wed Feb 17 22:09:13 2010 +0000 @@ -156,6 +156,9 @@ (defvar isearch-mode-hook nil "Function(s) to call after starting up an incremental search.") +(defvar isearch-update-post-hook nil + "Function(s) to call after isearch has found matches in the buffer.") + (defvar isearch-mode-end-hook nil "Function(s) to call after terminating an incremental search. When these functions are called, `isearch-mode-end-hook-quit' @@ -868,7 +871,8 @@ (isearch-lazy-highlight-new-loop)) ;; We must prevent the point moving to the end of composition when a ;; part of the composition has just been searched. - (setq disable-point-adjustment t)) + (setq disable-point-adjustment t) + (run-hooks 'isearch-update-post-hook)) (defun isearch-done (&optional nopush edit) "Exit Isearch mode.
--- a/lisp/vc-bzr.el Tue Feb 16 21:53:57 2010 +0000 +++ b/lisp/vc-bzr.el Wed Feb 17 22:09:13 2010 +0000 @@ -35,7 +35,7 @@ ;; Known bugs ;; ========== -;; When edititing a symlink and *both* the symlink and its target +;; When editing a symlink and *both* the symlink and its target ;; are bzr-versioned, `vc-bzr` presently runs `bzr status` on the ;; symlink, thereby not detecting whether the actual contents ;; (that is, the target contents) are changed.
--- a/src/ChangeLog Tue Feb 16 21:53:57 2010 +0000 +++ b/src/ChangeLog Wed Feb 17 22:09:13 2010 +0000 @@ -1,3 +1,13 @@ +2010-02-17 Kenichi Handa <handa@m17n.org> + + * coding.c (decode_coding_ccl): Don't setup ccl program here. Fix + for the case that the output buffer is fullfilled. + (decode_coding): Setup ccl program here. Keep looping when the + decoder stopped because the output buffer is + fullfilled (bug#5534). + + * ccl.c (ccl_driver): Never reset ic to CCL_HEADER_MAIN. + 2010-02-13 Jan Djärv <jan.h.d@swipnet.se> * xterm.c (x_clear_frame_area): Call gtk_widget_queue_draw if USE_GTK,
--- a/src/ccl.c Tue Feb 16 21:53:57 2010 +0000 +++ b/src/ccl.c Wed Feb 17 22:09:13 2010 +0000 @@ -883,9 +883,6 @@ int eof_ic = ccl->eof_ic; int eof_hit = 0; - if (ic >= eof_ic) - ic = CCL_HEADER_MAIN; - if (ccl->buf_magnification == 0) /* We can't read/produce any bytes. */ dst = NULL;
--- a/src/coding.c Tue Feb 16 21:53:57 2010 +0000 +++ b/src/coding.c Wed Feb 17 22:09:13 2010 +0000 @@ -5220,18 +5220,16 @@ int *charbuf_end = coding->charbuf + coding->charbuf_size; int consumed_chars = 0; int multibytep = coding->src_multibyte; - struct ccl_program ccl; + struct ccl_program *ccl = &coding->spec.ccl->ccl; int source_charbuf[1024]; int source_byteidx[1024]; Lisp_Object attrs, charset_list; CODING_GET_INFO (coding, attrs, charset_list); - setup_ccl_program (&ccl, CODING_CCL_DECODER (coding)); - - while (src < src_end) + + while (1) { const unsigned char *p = src; - int *source, *source_end; int i = 0; if (multibytep) @@ -5245,37 +5243,26 @@ source_charbuf[i++] = *p++; if (p == src_end && coding->mode & CODING_MODE_LAST_BLOCK) - ccl.last_block = 1; - - source = source_charbuf; - source_end = source + i; - while (source < source_end) - { - ccl_driver (&ccl, source, charbuf, - source_end - source, charbuf_end - charbuf, - charset_list); - source += ccl.consumed; - charbuf += ccl.produced; - if (ccl.status != CCL_STAT_SUSPEND_BY_DST) - break; - } - if (source < source_end) - src += source_byteidx[source - source_charbuf]; + ccl->last_block = 1; + ccl_driver (ccl, source_charbuf, charbuf, i, charbuf_end - charbuf, + charset_list); + charbuf += ccl->produced; + if (multibytep && ccl->consumed < i) + src += source_byteidx[ccl->consumed]; else - src = p; - consumed_chars += source - source_charbuf; - - if (ccl.status != CCL_STAT_SUSPEND_BY_SRC - && ccl.status != CODING_RESULT_INSUFFICIENT_SRC) + src += ccl->consumed; + consumed_chars += ccl->consumed; + if (p == src_end || ccl->status != CCL_STAT_SUSPEND_BY_SRC) break; } - switch (ccl.status) + switch (ccl->status) { case CCL_STAT_SUSPEND_BY_SRC: record_conversion_result (coding, CODING_RESULT_INSUFFICIENT_SRC); break; case CCL_STAT_SUSPEND_BY_DST: + record_conversion_result (coding, CODING_RESULT_INSUFFICIENT_DST); break; case CCL_STAT_QUIT: case CCL_STAT_INVALID_CMD: @@ -7117,6 +7104,7 @@ Lisp_Object attrs; Lisp_Object undo_list; Lisp_Object translation_table; + struct ccl_spec cclspec; int carryover; int i; @@ -7149,6 +7137,11 @@ translation_table = get_translation_table (attrs, 0, NULL); carryover = 0; + if (coding->decoder == decode_coding_ccl) + { + coding->spec.ccl = &cclspec; + setup_ccl_program (&cclspec.ccl, CODING_CCL_DECODER (coding)); + } do { EMACS_INT pos = coding->dst_pos + coding->produced_char; @@ -7165,9 +7158,10 @@ coding->charbuf[i] = coding->charbuf[coding->charbuf_used - carryover + i]; } - while (coding->consumed < coding->src_bytes - && (coding->result == CODING_RESULT_SUCCESS - || coding->result == CODING_RESULT_INVALID_SRC)); + while (coding->result == CODING_RESULT_INSUFFICIENT_DST + || (coding->consumed < coding->src_bytes + && (coding->result == CODING_RESULT_SUCCESS + || coding->result == CODING_RESULT_INVALID_SRC))); if (carryover > 0) {