Now on revision 107921. ------------------------------------------------------------ revno: 107921 committer: Paul Eggert branch nick: trunk timestamp: Sun 2012-04-15 23:39:21 -0700 message: * alloc.c: Remove one incorrect comment and fix another. diff: === modified file 'src/ChangeLog' --- src/ChangeLog 2012-04-16 03:38:40 +0000 +++ src/ChangeLog 2012-04-16 06:39:21 +0000 @@ -8,6 +8,7 @@ GC_MALLOC_CHECK) && GC_MALLOC_CHECK), to match when it's used. (NEED_MEM_INSERT): New macro. (mem_insert, mem_insert_fixup) [!NEED_MEM_INSERT]: Remove; unused. + Remove one incorrect comment and fix another. Fix minor ralloc.c problems found by static checking. See http://lists.gnu.org/archive/html/emacs-devel/2011-12/msg00720.html === modified file 'src/alloc.c' --- src/alloc.c 2012-04-16 03:38:40 +0000 +++ src/alloc.c 2012-04-16 06:39:21 +0000 @@ -948,9 +948,6 @@ /* The entry point is lisp_align_malloc which returns blocks of at most BLOCK_BYTES and guarantees they are aligned on a BLOCK_ALIGN boundary. */ -/* Use posix_memalloc if the system has it and we're using the system's - malloc (because our gmalloc.c routines don't have posix_memalign although - its memalloc could be used). */ #if defined (HAVE_POSIX_MEMALIGN) && defined (SYSTEM_MALLOC) #define USE_POSIX_MEMALIGN 1 #endif @@ -1007,7 +1004,7 @@ struct ablock blocks[ABLOCKS_SIZE]; }; -/* Size of the block requested from malloc or memalign. */ +/* Size of the block requested from malloc or posix_memalign. */ #define ABLOCKS_BYTES (sizeof (struct ablocks) - BLOCK_PADDING) #define ABLOCK_ABASE(block) \ ------------------------------------------------------------ revno: 107920 committer: Chong Yidong branch nick: trunk timestamp: Mon 2012-04-16 11:47:43 +0800 message: Call imagemagick-register-types automatically. * lisp/image.el (imagemagick--extension-regexp): New variable. (imagemagick-register-types): Use it. (imagemagick-types-inhibit): Add :set function. Allow new value of t to inhibit all types. * lisp/loadup.el (fboundp): Preload regexp-opt, needed by imagemagick-register-types. * lisp/emacs-lisp/regexp-opt.el (regexp-opt-charset): Avoid cl macros, so we can preload it. diff: === modified file 'etc/NEWS' --- etc/NEWS 2012-04-15 09:16:50 +0000 +++ etc/NEWS 2012-04-16 03:47:43 +0000 @@ -35,6 +35,14 @@ ** If your Emacs was built from a bzr checkout, the new variable `emacs-bzr-version' contains information about which bzr revision was used. +** ImageMagick support, if available, is automatically enabled. +It is no longer necessary to call `imagemagick-register-types' +explicitly to install ImageMagick image types; that function is called +automatically when setting `imagemagick-types-inhibit'. + +*** Setting `imagemagick-types-inhibit' to t now disables the use of +ImageMagick to view images, set + * Editing Changes in Emacs 24.2 === modified file 'lisp/ChangeLog' --- lisp/ChangeLog 2012-04-15 15:11:06 +0000 +++ lisp/ChangeLog 2012-04-16 03:47:43 +0000 @@ -1,3 +1,16 @@ +2012-04-16 Chong Yidong + + * image.el (imagemagick--extension-regexp): New variable. + (imagemagick-register-types): Use it. + (imagemagick-types-inhibit): Add :set function. Allow new value + of t to inhibit all types. + + * emacs-lisp/regexp-opt.el (regexp-opt-charset): Avoid cl macros, + so we can preload it. + + * loadup.el (fboundp): Preload regexp-opt, needed by + imagemagick-register-types. + 2012-04-15 Chong Yidong * frame.el (scrolling): Remove nearly unused customization group. === modified file 'lisp/emacs-lisp/regexp-opt.el' --- lisp/emacs-lisp/regexp-opt.el 2012-02-28 08:17:21 +0000 +++ lisp/emacs-lisp/regexp-opt.el 2012-04-16 03:47:43 +0000 @@ -136,9 +136,6 @@ ;;; Workhorse functions. -(eval-when-compile - (require 'cl)) - (defun regexp-opt-group (strings &optional paren lax) "Return a regexp to match a string in the sorted list STRINGS. If PAREN non-nil, output regexp parentheses around returned regexp. @@ -248,15 +245,15 @@ ;; ;; Make a character map but extract character set meta characters. (dolist (char chars) - (case char - (?\] - (setq bracket "]")) - (?^ - (setq caret "^")) - (?- - (setq dash "-")) - (otherwise - (aset charmap char t)))) + (cond + ((eq char ?\]) + (setq bracket "]")) + ((eq char ?^) + (setq caret "^")) + ((eq char ?-) + (setq dash "-")) + (t + (aset charmap char t)))) ;; ;; Make a character set from the map using ranges where applicable. (map-char-table @@ -268,14 +265,14 @@ (setq charset (format "%s%c-%c" charset start end)) (while (>= end start) (setq charset (format "%s%c" charset start)) - (incf start))) + (setq start (1+ start)))) (setq start (car c) end (cdr c))) (if (= (1- c) end) (setq end c) (if (> end (+ start 2)) (setq charset (format "%s%c-%c" charset start end)) (while (>= end start) (setq charset (format "%s%c" charset start)) - (incf start))) + (setq start (1+ start)))) (setq start c end c))))) charmap) (when (>= end start) @@ -283,7 +280,7 @@ (setq charset (format "%s%c-%c" charset start end)) (while (>= end start) (setq charset (format "%s%c" charset start)) - (incf start)))) + (setq start (1+ start))))) ;; ;; Make sure a caret is not first and a dash is first or last. (if (and (string-equal charset "") (string-equal bracket "")) === modified file 'lisp/image.el' --- lisp/image.el 2012-04-10 02:34:57 +0000 +++ lisp/image.el 2012-04-16 03:47:43 +0000 @@ -685,26 +685,16 @@ image n count time-elapsed limit)))) -(defcustom imagemagick-types-inhibit - '(C HTML HTM TXT PDF) - "ImageMagick types that should not be visited in Image mode. -This should be a list of symbols, each of which should be one of -the ImageMagick types listed in `imagemagick-types'. These image -types are not registered by `imagemagick-register-types'. - -If Emacs is compiled without ImageMagick support, this variable -has no effect." - :type '(choice (const :tag "Let ImageMagick handle all types it can" nil) - (repeat symbol)) - ;; Ideally, would have a :set function that checks if we already did - ;; imagemagick-register-types, and if so undoes it, then redoes it. - :version "24.1" - :group 'image) +(defvar imagemagick--file-regexp nil + "File extension regexp for ImageMagick files, if any. +This is the extension installed into `auto-mode-alist' and +`image-type-file-name-regexps' by `imagemagick-register-types'.") ;;;###autoload (defun imagemagick-register-types () "Register file types that can be handled by ImageMagick. -This registers the ImageMagick types listed in `imagemagick-types', +This function is called at startup, after loading the init file. +It registers the ImageMagick types listed in `imagemagick-types', excluding those listed in `imagemagick-types-inhibit'. Registered image types are added to `auto-mode-alist', so that @@ -714,14 +704,45 @@ If Emacs is compiled without ImageMagick support, do nothing." (when (fboundp 'imagemagick-types) - (let ((im-types '())) - (dolist (im-type (imagemagick-types)) - (unless (memq im-type imagemagick-types-inhibit) - (push (downcase (symbol-name im-type)) im-types))) - (let ((extension (concat "\\." (regexp-opt im-types) "\\'"))) - (push (cons extension 'image-mode) auto-mode-alist) - (push (cons extension 'imagemagick) - image-type-file-name-regexps))))) + (let ((re (if (eq imagemagick-types-inhibit t) + ;; Use a bogus regexp to inhibit matches. + "\\'a" + (let ((types)) + (dolist (type (imagemagick-types)) + (unless (memq type imagemagick-types-inhibit) + (push (downcase (symbol-name type)) types))) + (concat "\\." (regexp-opt types) "\\'")))) + (ama-elt (car (member (cons imagemagick--file-regexp 'image-mode) + auto-mode-alist))) + (itfnr-elt (car (member (cons imagemagick--file-regexp 'imagemagick) + image-type-file-name-regexps)))) + (if ama-elt + (setcar ama-elt re) + (push (cons re 'image-mode) auto-mode-alist)) + (if itfnr-elt + (setcar itfnr-elt re) + (push (cons re 'imagemagick) image-type-file-name-regexps)) + (setq imagemagick--file-regexp re)))) + +(defcustom imagemagick-types-inhibit + '(C HTML HTM TXT PDF) + "List of ImageMagick types that should not be treated as images. +This should be a list of symbols, each of which should be one of +the ImageMagick types listed in `imagemagick-types'. The listed +image types are not registered by `imagemagick-register-types'. + +If the value is t, inhibit the use of ImageMagick for images. + +If Emacs is compiled without ImageMagick support, this variable +has no effect." + :type '(choice (const :tag "Support all ImageMagick types" nil) + (const :tag "Disable all ImageMagick types" t) + (repeat symbol)) + :set (lambda (symbol value) + (set-default symbol value) + (imagemagick-register-types)) + :version "24.1" + :group 'image) (provide 'image) === modified file 'lisp/loadup.el' --- lisp/loadup.el 2012-04-08 01:54:52 +0000 +++ lisp/loadup.el 2012-04-16 03:47:43 +0000 @@ -193,6 +193,8 @@ (if (fboundp 'x-create-frame) (progn (load "fringe") + ;; Needed by `imagemagick-register-types' + (load "emacs-lisp/regexp-opt") (load "image") (load "international/fontset") (load "dnd") ------------------------------------------------------------ revno: 107919 committer: Paul Eggert branch nick: trunk timestamp: Sun 2012-04-15 20:38:40 -0700 message: Fix minor alloc.c problems found by static checking. * alloc.c (_malloc_internal, _free_internal) [!DOUG_LEA_MALLOC]: New extern decls, to avoid calling undeclared functions. (dont_register_blocks): Define if ((!SYSTEM_MALLOC && !SYNC_INPUT) && GC_MALLOC_CHECK), not if ((GC_MARK_STACK || defined GC_MALLOC_CHECK) && GC_MALLOC_CHECK), to match when it's used. (NEED_MEM_INSERT): New macro. (mem_insert, mem_insert_fixup) [!NEED_MEM_INSERT]: Remove; unused. diff: === modified file 'src/ChangeLog' --- src/ChangeLog 2012-04-16 01:18:13 +0000 +++ src/ChangeLog 2012-04-16 03:38:40 +0000 @@ -1,5 +1,14 @@ 2012-04-16 Paul Eggert + Fix minor alloc.c problems found by static checking. + * alloc.c (_malloc_internal, _free_internal) [!DOUG_LEA_MALLOC]: + New extern decls, to avoid calling undeclared functions. + (dont_register_blocks): Define if ((!SYSTEM_MALLOC && !SYNC_INPUT) + && GC_MALLOC_CHECK), not if ((GC_MARK_STACK || defined + GC_MALLOC_CHECK) && GC_MALLOC_CHECK), to match when it's used. + (NEED_MEM_INSERT): New macro. + (mem_insert, mem_insert_fixup) [!NEED_MEM_INSERT]: Remove; unused. + Fix minor ralloc.c problems found by static checking. See http://lists.gnu.org/archive/html/emacs-devel/2011-12/msg00720.html * ralloc.c (ALIGNED, ROUND_TO_PAGE, HEAP_PTR_SIZE) === modified file 'src/alloc.c' --- src/alloc.c 2012-04-16 00:33:25 +0000 +++ src/alloc.c 2012-04-16 03:38:40 +0000 @@ -82,6 +82,8 @@ extern size_t _bytes_used; extern size_t __malloc_extra_blocks; +extern void *_malloc_internal (size_t); +extern void _free_internal (void *); #endif /* not DOUG_LEA_MALLOC */ @@ -314,7 +316,6 @@ #ifdef GC_MALLOC_CHECK enum mem_type allocated_mem_type; -static int dont_register_blocks; #endif /* GC_MALLOC_CHECK */ @@ -391,8 +392,13 @@ static void mark_maybe_object (Lisp_Object); static void mark_memory (void *, void *); static void mem_init (void); +#if (defined GC_MALLOC_CHECK \ + ? !defined SYSTEM_MALLOC && !defined SYNC_INPUT \ + : GC_MARK_STACK) +# define NEED_MEM_INSERT static struct mem_node *mem_insert (void *, void *, enum mem_type); static void mem_insert_fixup (struct mem_node *); +#endif static void mem_rotate_left (struct mem_node *); static void mem_rotate_right (struct mem_node *); static void mem_delete (struct mem_node *); @@ -1223,6 +1229,10 @@ # define BYTES_USED _bytes_used #endif +#ifdef GC_MALLOC_CHECK +static int dont_register_blocks; +#endif + static size_t bytes_used_when_reconsidered; /* Value of _bytes_used, when spare_memory was freed. */ @@ -3571,6 +3581,8 @@ } +#ifdef NEED_MEM_INSERT + /* Insert a new node into the tree for a block of memory with start address START, end address END, and type TYPE. Value is a pointer to the node that was inserted. */ @@ -3718,6 +3730,8 @@ mem_root->color = MEM_BLACK; } +#endif /* NEED_MEM_INSERT */ + /* (x) (y) / \ / \ ------------------------------------------------------------ revno: 107918 committer: Paul Eggert branch nick: trunk timestamp: Sun 2012-04-15 18:18:13 -0700 message: Fix minor ralloc.c problems found by static checking. See http://lists.gnu.org/archive/html/emacs-devel/2011-12/msg00720.html * ralloc.c (ALIGNED, ROUND_TO_PAGE, HEAP_PTR_SIZE) (r_alloc_size_in_use, r_alloc_freeze, r_alloc_thaw): Remove; unused. (r_alloc_sbrk): Now static. diff: === modified file 'src/ChangeLog' --- src/ChangeLog 2012-04-16 01:10:42 +0000 +++ src/ChangeLog 2012-04-16 01:18:13 +0000 @@ -1,5 +1,11 @@ 2012-04-16 Paul Eggert + Fix minor ralloc.c problems found by static checking. + See http://lists.gnu.org/archive/html/emacs-devel/2011-12/msg00720.html + * ralloc.c (ALIGNED, ROUND_TO_PAGE, HEAP_PTR_SIZE) + (r_alloc_size_in_use, r_alloc_freeze, r_alloc_thaw): Remove; unused. + (r_alloc_sbrk): Now static. + Improve ralloc.c interface checking. See http://lists.gnu.org/archive/html/emacs-devel/2011-12/msg00720.html * buffer.c (ralloc_reset_variable, r_alloc, r_re_alloc) === modified file 'src/ralloc.c' --- src/ralloc.c 2012-02-01 16:51:20 +0000 +++ src/ralloc.c 2012-04-16 01:18:13 +0000 @@ -95,10 +95,8 @@ /* Macros for rounding. Note that rounding to any value is possible by changing the definition of PAGE. */ #define PAGE (getpagesize ()) -#define ALIGNED(addr) (((unsigned long int) (addr) & (page_size - 1)) == 0) #define ROUNDUP(size) (((unsigned long int) (size) + page_size - 1) \ & ~(page_size - 1)) -#define ROUND_TO_PAGE(addr) (addr & (~(page_size - 1))) #define MEM_ALIGN sizeof (double) #define MEM_ROUNDUP(addr) (((unsigned long int)(addr) + MEM_ALIGN - 1) \ @@ -151,7 +149,6 @@ } *heap_ptr; #define NIL_HEAP ((heap_ptr) 0) -#define HEAP_PTR_SIZE (sizeof (struct heap)) /* This is the first heap object. If we need additional heap objects, each one resides at the beginning of @@ -366,15 +363,6 @@ } } } - -/* Return the total size in use by relocating allocator, - above where malloc gets space. */ - -long -r_alloc_size_in_use (void) -{ - return (char *) break_value - (char *) virtual_break_value; -} /* The meat - allocating, freeing, and relocating blocs. */ @@ -748,7 +736,7 @@ __morecore hook values - in particular, __default_morecore in the GNU malloc package. */ -POINTER +static POINTER r_alloc_sbrk (long int size) { register bloc_ptr b; @@ -1014,52 +1002,6 @@ return *ptr; } -/* Disable relocations, after making room for at least SIZE bytes - of non-relocatable heap if possible. The relocatable blocs are - guaranteed to hold still until thawed, even if this means that - malloc must return a null pointer. */ - -void -r_alloc_freeze (long int size) -{ - if (! r_alloc_initialized) - r_alloc_init (); - - /* If already frozen, we can't make any more room, so don't try. */ - if (r_alloc_freeze_level > 0) - size = 0; - /* If we can't get the amount requested, half is better than nothing. */ - while (size > 0 && r_alloc_sbrk (size) == 0) - size /= 2; - ++r_alloc_freeze_level; - if (size > 0) - r_alloc_sbrk (-size); -} - -void -r_alloc_thaw (void) -{ - - if (! r_alloc_initialized) - r_alloc_init (); - - if (--r_alloc_freeze_level < 0) - abort (); - - /* This frees all unused blocs. It is not too inefficient, as the resize - and memcpy is done only once. Afterwards, all unreferenced blocs are - already shrunk to zero size. */ - if (!r_alloc_freeze_level) - { - bloc_ptr *b = &first_bloc; - while (*b) - if (!(*b)->variable) - free_bloc (*b); - else - b = &(*b)->next; - } -} - #if defined (emacs) && defined (DOUG_LEA_MALLOC) ------------------------------------------------------------ revno: 107917 committer: Paul Eggert branch nick: trunk timestamp: Sun 2012-04-15 18:10:42 -0700 message: Improve ralloc.c interface checking. See http://lists.gnu.org/archive/html/emacs-devel/2011-12/msg00720.html * buffer.c (ralloc_reset_variable, r_alloc, r_re_alloc) (r_alloc_free) [REL_ALLOC]: Move decls from here ... * lisp.h (r_alloc, r_alloc_free, r_re_alloc, r_alloc_reset_variable) [REL_ALLOC]: ... to here, to check interface. * m/ia64.h (r_alloc, r_alloc_free) [REL_ALLOC && !_MALLOC_INTERNAL]: Remove decls. This fixes an "It stinks!". diff: === modified file 'src/ChangeLog' --- src/ChangeLog 2012-04-16 00:33:25 +0000 +++ src/ChangeLog 2012-04-16 01:10:42 +0000 @@ -1,5 +1,14 @@ 2012-04-16 Paul Eggert + Improve ralloc.c interface checking. + See http://lists.gnu.org/archive/html/emacs-devel/2011-12/msg00720.html + * buffer.c (ralloc_reset_variable, r_alloc, r_re_alloc) + (r_alloc_free) [REL_ALLOC]: Move decls from here ... + * lisp.h (r_alloc, r_alloc_free, r_re_alloc, r_alloc_reset_variable) + [REL_ALLOC]: ... to here, to check interface. + * m/ia64.h (r_alloc, r_alloc_free) [REL_ALLOC && !_MALLOC_INTERNAL]: + Remove decls. This fixes an "It stinks!". + * alloc.c (which_symbols): Fix alignment issue / type clash. 2012-04-15 Andreas Schwab === modified file 'src/buffer.c' --- src/buffer.c 2012-04-09 13:05:48 +0000 +++ src/buffer.c 2012-04-16 01:10:42 +0000 @@ -2006,10 +2006,6 @@ return byte_pos; } -#ifdef REL_ALLOC -extern void r_alloc_reset_variable (POINTER_TYPE *, POINTER_TYPE *); -#endif /* REL_ALLOC */ - DEFUN ("buffer-swap-text", Fbuffer_swap_text, Sbuffer_swap_text, 1, 1, 0, doc: /* Swap the text between current buffer and BUFFER. */) @@ -4771,13 +4767,6 @@ Buffer-text Allocation ***********************************************************************/ -#ifdef REL_ALLOC -extern POINTER_TYPE *r_alloc (POINTER_TYPE **, size_t); -extern POINTER_TYPE *r_re_alloc (POINTER_TYPE **, size_t); -extern void r_alloc_free (POINTER_TYPE **ptr); -#endif /* REL_ALLOC */ - - /* Allocate NBYTES bytes for buffer B's text buffer. */ static void === modified file 'src/lisp.h' --- src/lisp.h 2012-04-15 16:20:54 +0000 +++ src/lisp.h 2012-04-16 01:10:42 +0000 @@ -2832,6 +2832,14 @@ extern struct buffer * allocate_buffer (void); extern int valid_lisp_object_p (Lisp_Object); +#ifdef REL_ALLOC +/* Defined in ralloc.c */ +extern void *r_alloc (void **, size_t); +extern void r_alloc_free (void **); +extern void *r_re_alloc (void **, size_t); +extern void r_alloc_reset_variable (void **, void **); +#endif + /* Defined in chartab.c */ EXFUN (Fmake_char_table, 2); EXFUN (Fset_char_table_parent, 2); === modified file 'src/m/ia64.h' --- src/m/ia64.h 2012-01-19 07:21:25 +0000 +++ src/m/ia64.h 2012-04-16 01:10:42 +0000 @@ -30,13 +30,3 @@ #define EMACS_INT long #define pI "l" #define EMACS_UINT unsigned long - -#ifdef REL_ALLOC -#ifndef _MALLOC_INTERNAL -/* "char *" because ralloc.c defines it that way. gmalloc.c thinks it - is allowed to prototype these as "void *" so we don't prototype in - that case. You're right: it stinks! */ -extern char *r_alloc (), *r_re_alloc (); -extern void r_alloc_free (); -#endif /* not _MALLOC_INTERNAL */ -#endif /* REL_ALLOC */ ------------------------------------------------------------ revno: 107916 committer: Paul Eggert branch nick: trunk timestamp: Sun 2012-04-15 17:41:01 -0700 message: Assume less-ancient POSIX support. * update-game-score.c: Include rather than rolling our own decls for optarg, optind, opterr. See . diff: === modified file 'lib-src/ChangeLog' --- lib-src/ChangeLog 2012-04-15 02:59:30 +0000 +++ lib-src/ChangeLog 2012-04-16 00:41:01 +0000 @@ -1,3 +1,10 @@ +2012-04-16 Paul Eggert + + Assume less-ancient POSIX support. + * update-game-score.c: Include rather than rolling our + own decls for optarg, optind, opterr. See + . + 2012-04-14 Juanma Barranquero * emacsclient.c (decode_options) [WINDOWSNT]: === modified file 'lib-src/update-game-score.c' --- lib-src/update-game-score.c 2012-01-19 07:21:25 +0000 +++ lib-src/update-game-score.c 2012-04-16 00:41:01 +0000 @@ -46,10 +46,7 @@ #include #endif #include - -/* Needed for SunOS4, for instance. */ -extern char *optarg; -extern int optind, opterr; +#include static int usage (int err) NO_RETURN; ------------------------------------------------------------ revno: 107915 committer: Paul Eggert branch nick: trunk timestamp: Sun 2012-04-15 17:33:25 -0700 message: * alloc.c (which_symbols): Fix alignment issue / type clash. diff: === modified file 'src/ChangeLog' --- src/ChangeLog 2012-04-15 16:20:54 +0000 +++ src/ChangeLog 2012-04-16 00:33:25 +0000 @@ -1,3 +1,7 @@ +2012-04-16 Paul Eggert + + * alloc.c (which_symbols): Fix alignment issue / type clash. + 2012-04-15 Andreas Schwab * lisp.h (struct Lisp_Symbol): Remove explicit padding. === modified file 'src/alloc.c' --- src/alloc.c 2012-04-15 16:20:54 +0000 +++ src/alloc.c 2012-04-16 00:33:25 +0000 @@ -6320,11 +6320,12 @@ { for (sblk = symbol_block; sblk; sblk = sblk->next) { - struct Lisp_Symbol *sym = sblk->symbols; + union aligned_Lisp_Symbol *aligned_sym = sblk->symbols; int bn; - for (bn = 0; bn < SYMBOL_BLOCK_SIZE; bn++, sym++) + for (bn = 0; bn < SYMBOL_BLOCK_SIZE; bn++, aligned_sym++) { + struct Lisp_Symbol *sym = &aligned_sym->s; Lisp_Object val; Lisp_Object tem; ------------------------------------------------------------ revno: 107914 committer: Andreas Schwab branch nick: emacs timestamp: Sun 2012-04-15 18:20:54 +0200 message: Simplify enforcement of object address alignment * lisp.h (struct Lisp_Symbol): Remove explicit padding. (struct Lisp_Misc_Any): Likewise. (struct Lisp_Free): Likewise. * alloc.c (union aligned_Lisp_Symbol): Define. (SYMBOL_BLOCK_SIZE, struct symbol_block): Use union aligned_Lisp_Symbol instead of struct Lisp_Symbol. (union aligned_Lisp_Misc): Define. (MARKER_BLOCK_SIZE, struct marker_block): Use union aligned_Lisp_Misc instead of union Lisp_Misc. (Fmake_symbol, allocate_misc, gc_sweep): Adjust diff: === modified file 'src/ChangeLog' --- src/ChangeLog 2012-04-15 02:59:30 +0000 +++ src/ChangeLog 2012-04-15 16:20:54 +0000 @@ -1,3 +1,16 @@ +2012-04-15 Andreas Schwab + + * lisp.h (struct Lisp_Symbol): Remove explicit padding. + (struct Lisp_Misc_Any): Likewise. + (struct Lisp_Free): Likewise. + * alloc.c (union aligned_Lisp_Symbol): Define. + (SYMBOL_BLOCK_SIZE, struct symbol_block): Use union + aligned_Lisp_Symbol instead of struct Lisp_Symbol. + (union aligned_Lisp_Misc): Define. + (MARKER_BLOCK_SIZE, struct marker_block): Use union + aligned_Lisp_Misc instead of union Lisp_Misc. + (Fmake_symbol, allocate_misc, gc_sweep): Adjust + 2012-04-14 Paul Eggert Make GC_MAKE_GCPROS_NOOPS the default (Bug#9926). === modified file 'src/alloc.c' --- src/alloc.c 2012-04-11 00:51:44 +0000 +++ src/alloc.c 2012-04-15 16:20:54 +0000 @@ -3136,17 +3136,29 @@ Symbol Allocation ***********************************************************************/ +/* Like struct Lisp_Symbol, but padded so that the size is a multiple + of the required alignment if LSB tags are used. */ + +union aligned_Lisp_Symbol +{ + struct Lisp_Symbol s; +#ifdef USE_LSB_TAG + unsigned char c[(sizeof (struct Lisp_Symbol) + (1 << GCTYPEBITS) - 1) + & -(1 << GCTYPEBITS)]; +#endif +}; + /* Each symbol_block is just under 1020 bytes long, since malloc really allocates in units of powers of two and uses 4 bytes for its own overhead. */ #define SYMBOL_BLOCK_SIZE \ - ((1020 - sizeof (struct symbol_block *)) / sizeof (struct Lisp_Symbol)) + ((1020 - sizeof (struct symbol_block *)) / sizeof (union aligned_Lisp_Symbol)) struct symbol_block { /* Place `symbols' first, to preserve alignment. */ - struct Lisp_Symbol symbols[SYMBOL_BLOCK_SIZE]; + union aligned_Lisp_Symbol symbols[SYMBOL_BLOCK_SIZE]; struct symbol_block *next; }; @@ -3202,7 +3214,7 @@ symbol_block = new; symbol_block_index = 0; } - XSETSYMBOL (val, &symbol_block->symbols[symbol_block_index]); + XSETSYMBOL (val, &symbol_block->symbols[symbol_block_index].s); symbol_block_index++; } @@ -3230,16 +3242,28 @@ Marker (Misc) Allocation ***********************************************************************/ +/* Like union Lisp_Misc, but padded so that its size is a multiple of + the required alignment when LSB tags are used. */ + +union aligned_Lisp_Misc +{ + union Lisp_Misc m; +#ifdef USE_LSB_TAG + unsigned char c[(sizeof (union Lisp_Misc) + (1 << GCTYPEBITS) - 1) + & -(1 << GCTYPEBITS)]; +#endif +}; + /* Allocation of markers and other objects that share that structure. Works like allocation of conses. */ #define MARKER_BLOCK_SIZE \ - ((1020 - sizeof (struct marker_block *)) / sizeof (union Lisp_Misc)) + ((1020 - sizeof (struct marker_block *)) / sizeof (union aligned_Lisp_Misc)) struct marker_block { /* Place `markers' first, to preserve alignment. */ - union Lisp_Misc markers[MARKER_BLOCK_SIZE]; + union aligned_Lisp_Misc markers[MARKER_BLOCK_SIZE]; struct marker_block *next; }; @@ -3284,7 +3308,7 @@ marker_block_index = 0; total_free_markers += MARKER_BLOCK_SIZE; } - XSETMISC (val, &marker_block->markers[marker_block_index]); + XSETMISC (val, &marker_block->markers[marker_block_index].m); marker_block_index++; } @@ -6070,22 +6094,22 @@ for (sblk = symbol_block; sblk; sblk = *sprev) { int this_free = 0; - struct Lisp_Symbol *sym = sblk->symbols; - struct Lisp_Symbol *end = sym + lim; + union aligned_Lisp_Symbol *sym = sblk->symbols; + union aligned_Lisp_Symbol *end = sym + lim; for (; sym < end; ++sym) { /* Check if the symbol was created during loadup. In such a case it might be pointed to by pure bytecode which we don't trace, so we conservatively assume that it is live. */ - int pure_p = PURE_POINTER_P (XSTRING (sym->xname)); + int pure_p = PURE_POINTER_P (XSTRING (sym->s.xname)); - if (!sym->gcmarkbit && !pure_p) + if (!sym->s.gcmarkbit && !pure_p) { - if (sym->redirect == SYMBOL_LOCALIZED) - xfree (SYMBOL_BLV (sym)); - sym->next = symbol_free_list; - symbol_free_list = sym; + if (sym->s.redirect == SYMBOL_LOCALIZED) + xfree (SYMBOL_BLV (&sym->s)); + sym->s.next = symbol_free_list; + symbol_free_list = &sym->s; #if GC_MARK_STACK symbol_free_list->function = Vdead; #endif @@ -6095,8 +6119,8 @@ { ++num_used; if (!pure_p) - UNMARK_STRING (XSTRING (sym->xname)); - sym->gcmarkbit = 0; + UNMARK_STRING (XSTRING (sym->s.xname)); + sym->s.gcmarkbit = 0; } } @@ -6108,7 +6132,7 @@ { *sprev = sblk->next; /* Unhook from the free list. */ - symbol_free_list = sblk->symbols[0].next; + symbol_free_list = sblk->symbols[0].s.next; lisp_free (sblk); } else @@ -6138,22 +6162,22 @@ for (i = 0; i < lim; i++) { - if (!mblk->markers[i].u_any.gcmarkbit) + if (!mblk->markers[i].m.u_any.gcmarkbit) { - if (mblk->markers[i].u_any.type == Lisp_Misc_Marker) - unchain_marker (&mblk->markers[i].u_marker); + if (mblk->markers[i].m.u_any.type == Lisp_Misc_Marker) + unchain_marker (&mblk->markers[i].m.u_marker); /* Set the type of the freed object to Lisp_Misc_Free. We could leave the type alone, since nobody checks it, but this might catch bugs faster. */ - mblk->markers[i].u_marker.type = Lisp_Misc_Free; - mblk->markers[i].u_free.chain = marker_free_list; - marker_free_list = &mblk->markers[i]; + mblk->markers[i].m.u_marker.type = Lisp_Misc_Free; + mblk->markers[i].m.u_free.chain = marker_free_list; + marker_free_list = &mblk->markers[i].m; this_free++; } else { num_used++; - mblk->markers[i].u_any.gcmarkbit = 0; + mblk->markers[i].m.u_any.gcmarkbit = 0; } } lim = MARKER_BLOCK_SIZE; @@ -6164,7 +6188,7 @@ { *mprev = mblk->next; /* Unhook from the free list. */ - marker_free_list = mblk->markers[0].u_free.chain; + marker_free_list = mblk->markers[0].m.u_free.chain; lisp_free (mblk); } else === modified file 'src/lisp.h' --- src/lisp.h 2012-04-14 06:18:49 +0000 +++ src/lisp.h 2012-04-15 16:20:54 +0000 @@ -1134,8 +1134,6 @@ special (with `defvar' etc), and shouldn't be lexically bound. */ unsigned declared_special : 1; - unsigned spacer : 23; - /* The symbol's name, as a Lisp string. The name "xname" is used to intentionally break code referring to the old field "name" of type pointer to struct Lisp_String. */ @@ -1337,8 +1335,6 @@ ENUM_BF (Lisp_Misc_Type) type : 16; /* = Lisp_Misc_??? */ unsigned gcmarkbit : 1; int spacer : 15; - /* Make it as long as "Lisp_Free without padding". */ - void *fill; }; struct Lisp_Marker @@ -1530,13 +1526,6 @@ unsigned gcmarkbit : 1; int spacer : 15; union Lisp_Misc *chain; -#ifdef USE_LSB_TAG - /* Try to make sure that sizeof(Lisp_Misc) preserves TYPEBITS-alignment. - This assumes that Lisp_Marker is the largest of the alternatives and - that Lisp_Misc_Any has the same size as "Lisp_Free w/o padding". */ - char padding[((((sizeof (struct Lisp_Marker) - 1) >> GCTYPEBITS) + 1) - << GCTYPEBITS) - sizeof (struct Lisp_Misc_Any)]; -#endif }; /* To get the type field of a union Lisp_Misc, use XMISCTYPE. @@ -1545,19 +1534,19 @@ union Lisp_Misc { struct Lisp_Misc_Any u_any; /* Supertype of all Misc types. */ - struct Lisp_Free u_free; /* Includes padding to force alignment. */ - struct Lisp_Marker u_marker; /* 5 */ - struct Lisp_Overlay u_overlay; /* 5 */ - struct Lisp_Save_Value u_save_value; /* 3 */ + struct Lisp_Free u_free; + struct Lisp_Marker u_marker; + struct Lisp_Overlay u_overlay; + struct Lisp_Save_Value u_save_value; }; union Lisp_Fwd { - struct Lisp_Intfwd u_intfwd; /* 2 */ - struct Lisp_Boolfwd u_boolfwd; /* 2 */ - struct Lisp_Objfwd u_objfwd; /* 2 */ - struct Lisp_Buffer_Objfwd u_buffer_objfwd; /* 2 */ - struct Lisp_Kboard_Objfwd u_kboard_objfwd; /* 2 */ + struct Lisp_Intfwd u_intfwd; + struct Lisp_Boolfwd u_boolfwd; + struct Lisp_Objfwd u_objfwd; + struct Lisp_Buffer_Objfwd u_buffer_objfwd; + struct Lisp_Kboard_Objfwd u_kboard_objfwd; }; /* Lisp floating point type */ ------------------------------------------------------------ revno: 107913 committer: Chong Yidong branch nick: trunk timestamp: Sun 2012-04-15 23:15:00 +0800 message: lisp/frame.el: Minor rearrangement. diff: === modified file 'lisp/frame.el' --- lisp/frame.el 2012-02-01 08:13:02 +0000 +++ lisp/frame.el 2012-04-15 15:15:00 +0000 @@ -1557,21 +1557,6 @@ 'delete-frame-functions "22.1") -;; Highlighting trailing whitespace. - -(make-variable-buffer-local 'show-trailing-whitespace) - - -;; Scrolling - -(defgroup scrolling nil - "Scrolling windows." - :version "21.1" - :group 'frames) - -(defvaralias 'automatic-hscrolling 'auto-hscroll-mode) - - ;; Blinking cursor (defgroup cursor nil @@ -1663,6 +1648,13 @@ (define-key ctl-x-5-map "0" 'delete-frame) (define-key ctl-x-5-map "o" 'other-frame) + +;; Misc. + +(defvaralias 'automatic-hscrolling 'auto-hscroll-mode) + +(make-variable-buffer-local 'show-trailing-whitespace) + (provide 'frame) ;;; frame.el ends here ------------------------------------------------------------ revno: 107912 committer: Chong Yidong branch nick: trunk timestamp: Sun 2012-04-15 23:11:06 +0800 message: * lisp/frame.el (scrolling): Remove nearly unused customization group. * lisp/scroll-all.el (scroll-all-mode): Move to windows group. diff: === modified file 'lisp/ChangeLog' --- lisp/ChangeLog 2012-04-15 09:16:50 +0000 +++ lisp/ChangeLog 2012-04-15 15:11:06 +0000 @@ -1,5 +1,11 @@ 2012-04-15 Chong Yidong + * frame.el (scrolling): Remove nearly unused customization group. + + * scroll-all.el (scroll-all-mode): Move to windows group. + +2012-04-15 Chong Yidong + * bindings.el (goto-map): Bind goto-char to M-g c (Bug#11240). 2012-04-15 Stefan Monnier === modified file 'lisp/scroll-all.el' --- lisp/scroll-all.el 2012-01-19 07:21:25 +0000 +++ lisp/scroll-all.el 2012-04-15 15:11:06 +0000 @@ -111,7 +111,6 @@ nil " *SL*" nil :global t :group 'windows - :group 'scrolling (if scroll-all-mode (add-hook 'post-command-hook 'scroll-all-check-to-scroll) (remove-hook 'post-command-hook 'scroll-all-check-to-scroll))) === modified file 'lisp/window.el' --- lisp/window.el 2012-04-11 02:36:04 +0000 +++ lisp/window.el 2012-04-15 15:11:06 +0000 @@ -5443,7 +5443,7 @@ \(depending on scrolling direction) when no more scrolling possible. When point is already on that position, then signal an error." :type 'boolean - :group 'scrolling + :group 'windows :version "24.1") (defun scroll-up-command (&optional arg) ------------------------------------------------------------ revno: 107911 fixes bug(s): http://debbugs.gnu.org/11240 committer: Chong Yidong branch nick: trunk timestamp: Sun 2012-04-15 17:16:50 +0800 message: * bindings.el (goto-map): Bind goto-char to M-g c. diff: === modified file 'etc/NEWS' --- etc/NEWS 2012-04-14 11:16:17 +0000 +++ etc/NEWS 2012-04-15 09:16:50 +0000 @@ -47,6 +47,8 @@ ** `C-M-f' and `C-M-b' will now move to the path name separator character when doing minibuffer filename prompts. +** `goto-char' is now bound to `M-g c'. + * Changes in Specialized Modes and Packages in Emacs 24.2 === modified file 'lisp/ChangeLog' --- lisp/ChangeLog 2012-04-15 07:28:01 +0000 +++ lisp/ChangeLog 2012-04-15 09:16:50 +0000 @@ -1,3 +1,7 @@ +2012-04-15 Chong Yidong + + * bindings.el (goto-map): Bind goto-char to M-g c (Bug#11240). + 2012-04-15 Stefan Monnier Avoid the use of ((lambda ...) ...) in lexical-binding code. === modified file 'lisp/bindings.el' --- lisp/bindings.el 2012-01-19 07:21:25 +0000 +++ lisp/bindings.el 2012-04-15 09:16:50 +0000 @@ -868,6 +868,7 @@ "Keymap for navigation commands.") (define-key esc-map "g" goto-map) +(define-key goto-map "c" 'goto-char) (define-key goto-map "g" 'goto-line) (define-key goto-map "\M-g" 'goto-line) (define-key goto-map "n" 'next-error) ------------------------------------------------------------ revno: 107910 [merge] committer: Chong Yidong branch nick: trunk timestamp: Sun 2012-04-15 15:31:15 +0800 message: Merge from emacs-24 branch diff: === modified file 'admin/FOR-RELEASE' --- admin/FOR-RELEASE 2012-04-04 07:27:17 +0000 +++ admin/FOR-RELEASE 2012-04-14 20:43:11 +0000 @@ -155,13 +155,8 @@ misc.texi cyd modes.texi cyd msdog.texi rgm (can't actually test any of it though) - It was not obvious to me that the following is true (it could well be though): - - Emacs on Windows automatically determines your default printer and - sets the variable `printer-name' to that printer's name. - msdog-xtra.texi rgm (can't actually test any of it though) -mule.texi +mule.texi rgm (not 100% sure about "Fontsets") m-x.texi cyd package.texi cyd picture-xtra.texi rgm @@ -182,7 +177,7 @@ abbrevs.texi rgm advice.texi cyd -anti.texi +anti.texi rgm back.texi rgm backups.texi cyd buffers.texi cyd === modified file 'doc/emacs/ChangeLog' --- doc/emacs/ChangeLog 2012-04-14 01:46:06 +0000 +++ doc/emacs/ChangeLog 2012-04-15 07:28:01 +0000 @@ -1,3 +1,37 @@ +2012-04-15 Chong Yidong + + * misc.texi (emacsclient Options): More clarifications. + +2012-04-15 Glenn Morris + + * msdog.texi (Windows Printing): It doesn't set printer-name. + + * mule.texi (Language Environments): Move font info to "Fontsets". + (Fontsets): Move intlfonts etc here from "Language Environments". + Copyedits. + (Defining Fontsets, Modifying Fontsets, Undisplayable Characters) + (Unibyte Mode, Charsets, Bidirectional Editing): Copyedits. + +2012-04-15 Chong Yidong + + * glossary.texi (Glossary): Standardize on "text terminal" + terminology. All callers changed. + + * misc.texi (emacsclient Options): Document "client frame" concept + and its effect on C-x C-c more carefully. + +2012-04-15 Glenn Morris + + * frames.texi (Scroll Bars): + * glossary.texi (Glossary): Use consistent case for "X Window System". + + * mule.texi (Select Input Method, Coding Systems): + State command names in kbd tables. + (Recognize Coding): Add cross-ref. + (Output Coding): Don't mention message mode in particular. + (Text Coding, Communication Coding, File Name Coding, Terminal Coding): + Copyedits. + 2012-04-14 Glenn Morris * mule.texi (Select Input Method, Coding Systems, Recognize Coding): === modified file 'doc/emacs/ack.texi' --- doc/emacs/ack.texi 2012-04-12 23:51:19 +0000 +++ doc/emacs/ack.texi 2012-04-15 07:28:01 +0000 @@ -690,8 +690,8 @@ creates a virtual Info manual of package keywords. @item -Károly L@H{o}rentey wrote the ``multi-terminal'' code, which allows Emacs to -run on graphical and text-only terminals simultaneously. +Károly L@H{o}rentey wrote the ``multi-terminal'' code, which allows +Emacs to run on graphical and text terminals simultaneously. @item Martin Lorentzon wrote @file{vc-annotate.el}, support for version === modified file 'doc/emacs/basic.texi' --- doc/emacs/basic.texi 2012-01-19 07:21:25 +0000 +++ doc/emacs/basic.texi 2012-04-14 08:25:06 +0000 @@ -372,7 +372,7 @@ On most keyboards, @key{DEL} is labeled @key{Backspace}, but we refer to it as @key{DEL} in this manual. (Do not confuse @key{DEL} with the @key{Delete} key; we will discuss @key{Delete} momentarily.) -On some text-only terminals, Emacs may not recognize the @key{DEL} key +On some text terminals, Emacs may not recognize the @key{DEL} key properly. @xref{DEL Does Not Delete}, if you encounter this problem. The @key{delete} (@code{delete-forward-char}) command deletes in the @@ -530,7 +530,7 @@ @dfn{continuation}, and the long logical line is called a @dfn{continued line}. On a graphical display, Emacs indicates line wrapping with small bent arrows in the left and right window fringes. -On a text-only terminal, Emacs indicates line wrapping by displaying a +On a text terminal, Emacs indicates line wrapping by displaying a @samp{\} character at the right margin. Most commands that act on lines act on logical lines, not screen @@ -545,9 +545,9 @@ continuing them. This means that every logical line occupies a single screen line; if it is longer than the width of the window, the rest of the line is not displayed. On a graphical display, a truncated line -is indicated by a small straight arrow in the right fringe; on a -text-only terminal, it is indicated by a @samp{$} character in the -right margin. @xref{Line Truncation}. +is indicated by a small straight arrow in the right fringe; on a text +terminal, it is indicated by a @samp{$} character in the right margin. +@xref{Line Truncation}. By default, continued lines are wrapped at the right window edge. Since the wrapping may occur in the middle of a word, continued lines === modified file 'doc/emacs/building.texi' --- doc/emacs/building.texi 2012-04-10 06:54:43 +0000 +++ doc/emacs/building.texi 2012-04-14 08:25:06 +0000 @@ -227,13 +227,13 @@ If the @file{*compilation*} buffer is shown in a window with a left fringe (@pxref{Fringes}), the locus-visiting commands put an arrow in the fringe, pointing to the current error message. If the window has -no left fringe, such as on a text-only terminal, these commands scroll -the window so that the current message is at the top of the window. -If you change the variable @code{compilation-context-lines} to an -integer value @var{n}, these commands scroll the window so that the -current error message is @var{n} lines from the top, whether or not -there is a fringe; the default value, @code{nil}, gives the behavior -described above. +no left fringe, such as on a text terminal, these commands scroll the +window so that the current message is at the top of the window. If +you change the variable @code{compilation-context-lines} to an integer +value @var{n}, these commands scroll the window so that the current +error message is @var{n} lines from the top, whether or not there is a +fringe; the default value, @code{nil}, gives the behavior described +above. @vindex compilation-error-regexp-alist @vindex grep-regexp-alist @@ -572,12 +572,12 @@ As you debug a program, Emacs displays the relevant source files by visiting them in Emacs buffers, with an arrow in the left fringe -indicating the current execution line. (On a text-only terminal, the -arrow appears as @samp{=>}, overlaid on the first two text columns.) -Moving point in such a buffer does not move the arrow. You are free -to edit these source files, but note that inserting or deleting lines -will throw off the arrow's positioning, as Emacs has no way to figure -out which edited source line corresponds to the line reported by the +indicating the current execution line. (On a text terminal, the arrow +appears as @samp{=>}, overlaid on the first two text columns.) Moving +point in such a buffer does not move the arrow. You are free to edit +these source files, but note that inserting or deleting lines will +throw off the arrow's positioning, as Emacs has no way to figure out +which edited source line corresponds to the line reported by the debugger subprocess. To update this information, you typically have to recompile and restart the program. @@ -936,7 +936,7 @@ enables or disables an existing breakpoint; a breakpoint that is disabled, but not unset, is indicated by a gray dot. - On a text-only terminal, or when fringes are disabled, enabled + On a text terminal, or when fringes are disabled, enabled breakpoints are indicated with a @samp{B} character in the left margin of the window. Disabled breakpoints are indicated with @samp{b}. (The margin is only displayed if a breakpoint is present.) @@ -1079,9 +1079,9 @@ @findex gdb-frames-select On graphical displays, the selected stack frame is indicated by an -arrow in the fringe. On text-only terminals, or when fringes are -disabled, the selected stack frame is displayed in reverse contrast. -To select a stack frame, move point in its line and type @key{RET} +arrow in the fringe. On text terminals, or when fringes are disabled, +the selected stack frame is displayed in reverse contrast. To select +a stack frame, move point in its line and type @key{RET} (@code{gdb-frames-select}), or click @kbd{Mouse-2} on it. Doing so also updates the Locals buffer @ifnottex === modified file 'doc/emacs/cmdargs.texi' --- doc/emacs/cmdargs.texi 2012-04-10 06:54:43 +0000 +++ doc/emacs/cmdargs.texi 2012-04-14 08:25:06 +0000 @@ -849,8 +849,8 @@ You can reverse the foreground and background colors through the @samp{-rv} option or with the X resource @samp{reverseVideo}. - The @samp{-fg}, @samp{-bg}, and @samp{-rv} options function on -text-only terminals as well as on graphical displays. + The @samp{-fg}, @samp{-bg}, and @samp{-rv} options function on text +terminals as well as on graphical displays. @node Window Size X @appendixsec Options for Window Size and Position === modified file 'doc/emacs/commands.texi' --- doc/emacs/commands.texi 2012-01-19 07:21:25 +0000 +++ doc/emacs/commands.texi 2012-04-14 08:25:06 +0000 @@ -62,7 +62,7 @@ C-a}. Unlike @key{Meta}, @key{ESC} is entered as a separate character. You don't hold down @key{ESC} while typing the next character; instead, press @key{ESC} and release it, then enter the -next character. This feature is useful on certain text-only terminals +next character. This feature is useful on certain text terminals where the @key{Meta} key does not function reliably. @cindex keys stolen by window manager === modified file 'doc/emacs/display.texi' --- doc/emacs/display.texi 2012-02-28 08:17:21 +0000 +++ doc/emacs/display.texi 2012-04-14 08:25:06 +0000 @@ -286,8 +286,8 @@ screen. To disable automatic horizontal scrolling, set the variable @code{auto-hscroll-mode} to @code{nil}. Note that when the automatic horizontal scrolling is turned off, if point moves off the edge of the -screen, the cursor disappears to indicate that. (On text-only -terminals, the cursor is left at the edge instead.) +screen, the cursor disappears to indicate that. (On text terminals, +the cursor is left at the edge instead.) @vindex hscroll-margin The variable @code{hscroll-margin} controls how close point can get @@ -479,9 +479,9 @@ matching that regular expression (@pxref{Regexps}). It's possible for a given face to look different in different -frames. For instance, some text-only terminals do not support all -face attributes, particularly font, height, and width, and some -support a limited range of colors. +frames. For instance, some text terminals do not support all face +attributes, particularly font, height, and width, and some support a +limited range of colors. @cindex background color @cindex default face @@ -529,13 +529,13 @@ @samp{medium sea green}. To view a list of color names, type @kbd{M-x list-colors-display}. To control the order in which colors are shown, customize @code{list-colors-sort}. If you run this command on a -graphical display, it shows the full range of color names known to Emacs -(these are the standard X11 color names, defined in X's @file{rgb.txt} -file). If you run the command on a text-only terminal, it shows only a -small subset of colors that can be safely displayed on such terminals. -However, Emacs understands X11 color names even on text-only terminals; -if a face is given a color specified by an X11 color name, it is -displayed using the closest-matching terminal color. +graphical display, it shows the full range of color names known to +Emacs (these are the standard X11 color names, defined in X's +@file{rgb.txt} file). If you run the command on a text terminal, it +shows only a small subset of colors that can be safely displayed on +such terminals. However, Emacs understands X11 color names even on +text terminals; if a face is given a color specified by an X11 color +name, it is displayed using the closest-matching terminal color. An RGB triplet is a string of the form @samp{#RRGGBB}. Each of the R, G, and B components is a hexadecimal number specifying the @@ -651,8 +651,8 @@ Most windows do not have a header line---only some special modes, such Info mode, create one. @item vertical-border -This face is used for the vertical divider between windows on -text-only terminals. +This face is used for the vertical divider between windows on text +terminals. @item minibuffer-prompt @cindex @code{minibuffer-prompt} face @vindex minibuffer-prompt-properties @@ -679,9 +679,9 @@ @end table The following faces likewise control the appearance of parts of the -Emacs frame, but only on text-only terminals, or when Emacs is built -on X with no toolkit support. (For all other cases, the appearance of -the respective frame elements is determined by system-wide settings.) +Emacs frame, but only on text terminals, or when Emacs is built on X +with no toolkit support. (For all other cases, the appearance of the +respective frame elements is determined by system-wide settings.) @table @code @item scroll-bar @@ -1453,9 +1453,9 @@ Emacs can display long lines by @dfn{truncation}. This means that all the characters that do not fit in the width of the screen or window do not appear at all. On graphical displays, a small straight arrow in -the fringe indicates truncation at either end of the line. On -text-only terminals, this is indicated with @samp{$} signs in the -leftmost and/or rightmost columns. +the fringe indicates truncation at either end of the line. On text +terminals, this is indicated with @samp{$} signs in the leftmost +and/or rightmost columns. @vindex truncate-lines @findex toggle-truncate-lines @@ -1577,7 +1577,7 @@ itself, in pixels; the default is 2. @findex tty-suppress-bold-inverse-default-colors - On some text-only terminals, bold face and inverse video together -result in text that is hard to read. Call the function + On some text terminals, bold face and inverse video together result +in text that is hard to read. Call the function @code{tty-suppress-bold-inverse-default-colors} with a non-@code{nil} argument to suppress the effect of bold-face in this case. === modified file 'doc/emacs/emacs.texi' --- doc/emacs/emacs.texi 2012-04-12 01:09:15 +0000 +++ doc/emacs/emacs.texi 2012-04-14 08:25:06 +0000 @@ -511,7 +511,7 @@ * Tooltips:: Displaying information at the current mouse position. * Mouse Avoidance:: Moving the mouse pointer out of the way. * Non-Window Terminals:: Multiple frames on terminals that show only one. -* Text-Only Mouse:: Using the mouse in text-only terminals. +* Text-Only Mouse:: Using the mouse in text terminals. International Character Set Support === modified file 'doc/emacs/entering.texi' --- doc/emacs/entering.texi 2012-04-10 06:54:43 +0000 +++ doc/emacs/entering.texi 2012-04-14 08:25:06 +0000 @@ -148,14 +148,14 @@ process (usually a shell); in most shells, you can resume Emacs after suspending it with the shell command @command{%emacs}. - Text-only terminals usually listen for certain special characters -whose meaning is to kill or suspend the program you are running. -@b{This terminal feature is turned off while you are in Emacs.} The -meanings of @kbd{C-z} and @kbd{C-x C-c} as keys in Emacs were inspired -by the use of @kbd{C-z} and @kbd{C-c} on several operating systems as -the characters for stopping or killing a program, but that is their -only relationship with the operating system. You can customize these -keys to run any commands of your choice (@pxref{Keymaps}). + Text terminals usually listen for certain special characters whose +meaning is to kill or suspend the program you are running. @b{This +terminal feature is turned off while you are in Emacs.} The meanings +of @kbd{C-z} and @kbd{C-x C-c} as keys in Emacs were inspired by the +use of @kbd{C-z} and @kbd{C-c} on several operating systems as the +characters for stopping or killing a program, but that is their only +relationship with the operating system. You can customize these keys +to run any commands of your choice (@pxref{Keymaps}). @ifnottex @lowersections === modified file 'doc/emacs/files.texi' --- doc/emacs/files.texi 2012-04-10 06:54:43 +0000 +++ doc/emacs/files.texi 2012-04-14 08:25:06 +0000 @@ -1853,7 +1853,7 @@ (@code{file-cache-minibuffer-complete}) completes it using the file name cache. If you repeat @kbd{C-@key{tab}}, that cycles through the possible completions of what you had originally typed. (However, note -that the @kbd{C-@key{tab}} character cannot be typed on most text-only +that the @kbd{C-@key{tab}} character cannot be typed on most text terminals.) The file name cache does not fill up automatically. Instead, you === modified file 'doc/emacs/fixit.texi' --- doc/emacs/fixit.texi 2012-01-19 07:21:25 +0000 +++ doc/emacs/fixit.texi 2012-04-14 08:25:06 +0000 @@ -57,9 +57,9 @@ @kbd{C-x u})@footnote{Aside from @kbd{C-/}, the @code{undo} command is also bound to @kbd{C-x u} because that is more straightforward for beginners to remember: @samp{u} stands for ``undo''. It is also bound -to @kbd{C-_} because typing @kbd{C-/} on some text-only terminals -actually enters @kbd{C-_}.}. This undoes the most recent change in -the buffer, and moves point back to where it was before that change. +to @kbd{C-_} because typing @kbd{C-/} on some text terminals actually +enters @kbd{C-_}.}. This undoes the most recent change in the buffer, +and moves point back to where it was before that change. Consecutive repetitions of @kbd{C-/} (or its aliases) undo earlier and earlier changes in the current buffer. If all the recorded === modified file 'doc/emacs/frames.texi' --- doc/emacs/frames.texi 2012-04-10 06:54:43 +0000 +++ doc/emacs/frames.texi 2012-04-14 08:25:06 +0000 @@ -27,13 +27,12 @@ This chapter describes Emacs features specific to graphical displays (particularly mouse commands), and features for managing multiple -frames. On text-only terminals, many of these features are -unavailable. However, it is still possible to create multiple -``frames'' on text-only terminals; such frames are displayed one at a -time, filling the entire terminal screen (@pxref{Non-Window -Terminals}). It is also possible to use the mouse on some text-only -terminals (@pxref{Text-Only Mouse}, for doing so on GNU and Unix -systems; and +frames. On text terminals, many of these features are unavailable. +However, it is still possible to create multiple ``frames'' on text +terminals; such frames are displayed one at a time, filling the entire +terminal screen (@pxref{Non-Window Terminals}). It is also possible +to use the mouse on some text terminals (@pxref{Text-Only Mouse}, for +doing so on GNU and Unix systems; and @iftex @pxref{MS-DOS Mouse,,,emacs-xtra,Specialized Emacs Features}, @end iftex @@ -62,7 +61,7 @@ * Tooltips:: Displaying information at the current mouse position. * Mouse Avoidance:: Preventing the mouse pointer from obscuring text. * Non-Window Terminals:: Multiple frames on terminals that show only one. -* Text-Only Mouse:: Using the mouse in text-only terminals. +* Text-Only Mouse:: Using the mouse in text terminals. @end menu @node Mouse Commands @@ -465,9 +464,9 @@ The @kbd{C-x 5 1} (@code{delete-other-frames}) command deletes all other frames on the current terminal (this terminal refers to either a -graphical display, or a text-only terminal; @pxref{Non-Window -Terminals}). If the Emacs session has frames open on other graphical -displays or text terminals, those are not deleted. +graphical display, or a text terminal; @pxref{Non-Window Terminals}). +If the Emacs session has frames open on other graphical displays or +text terminals, those are not deleted. @vindex focus-follows-mouse The @kbd{C-x 5 o} (@code{other-frame}) command selects the next @@ -908,7 +907,7 @@ the left), or @code{nil} (disable scroll bars). By default, Emacs puts scroll bars on the right if it was compiled with GTK+ support on the X Window System, and on MS-Windows or Mac OS; Emacs puts scroll -bars on the left if compiled on the X Window system without GTK+ +bars on the left if compiled on the X Window System without GTK+ support (following the old convention for X applications). @vindex scroll-bar-width @@ -953,7 +952,7 @@ @code{menu-bar-mode}. @kindex C-Mouse-3 @r{(when menu bar is disabled)} - Expert users often turn off the menu bar, especially on text-only + Expert users often turn off the menu bar, especially on text terminals, where this makes one additional line available for text. If the menu bar is off, you can still pop up a menu of its contents with @kbd{C-Mouse-3} on a display which supports pop-up menus. @@ -1112,9 +1111,9 @@ @node Non-Window Terminals @section Non-Window Terminals -@cindex text-only terminal +@cindex text terminal - On a text-only terminal, Emacs can display only one Emacs frame at a + On a text terminal, Emacs can display only one Emacs frame at a time. However, you can still create multiple Emacs frames, and switch between them. Switching frames on these terminals is much like switching between different window configurations. @@ -1139,11 +1138,11 @@ in the mode line when the frame is selected. @node Text-Only Mouse -@section Using a Mouse in Text-only Terminals +@section Using a Mouse in Text Terminals @cindex mouse support @cindex terminal emulators, mouse support -Some text-only terminals support mouse clicks in the terminal window. +Some text terminals support mouse clicks in the terminal window. @cindex xterm In a terminal emulator which is compatible with @command{xterm}, you === modified file 'doc/emacs/glossary.texi' --- doc/emacs/glossary.texi 2012-04-10 06:54:43 +0000 +++ doc/emacs/glossary.texi 2012-04-14 08:25:06 +0000 @@ -181,7 +181,7 @@ particular alphabet or script. @xref{International}. @item Character Terminal -@xref{Glossary - Text-only Terminal}. +@xref{Glossary - Text Terminal}. @item Click Event A click event is the kind of input event (q.v.@:) generated when you @@ -193,7 +193,7 @@ @item Clipboard A clipboard is a buffer provided by the window system for transferring -text between applications. On the X Window system, the clipboard is +text between applications. On the X Window System, the clipboard is provided in addition to the primary selection (q.v.@:); on MS-Windows and Mac, the clipboard is used @emph{instead} of the primary selection. @xref{Clipboard}. @@ -1329,12 +1329,12 @@ or following the stylistic conventions of human language. @end itemize -@anchor{Glossary - Text-only Terminal} -@item Text-only Terminal -A text-only terminal is a display that is limited to displaying text in -character units. Such a terminal cannot control individual pixels it -displays. Emacs supports a subset of display features on text-only -terminals. +@anchor{Glossary - Text Terminal} +@item Text Terminal +A text terminal, or character terminal, is a display that is limited +to displaying text in character units. Such a terminal cannot control +individual pixels it displays. Emacs supports a subset of display +features on text terminals. @item Text Properties Text properties are annotations recorded for particular characters in @@ -1384,7 +1384,7 @@ @ref{Glossary - Continuation Line}. @item TTY -@xref{Glossary - Text-only Terminal}. +@xref{Glossary - Text Terminal}. @item Undoing Undoing means making your previous editing go in reverse, bringing === modified file 'doc/emacs/misc.texi' --- doc/emacs/misc.texi 2012-04-10 06:54:43 +0000 +++ doc/emacs/misc.texi 2012-04-15 07:21:23 +0000 @@ -1405,7 +1405,7 @@ the shell command @samp{emacsclient @var{file}}, where @var{file} is a file name. This connects to an Emacs server, and tells that Emacs process to visit @var{file} in one of its existing frames---either a -graphical frame, or one in a text-only terminal (@pxref{Frames}). You +graphical frame, or one in a text terminal (@pxref{Frames}). You can then select that frame to begin editing. If there is no Emacs server, the @command{emacsclient} program halts @@ -1415,12 +1415,12 @@ called @command{emacsclient}. You can also force @command{emacsclient} to open a new frame on a -graphical display, or on a text-only terminal, using the @samp{-c} and +graphical display, or on a text terminal, using the @samp{-c} and @samp{-t} options. @xref{emacsclient Options}. - If you are running on a single text-only terminal, you can switch -between @command{emacsclient}'s shell and the Emacs server using one -of two methods: (i) run the Emacs server and @command{emacsclient} on + If you are running on a single text terminal, you can switch between +@command{emacsclient}'s shell and the Emacs server using one of two +methods: (i) run the Emacs server and @command{emacsclient} on different virtual terminals, and switch to the Emacs server's virtual terminal after calling @command{emacsclient}; or (ii) call @command{emacsclient} from within the Emacs server itself, using Shell @@ -1502,16 +1502,24 @@ the @samp{-a} option. If both are present, the latter takes precedence. +@cindex client frame @item -c -Create a new graphical frame, instead of using an existing Emacs -frame. Emacs can create a graphical frame even if it was started in a -text-only terminal, provided it is able to connect to a graphical -display. If Emacs is unable to connect to a graphical display, and on -systems, such as MS-Windows (@pxref{Windows Startup, emacsclient}), -where it cannot create graphical frames when started from a text-only -terminal, it creates a new text-only terminal frame (@pxref{Frames}). -If you omit a filename argument while supplying the @samp{-c} option, -the new frame displays the @file{*scratch*} buffer (@pxref{Buffers}). +Create a new graphical @dfn{client frame}, instead of using an +existing Emacs frame. If you omit a filename argument while supplying +the @samp{-c} option, the new frame displays the @file{*scratch*} +buffer (@pxref{Buffers}). See below for the special behavior of +@kbd{C-x C-c} in a client frame. + +If Emacs is unable to create a new graphical frame (e.g.@: if it is +unable to connect to the X server), it tries to create a text terminal +client frame, as though you had supplied the @samp{-t} option instead +(see below). + +On MS-Windows, a single Emacs session cannot display frames on both +graphical and text terminals, nor on multiple text terminals. Thus, +if the Emacs server is running on a text terminal, the @samp{-c} +option, like the @samp{-t} option, creates a new frame in the server's +current text terminal. @xref{Windows Startup}. @item -F @var{alist} @itemx --frame-parameters=@var{alist} @@ -1593,28 +1601,46 @@ @item -t @itemx --tty @itemx -nw -Create a new Emacs frame on the current text-only terminal, instead of -using an existing Emacs frame. Emacs can open a text-only terminal -even if it was started in another text-only terminal, or on a -graphical display. On systems, such as MS-Windows, where this is -impossible, Emacs will create a new frame, either GUI or text-only, on -the same terminal where it was started (@pxref{Windows Startup, -emacsclient}). If you omit a filename argument while supplying this -option, the new frame displays the @file{*scratch*} buffer. -@xref{Buffers}. +Create a new client frame on the current text terminal, instead of +using an existing Emacs frame. This is similar to the @samp{-c} +option, above, except that it creates a text terminal frame +(@pxref{Non-Window Terminals}). If you omit a filename argument while +supplying this option, the new frame displays the @file{*scratch*} +buffer (@pxref{Buffers}). See below for the special behavior of +@kbd{C-x C-c} in a client frame. + +On MS-Windows, a single Emacs session cannot display frames on both +graphical and text terminals, nor on multiple text terminals. Thus, +if the Emacs server is using the graphical display, @samp{-t} behaves +like @samp{-c} (see above); whereas if the Emacs server is running on +a text terminal, it creates a new frame in its current text terminal. +@xref{Windows Startup}. @end table - If you type @kbd{C-x C-c} (@code{save-buffers-kill-terminal}) in an -Emacs frame created with @command{emacsclient}, via the @samp{-c} or -@samp{-t} options, Emacs deletes the frame instead of killing the -Emacs process itself. On a text-only terminal frame created with the -@samp{-t} option, this returns control to the terminal. Emacs also -marks all the server buffers for the client as finished, as though you -had typed @kbd{C-x #} in all of them. - - When Emacs is started as a daemon, all frames are considered client -frames, so @kbd{C-x C-c} will never kill Emacs. To kill the Emacs -process, type @kbd{M-x kill-emacs}. + The new graphical or text terminal frames created by the @samp{-c} +or @samp{-t} options are considered @dfn{client frames}. Any new +frame that you create from a client frame is also considered a client +frame. If you type @kbd{C-x C-c} (@code{save-buffers-kill-terminal}) +in a client frame, that command does not kill the Emacs session as it +normally does (@pxref{Exiting}). Instead, Emacs deletes the client +frame; furthermore, if the client frame has an @command{emacsclient} +waiting to regain control (i.e.@: if you did not supply the @samp{-n} +option), Emacs deletes all other frames of the same client, and marks +the client's server buffers as finished, as though you had typed +@kbd{C-x #} in all of them. If it so happens that there are no +remaining frames after the client frame(s) are deleted, the Emacs +session exits. + + As an exception, when Emacs is started as a daemon, all frames are +considered client frames, and @kbd{C-x C-c} never kills Emacs. To +kill a daemon session, type @kbd{M-x kill-emacs}. + + Note that the @samp{-t} and @samp{-n} options are contradictory: +@samp{-t} says to take control of the current text terminal to create +a new client frame, while @samp{-n} says not to take control of the +text terminal. If you supply both options, Emacs visits the specified +files(s) in an existing frame rather than a new client frame, negating +the effect of @samp{-t}. @node Printing, Sorting, Emacs Server, Top @section Printing Hard Copies === modified file 'doc/emacs/msdog-xtra.texi' --- doc/emacs/msdog-xtra.texi 2012-02-28 08:17:21 +0000 +++ doc/emacs/msdog-xtra.texi 2012-04-14 08:25:06 +0000 @@ -247,7 +247,7 @@ @cindex frames on MS-DOS The MS-DOS terminal can only display a single frame at a time. The -Emacs frame facilities work on MS-DOS much as they do on text-only +Emacs frame facilities work on MS-DOS much as they do on text terminals @iftex (@pxref{Frames,,,emacs, the Emacs Manual}). === modified file 'doc/emacs/msdog.texi' --- doc/emacs/msdog.texi 2012-04-02 17:33:41 +0000 +++ doc/emacs/msdog.texi 2012-04-14 20:24:45 +0000 @@ -121,8 +121,8 @@ created only if the server runs in a GUI session. Similarly, if you invoke @command{emacsclient} with the @option{-t} option, Emacs will create a GUI frame if the server runs in a GUI session, or a text-mode -frame when the session runs in text-only mode in a @dfn{Command -Prompt} window. @xref{emacsclient Options}. +frame when the session runs in text mode in a @dfn{Command Prompt} +window. @xref{emacsclient Options}. @node Text and Binary @section Text Files and Binary Files @@ -729,9 +729,9 @@ variables control printing on all systems, but in some cases they have different default values on MS-DOS and MS-Windows. - Emacs on Windows automatically determines your default printer and -sets the variable @code{printer-name} to that printer's name. But in -some rare cases this can fail, or you may wish to use a different + Emacs on MS Windows attempts to determine your default printer +automatically (using the function @code{default-printer-name}). +But in some rare cases this can fail, or you may wish to use a different printer from within Emacs. The rest of this section explains how to tell Emacs which printer to use. === modified file 'doc/emacs/mule.texi' --- doc/emacs/mule.texi 2012-04-13 03:59:27 +0000 +++ doc/emacs/mule.texi 2012-04-14 19:33:33 +0000 @@ -60,7 +60,7 @@ @item You can display non-@acronym{ASCII} characters encoded by the various scripts. This works by using appropriate fonts on graphics displays -(@pxref{Defining Fontsets}), and by sending special codes to text-only +(@pxref{Defining Fontsets}), and by sending special codes to text displays (@pxref{Terminal Coding}). If some characters are displayed incorrectly, refer to @ref{Undisplayable Characters}, which describes possible problems and explains how to solve them. @@ -210,7 +210,7 @@ @item If you are running Emacs on a graphical display, the font name and -glyph code for the character. If you are running Emacs on a text-only +glyph code for the character. If you are running Emacs on a text terminal, the code(s) sent to the terminal. @item @@ -365,25 +365,8 @@ which prefers Cyrillic characters and files encoded in Windows-1255). @end quotation -@cindex fonts for various scripts -@cindex Intlfonts package, installation To display the script(s) used by your language environment on a -graphical display, you need to have a suitable font. If some of the -characters appear as empty boxes or hex codes, you should install -extra fonts. Your operating system may have optional fonts that -you can install; or you can install the -GNU Intlfonts package, which includes fonts for most supported -scripts.@footnote{If you run Emacs on X, you may need to inform the X -server about the location of the newly installed fonts with -commands such as: -@c FIXME? I feel like this may be out of date. -@c Eg the intlfonts tarfile is ~ 10 years old. - -@example - xset fp+ /usr/local/share/emacs/fonts - xset fp rehash -@end example -} +graphical display, you need to have suitable fonts. @xref{Fontsets}, for more details about setting up your fonts. @findex set-locale-environment @@ -577,10 +560,10 @@ @table @kbd @item C-\ -Enable or disable use of the selected input method. +Enable or disable use of the selected input method (@code{toggle-input-method}). @item C-x @key{RET} C-\ @var{method} @key{RET} -Select a new input method for the current buffer. +Select a new input method for the current buffer (@code{set-input-method}). @item C-h I @var{method} @key{RET} @itemx C-h C-\ @var{method} @key{RET} @@ -716,7 +699,7 @@ @table @kbd @item C-h C @var{coding} @key{RET} -Describe coding system @var{coding}. +Describe coding system @var{coding} (@code{describe-coding-system}). @item C-h C @key{RET} Describe the coding systems currently in use. @@ -921,7 +904,7 @@ the strongest way to specify the coding system for certain patterns of file names, or for files containing certain patterns, respectively. These variables even override @samp{-*-coding:-*-} tags in the file -itself. For example, Emacs +itself (@pxref{Specify Coding}). For example, Emacs uses @code{auto-coding-alist} for tar and archive files, to prevent it from being confused by a @samp{-*-coding:-*-} tag in a member of the archive and thinking it applies to the archive file as a whole. @@ -1006,6 +989,7 @@ If you insert the unsuitable characters in a mail message, Emacs behaves a bit differently. It additionally checks whether the +@c What determines this? most-preferred coding system is recommended for use in MIME messages; if not, Emacs tells you that the most-preferred coding system is not recommended and prompts you for another coding system. This is so you @@ -1014,17 +998,22 @@ still use an unsuitable coding system if you type its name in response to the question.) +@c It seems that select-message-coding-system does this. +@c Both sendmail.el and smptmail.el call it; i.e. smtpmail.el still +@c obeys sendmail-coding-system. @vindex sendmail-coding-system - When you send a message with Message mode (@pxref{Sending Mail}), + When you send a mail message (@pxref{Sending Mail}), Emacs has four different ways to determine the coding system to use for encoding the message text. It tries the buffer's own value of @code{buffer-file-coding-system}, if that is non-@code{nil}. Otherwise, it uses the value of @code{sendmail-coding-system}, if that is non-@code{nil}. The third way is to use the default coding system for new files, which is controlled by your choice of language +@c i.e., default-sendmail-coding-system environment, if that is non-@code{nil}. If all of these three values are @code{nil}, Emacs encodes outgoing mail using the Latin-1 coding system. +@c FIXME? Where does the Latin-1 default come in? @node Text Coding @section Specifying a Coding System for File Text @@ -1035,8 +1024,8 @@ @table @kbd @item C-x @key{RET} f @var{coding} @key{RET} -Use coding system @var{coding} to save or revisit the visited file in -the current buffer (@code{set-buffer-file-coding-system}) +Use coding system @var{coding} to save or revisit the file in +the current buffer (@code{set-buffer-file-coding-system}). @item C-x @key{RET} c @var{coding} @key{RET} Specify coding system @var{coding} for the immediately following @@ -1066,8 +1055,8 @@ You can also use this command to specify the end-of-line conversion (@pxref{Coding Systems, end-of-line conversion}) for encoding the current buffer. For example, @kbd{C-x @key{RET} f dos @key{RET}} will -cause Emacs to save the current buffer's text with DOS-style CRLF line -endings. +cause Emacs to save the current buffer's text with DOS-style +carriage-return linefeed line endings. @kindex C-x RET c @findex universal-coding-system-argument @@ -1155,7 +1144,7 @@ The variable @code{x-select-request-type} specifies the data type to request from the X Window System for receiving text selections from other applications. If the value is @code{nil} (the default), Emacs -tries @code{COMPOUND_TEXT} and @code{UTF8_STRING}, in this order, and +tries @code{UTF8_STRING} and @code{COMPOUND_TEXT}, in this order, and uses various heuristics to choose the more appropriate of the two results; if none of these succeed, Emacs falls back on @code{STRING}. If the value of @code{x-select-request-type} is one of the symbols @@ -1187,8 +1176,8 @@ The variable @code{locale-coding-system} specifies a coding system to use when encoding and decoding system strings such as system error messages and @code{format-time-string} formats and time stamps. That -coding system is also used for decoding non-@acronym{ASCII} keyboard input on X -Window systems. You should choose a coding system that is compatible +coding system is also used for decoding non-@acronym{ASCII} keyboard +input on the X Window System. You should choose a coding system that is compatible with the underlying system's text representation, which is normally specified by one of the environment variables @env{LC_ALL}, @env{LC_CTYPE}, and @env{LANG}. (The first one, in the order @@ -1201,27 +1190,29 @@ @table @kbd @item C-x @key{RET} F @var{coding} @key{RET} Use coding system @var{coding} for encoding and decoding file -@emph{names} (@code{set-file-name-coding-system}). +names (@code{set-file-name-coding-system}). @end table -@vindex file-name-coding-system -@cindex file names with non-@acronym{ASCII} characters - The variable @code{file-name-coding-system} specifies a coding -system to use for encoding file names. It has no effect on reading -and writing the @emph{contents} of files. - @findex set-file-name-coding-system @kindex C-x @key{RET} F - If you set the variable to a coding system name (as a Lisp symbol or -a string), Emacs encodes file names using that coding system for all -file operations. This makes it possible to use non-@acronym{ASCII} -characters in file names---or, at least, those non-@acronym{ASCII} -characters which the specified coding system can encode. Use @kbd{C-x -@key{RET} F} (@code{set-file-name-coding-system}) to specify this -interactively. +@cindex file names with non-@acronym{ASCII} characters + The command @kbd{C-x @key{RET} F} (@code{set-file-name-coding-system}) +specifies a coding system to use for encoding file @emph{names}. It +has no effect on reading and writing the @emph{contents} of files. + +@vindex file-name-coding-system + In fact, all this command does is set the value of the variable +@code{file-name-coding-system}. If you set the variable to a coding +system name (as a Lisp symbol or a string), Emacs encodes file names +using that coding system for all file operations. This makes it +possible to use non-@acronym{ASCII} characters in file names---or, at +least, those non-@acronym{ASCII} characters that the specified coding +system can encode. If @code{file-name-coding-system} is @code{nil}, Emacs uses a -default coding system determined by the selected language environment. +default coding system determined by the selected language environment, +and stored in the @code{default-file-name-coding-system} variable. +@c FIXME? Is this correct? What is the "default language environment"? In the default language environment, non-@acronym{ASCII} characters in file names are not encoded specially; they appear in the file system using the internal Emacs representation. @@ -1232,7 +1223,7 @@ the earlier coding system and cannot be encoded (or are encoded differently) under the new coding system. If you try to save one of these buffers under the visited file name, saving may use the wrong file -name, or it may get an error. If such a problem happens, use @kbd{C-x +name, or it may encounter an error. If such a problem happens, use @kbd{C-x C-w} to specify a new file name for that buffer. @findex recode-file-name @@ -1245,13 +1236,13 @@ @section Coding Systems for Terminal I/O @table @kbd +@item C-x @key{RET} t @var{coding} @key{RET} +Use coding system @var{coding} for terminal output +(@code{set-terminal-coding-system}). + @item C-x @key{RET} k @var{coding} @key{RET} Use coding system @var{coding} for keyboard input (@code{set-keyboard-coding-system}). - -@item C-x @key{RET} t @var{coding} @key{RET} -Use coding system @var{coding} for terminal output -(@code{set-terminal-coding-system}). @end table @kindex C-x RET t @@ -1274,8 +1265,8 @@ @kindex C-x RET k @findex set-keyboard-coding-system @vindex keyboard-coding-system - The command @kbd{C-x @key{RET} k} (@code{set-keyboard-coding-system}) -or the variable @code{keyboard-coding-system} specifies the coding + The command @kbd{C-x @key{RET} k} (@code{set-keyboard-coding-system}), +or the variable @code{keyboard-coding-system}, specifies the coding system for keyboard input. Character-code translation of keyboard input is useful for terminals with keys that send non-@acronym{ASCII} graphic characters---for example, some terminals designed for ISO @@ -1310,30 +1301,49 @@ A font typically defines shapes for a single alphabet or script. Therefore, displaying the entire range of scripts that Emacs supports requires a collection of many fonts. In Emacs, such a collection is -called a @dfn{fontset}. A fontset is defined by a list of font specs, +called a @dfn{fontset}. A fontset is defined by a list of font specifications, each assigned to handle a range of character codes, and may fall back -on another fontset for characters which are not covered by the fonts +on another fontset for characters that are not covered by the fonts it specifies. +@cindex fonts for various scripts +@cindex Intlfonts package, installation Each fontset has a name, like a font. However, while fonts are stored in the system and the available font names are defined by the system, fontsets are defined within Emacs itself. Once you have defined a fontset, you can use it within Emacs by specifying its name, anywhere that you could use a single font. Of course, Emacs fontsets -can use only the fonts that the system supports; if certain characters -appear on the screen as hollow boxes, this means that the fontset in -use for them has no font for those characters.@footnote{The Emacs -installation instructions have information on additional font -support.} +can use only the fonts that the system supports. If some characters +appear on the screen as empty boxes or hex codes, this means that the +fontset in use for them has no font for those characters. In this +case, or if the characters are shown, but not as well as you would +like, you may need to install extra fonts. Your operating system may +have optional fonts that you can install; or you can install the GNU +Intlfonts package, which includes fonts for most supported +scripts.@footnote{If you run Emacs on X, you may need to inform the X +server about the location of the newly installed fonts with commands +such as: +@c FIXME? I feel like this may be out of date. +@c Eg the intlfonts tarfile is ~ 10 years old. + +@example + xset fp+ /usr/local/share/emacs/fonts + xset fp rehash +@end example +} Emacs creates three fontsets automatically: the @dfn{standard fontset}, the @dfn{startup fontset} and the @dfn{default fontset}. +@c FIXME? The doc of *standard*-fontset-spec says: +@c "You have the biggest chance to display international characters +@c with correct glyphs by using the *standard* fontset." (my emphasis) The default fontset is most likely to have fonts for a wide variety of -non-@acronym{ASCII} characters and is the default fallback for the +non-@acronym{ASCII} characters, and is the default fallback for the other two fontsets, and if you set a default font rather than fontset. -However it does not specify font family names, so results can be +However, it does not specify font family names, so results can be somewhat random if you use it directly. You can specify use of a -specific fontset with the @samp{-fn} option. For example, +particular fontset by starting Emacs with the @samp{-fn} option. +For example, @example emacs -fn fontset-standard @@ -1372,10 +1382,12 @@ @noindent or just @samp{fontset-standard} for short. - On GNUstep and Mac, fontset-standard is created using the value of -@code{ns-standard-fontset-spec}, and on Windows it is + On GNUstep and Mac OS X, the standard fontset is created using the value of +@code{ns-standard-fontset-spec}, and on MS Windows it is created using the value of @code{w32-standard-fontset-spec}. +@c FIXME? How does one access these, or do anything with them? +@c Does it matter? Bold, italic, and bold-italic variants of the standard fontset are created automatically. Their names have @samp{bold} instead of @samp{medium}, or @samp{i} instead of @samp{r}, or both. @@ -1390,8 +1402,15 @@ @var{charset_encoding} field with @samp{startup}, then using the resulting string to specify a fontset. - For instance, if you start Emacs this way, + For instance, if you start Emacs with a font of this form, +@c FIXME? I think this is a little misleading, because you cannot (?) +@c actually specify a font with wildcards, it has to be a complete spec. +@c Also, an X font specification of this form hasn't (?) been +@c mentioned before now, and is somewhat obsolete these days. +@c People are more likely to use a form like +@c emacs -fn "DejaVu Sans Mono-12" +@c How does any of this apply in that case? @example emacs -fn "*courier-medium-r-normal--14-140-*-iso8859-1" @end example @@ -1404,8 +1423,8 @@ -*-courier-medium-r-normal-*-14-140-*-*-*-*-fontset-startup @end example - The startup fontset will use the font that you specify or a variant -with a different registry and encoding for all the characters which + The startup fontset will use the font that you specify, or a variant +with a different registry and encoding, for all the characters that are supported by that font, and fallback on @samp{fontset-default} for other characters. @@ -1413,7 +1432,8 @@ just like an actual font name. But be careful not to specify a fontset name in a wildcard resource like @samp{Emacs*Font}---that wildcard specification matches various other resources, such as for menus, and -menus cannot handle fontsets. +@c FIXME is this still true? +menus cannot handle fontsets. @xref{X Resources}. You can specify additional fontsets using X resources named @samp{Fontset-@var{n}}, where @var{n} is an integer starting from 0. @@ -1424,7 +1444,8 @@ @end smallexample @noindent -@var{fontpattern} should have the form of a standard X font name, except +@var{fontpattern} should have the form of a standard X font name (see +the previous fontset-startup example), except for the last two fields. They should have the form @samp{fontset-@var{alias}}. @@ -1446,7 +1467,7 @@ In addition, when several consecutive fields are wildcards, Emacs collapses them into a single wildcard. This is to prevent use of auto-scaled fonts. Fonts made by scaling larger fonts are not usable -for editing, and scaling a smaller font is not useful because it is +for editing, and scaling a smaller font is not also useful, because it is better to use the smaller font in its own size, which is what Emacs does. @@ -1472,8 +1493,8 @@ You may not have any Chinese font matching the above font specification. Most X distributions include only Chinese fonts that -have @samp{song ti} or @samp{fangsong ti} in @var{family} field. In -such a case, @samp{Fontset-@var{n}} can be specified as below: +have @samp{song ti} or @samp{fangsong ti} in the @var{family} field. In +such a case, @samp{Fontset-@var{n}} can be specified as: @smallexample Emacs.Fontset-0: -*-fixed-medium-r-normal-*-24-*-*-*-*-*-fontset-24,\ @@ -1507,8 +1528,8 @@ Fontsets can be modified using the function @code{set-fontset-font}, specifying a character, a charset, a script, or a range of characters -to modify the font for, and a font-spec for the font to be used. Some -examples are: +to modify the font for, and a font specification for the font to be +used. Some examples are: @example ;; Use Liberation Mono for latin-3 charset. @@ -1535,10 +1556,10 @@ @node Undisplayable Characters @section Undisplayable Characters - There may be a some non-@acronym{ASCII} characters that your terminal cannot -display. Most text-only terminals support just a single character -set (use the variable @code{default-terminal-coding-system} -(@pxref{Terminal Coding}) to tell Emacs which one); characters which + There may be some non-@acronym{ASCII} characters that your +terminal cannot display. Most text terminals support just a single +character set (use the variable @code{default-terminal-coding-system} +to tell Emacs which one, @ref{Terminal Coding}); characters that can't be encoded in that coding system are displayed as @samp{?} by default. @@ -1570,17 +1591,15 @@ accented letters and punctuation needed by various European languages (and some non-European ones). Note that Emacs considers bytes with codes in this range as raw bytes, not as characters, even in a unibyte -session, i.e.@: if you disable multibyte characters. However, Emacs +buffer, i.e.@: if you disable multibyte characters. However, Emacs can still handle these character codes as if they belonged to @emph{one} of the single-byte character sets at a time. To specify @emph{which} of these codes to use, invoke @kbd{M-x set-language-environment} and specify a suitable language environment such as @samp{Latin-@var{n}}. - For more information about unibyte operation, see @ref{Disabling -Multibyte}. Note particularly that you probably want to ensure that -your initialization files are read as unibyte if they contain -non-@acronym{ASCII} characters. + For more information about unibyte operation, see +@ref{Disabling Multibyte}. @vindex unibyte-display-via-language-environment Emacs can also display bytes in the range 160 to 255 as readable @@ -1599,8 +1618,8 @@ set, Emacs can display these characters as @acronym{ASCII} sequences which at least give you a clear idea of what the characters are. To do this, load the library @code{iso-ascii}. Similar libraries for other -Latin-@var{n} character sets could be implemented, but we don't have -them yet. +Latin-@var{n} character sets could be implemented, but have not been +so far. @findex standard-display-8bit @cindex 8-bit display @@ -1624,9 +1643,9 @@ representing non-@acronym{ASCII} characters, you can type those character codes directly. -On a graphical display, you should not need to do anything special to use -these keys; they should simply work. On a text-only terminal, you -should use the command @code{M-x set-keyboard-coding-system} or the +On a graphical display, you should not need to do anything special to +use these keys; they should simply work. On a text terminal, you +should use the command @code{M-x set-keyboard-coding-system} or customize the variable @code{keyboard-coding-system} to specify which coding system your keyboard uses (@pxref{Terminal Coding}). Enabling this feature will probably require you to use @kbd{ESC} to type Meta characters; @@ -1694,8 +1713,9 @@ @findex list-character-sets @kbd{M-x list-character-sets} displays a list of all supported charsets. The list gives the names of charsets and additional -information to identity each charset (see -@url{http://www.itscj.ipsj.or.jp/ISO-IR/} for details). In this list, +information to identity each charset; see the +@url{http://www.itscj.ipsj.or.jp/ISO-IR/, International Register of +Coded Character Sets} for more details. In this list, charsets are divided into two categories: @dfn{normal charsets} are listed first, followed by @dfn{supplementary charsets}. A supplementary charset is one that is used to define another charset @@ -1715,8 +1735,8 @@ Hebrew, whose natural ordering of horizontal text for display is from right to left. However, digits and Latin text embedded in these scripts are still displayed left to right. It is also not uncommon to -have small portions of text in Arabic or Hebrew embedded in otherwise -Latin document, e.g., as comments and strings in a program source +have small portions of text in Arabic or Hebrew embedded in an otherwise +Latin document; e.g., as comments and strings in a program source file. For these reasons, text that uses these scripts is actually @dfn{bidirectional}: a mixture of runs of left-to-right and right-to-left characters. @@ -1744,6 +1764,7 @@ Each paragraph of bidirectional text can have its own @dfn{base direction}, either right-to-left or left-to-right. (Paragraph +@c paragraph-separate etc have no influence on this? boundaries are empty lines, i.e.@: lines consisting entirely of whitespace characters.) Text in left-to-right paragraphs begins at the left margin of the window and is truncated or continued when it @@ -1780,5 +1801,5 @@ jump when point traverses reordered bidirectional text. Similarly, a highlighted region covering a contiguous range of character positions may look discontinuous if the region spans reordered text. This is -normal and similar to behavior of other programs that support +normal and similar to the behavior of other programs that support bidirectional text. === modified file 'doc/emacs/screen.texi' --- doc/emacs/screen.texi 2012-04-10 06:54:43 +0000 +++ doc/emacs/screen.texi 2012-04-14 08:25:06 +0000 @@ -8,12 +8,12 @@ @cindex frame On a graphical display, such as on GNU/Linux using the X Window -System, Emacs occupies a ``graphical window''. On a text-only -terminal, Emacs occupies the entire terminal screen. We will use the -term @dfn{frame} to mean a graphical window or terminal screen -occupied by Emacs. Emacs behaves very similarly on both kinds of -frames. It normally starts out with just one frame, but you can -create additional frames if you wish (@pxref{Frames}). +System, Emacs occupies a ``graphical window''. On a text terminal, +Emacs occupies the entire terminal screen. We will use the term +@dfn{frame} to mean a graphical window or terminal screen occupied by +Emacs. Emacs behaves very similarly on both kinds of frames. It +normally starts out with just one frame, but you can create additional +frames if you wish (@pxref{Frames}). Each frame consists of several distinct regions. At the top of the frame is a @dfn{menu bar}, which allows you to access commands via a @@ -178,7 +178,7 @@ @end example @noindent -On a text-only terminal, this text is followed by a series of dashes +On a text terminal, this text is followed by a series of dashes extending to the right edge of the window. These dashes are omitted on a graphical display. @@ -195,7 +195,7 @@ containing non-textual data. Other characters represent various @dfn{coding systems}---for example, @samp{1} represents ISO Latin-1. - On a text-only terminal, @var{cs} is preceded by two additional + On a text terminal, @var{cs} is preceded by two additional characters that describe the coding systems for keyboard input and terminal output. Furthermore, if you are using an input method, @var{cs} is preceded by a string that identifies the input method @@ -228,7 +228,7 @@ remote machine, @samp{@@} is displayed instead (@pxref{File Names}). @var{fr} gives the selected frame name (@pxref{Frames}). It appears -only on text-only terminals. The initial frame's name is @samp{F1}. +only on text terminals. The initial frame's name is @samp{F1}. @var{buf} is the name of the buffer displayed in the window. Usually, this is the same as the name of a file you are editing. @@ -307,13 +307,12 @@ selected menu item, press @key{RET}; to cancel menu navigation, press @key{ESC}. - On a text-only terminal, you can use the menu bar by typing -@kbd{M-`} or @key{F10} (these run the command @code{tmm-menubar}). -This lets you select a menu item with the keyboard. A provisional -choice appears in the echo area. You can use the up and down arrow -keys to move through the menu to different items, and then you can -type @key{RET} to select the item. Each menu item is also designated -by a letter or digit (usually the initial of some word in the item's -name). This letter or digit is separated from the item name by -@samp{=>}. You can type the item's letter or digit to select the -item. + On a text terminal, you can use the menu bar by typing @kbd{M-`} or +@key{F10} (these run the command @code{tmm-menubar}). This lets you +select a menu item with the keyboard. A provisional choice appears in +the echo area. You can use the up and down arrow keys to move through +the menu to different items, and then you can type @key{RET} to select +the item. Each menu item is also designated by a letter or digit +(usually the initial of some word in the item's name). This letter or +digit is separated from the item name by @samp{=>}. You can type the +item's letter or digit to select the item. === modified file 'doc/emacs/trouble.texi' --- doc/emacs/trouble.texi 2012-04-10 06:54:43 +0000 +++ doc/emacs/trouble.texi 2012-04-14 08:25:06 +0000 @@ -172,20 +172,19 @@ too suggests Emacs got the wrong information---but in the opposite sense. - On a text-only terminal, if you find that @key{Backspace} prompts -for a Help command, like @kbd{Control-h}, instead of deleting a -character, it means that key is actually sending the @key{BS} -character. Emacs ought to be treating @key{BS} as @key{DEL}, but it -isn't. + On a text terminal, if you find that @key{Backspace} prompts for a +Help command, like @kbd{Control-h}, instead of deleting a character, +it means that key is actually sending the @key{BS} character. Emacs +ought to be treating @key{BS} as @key{DEL}, but it isn't. @findex normal-erase-is-backspace-mode In all of those cases, the immediate remedy is the same: use the command @kbd{M-x normal-erase-is-backspace-mode}. This toggles between the two modes that Emacs supports for handling @key{DEL}, so if Emacs starts in the wrong mode, this should switch to the right -mode. On a text-only terminal, if you want to ask for help when -@key{BS} is treated as @key{DEL}, use @key{F1}; @kbd{C-?} may also -work, if it sends character code 127. +mode. On a text terminal, if you want to ask for help when @key{BS} +is treated as @key{DEL}, use @key{F1}; @kbd{C-?} may also work, if it +sends character code 127. To fix the problem in every Emacs session, put one of the following lines into your initialization file (@pxref{Init File}). For the @@ -327,8 +326,8 @@ @node Emergency Escape @subsection Emergency Escape - On text-only terminals, the @dfn{emergency escape} feature suspends -Emacs immediately if you type @kbd{C-g} a second time before Emacs can + On text terminals, the @dfn{emergency escape} feature suspends Emacs +immediately if you type @kbd{C-g} a second time before Emacs can actually respond to the first one by quitting. This is so you can always get out of GNU Emacs no matter how badly it might be hung. When things are working properly, Emacs recognizes and handles the === modified file 'doc/emacs/windows.texi' --- doc/emacs/windows.texi 2012-01-31 06:32:14 +0000 +++ doc/emacs/windows.texi 2012-04-14 08:25:06 +0000 @@ -36,8 +36,8 @@ At any time, one Emacs window is the @dfn{selected window}; the buffer this window is displaying is the current buffer. On graphical displays, the point is indicated by a solid blinking cursor in the -selected window, and by a hollow box in non-selected windows. On -text-only terminals, the cursor is drawn only in the selected window. +selected window, and by a hollow box in non-selected windows. On text +terminals, the cursor is drawn only in the selected window. @xref{Cursor Display}. Commands to move point affect the value of point for the selected === modified file 'doc/lispref/ChangeLog' --- doc/lispref/ChangeLog 2012-04-14 01:46:06 +0000 +++ doc/lispref/ChangeLog 2012-04-15 07:28:01 +0000 @@ -1,3 +1,23 @@ +2012-04-15 Glenn Morris + + * processes.texi (Processes, Subprocess Creation, Shell Arguments): + (Synchronous Processes, Asynchronous Processes, Deleting Processes): + Copyedits. + (Subprocess Creation): Discourage modifying exec-path directly. + (Synchronous Processes, Asynchronous Processes): + Update some example output. + (Process Information): Fix typo. + (Bindat Spec): Use Texinfo-recommended form of quote+punctuation. + +2012-04-15 Glenn Morris + + * anti.texi (Antinews): Copyedits. Don't @dfn anything here. + open-network-stream does exist in Emacs 23, but is simpler. + +2012-04-15 Chong Yidong + + * customize.texi (Custom Themes): Also document load-theme etc. + 2012-04-14 Chong Yidong * customize.texi (Applying Customizations): === modified file 'doc/lispref/anti.texi' --- doc/lispref/anti.texi 2012-04-05 16:52:56 +0000 +++ doc/lispref/anti.texi 2012-04-14 20:43:11 +0000 @@ -65,9 +65,9 @@ Internal windows are no longer visible to Lisp; functions such as @code{window-parent}, window parameters related to window arrangement, and window-local buffer lists have all been removed. Functions for -resizing windows can delete windows if when they become too small. +resizing windows can delete windows if they become too small. -The @dfn{action function} feature for controlling buffer display has +The ``action function'' feature for controlling buffer display has been removed, including @code{display-buffer-overriding-action} and related variables, as well as the @var{action} argument to @code{display-buffer} and other functions. The way to @@ -80,7 +80,7 @@ The standard completion interface has been simplified, eliminating the @code{completion-extra-properties} variable, the @code{metadata} action flag for completion functions, and the concept of -@dfn{completion categories}. Lisp programmers may now find the choice +``completion categories''. Lisp programmers may now find the choice of methods for tuning completion less bewildering, but if a package finds the streamlined interface insufficient for its needs, it must implement its own specialized completion feature. @@ -123,17 +123,19 @@ The @var{cache} entry is used internally by Emacs to record equivalent keyboard key sequences for invoking the same command; Lisp programs should never use it. +@c Not really NEWS-worthy then... @item -The @code{open-network-stream} function has been removed, and so has -the @code{gnutls} library. Lisp programs that want an encrypted -network connection must now call external utilities such as -@command{starttls} or @command{gnutls-cli}. +The @code{gnutls} library has been removed, and the function +@code{open-network-stream} correspondingly simplified. +Lisp programs that want an encrypted network connection must now call +external utilities such as @command{starttls} or @command{gnutls-cli}. @item Tool bars can no longer display separators, which frees up several pixels of space on each graphical frame. @item -Many other functions and variables have been eliminated. +As part of the ongoing quest for simplicity, many other functions and +variables have been eliminated. @end itemize === modified file 'doc/lispref/processes.texi' --- doc/lispref/processes.texi 2012-04-14 01:59:01 +0000 +++ doc/lispref/processes.texi 2012-04-15 07:28:01 +0000 @@ -22,7 +22,7 @@ before continuing execution. When you create an asynchronous subprocess, it can run in parallel with the Lisp program. This kind of subprocess is represented within Emacs by a Lisp object which is also -called a ``process.'' Lisp programs can use this object to communicate +called a ``process''. Lisp programs can use this object to communicate with the subprocess or to control it. For example, you can send signals, obtain status information, receive output from the process, or send input to it. @@ -69,7 +69,9 @@ process and returns a process object (@pxref{Asynchronous Processes}). The other two, @code{call-process} and @code{call-process-region}, create a synchronous process and do not return a process object -(@pxref{Synchronous Processes}). +(@pxref{Synchronous Processes}). There are various higher-level +functions that make use of these primitives to run particular types of +process. Synchronous and asynchronous processes are explained in the following sections. Since the three functions are all called in a similar @@ -103,16 +105,19 @@ @strong{Please note:} The argument @var{program} contains only the name of the program; it may not contain any command-line arguments. You -must use @var{args} to provide those. +must use a separate argument, @var{args}, to provide those, as +described below. Each of the subprocess-creating functions has a @var{buffer-or-name} -argument which specifies where the standard output from the program will +argument that specifies where the standard output from the program will go. It should be a buffer or a buffer name; if it is a buffer name, that will create the buffer if it does not already exist. It can also be @code{nil}, which says to discard the output unless a filter function handles it. (@xref{Filter Functions}, and @ref{Read and Print}.) Normally, you should avoid having multiple processes send output to the same buffer because their output would be intermixed randomly. +For synchronous processes, you can send the output to a file instead +of a buffer. @cindex program arguments All three of the subprocess-creating functions have a @code{&rest} @@ -121,18 +126,16 @@ characters and other shell constructs have no special meanings in these strings, since the strings are passed directly to the specified program. - The subprocess gets its current directory from the value of -@code{default-directory} (@pxref{File Name Expansion}). - @cindex environment variables, subprocesses The subprocess inherits its environment from Emacs, but you can specify overrides for it with @code{process-environment}. @xref{System -Environment}. +Environment}. The subprocess gets its current directory from the +value of @code{default-directory}. @defvar exec-directory @pindex movemail The value of this variable is a string, the name of a directory that -contains programs that come with GNU Emacs, programs intended for Emacs +contains programs that come with GNU Emacs and are intended for Emacs to invoke. The program @code{movemail} is an example of such a program; Rmail uses it to fetch new mail from an inbox. @end defvar @@ -147,6 +150,11 @@ The value of @code{exec-path} is used by @code{call-process} and @code{start-process} when the @var{program} argument is not an absolute file name. + +Generally, you should not modify @code{exec-path} directly. Instead, +ensure that your @env{PATH} environment variable is set appropriately +before starting Emacs. Trying to modify @code{exec-path} +independently of @env{PATH} can lead to confusing results. @end defopt @node Shell Arguments @@ -162,7 +170,7 @@ characters, use the function @code{shell-quote-argument}: @defun shell-quote-argument argument -This function returns a string which represents, in shell syntax, +This function returns a string that represents, in shell syntax, an argument whose actual contents are @var{argument}. It should work reliably to concatenate the return value into a shell command and then pass it to a shell for execution. @@ -200,10 +208,10 @@ The following two functions are useful for combining a list of individual command-line argument strings into a single string, and taking a string apart into a list of individual command-line -arguments. These functions are mainly intended to be used for +arguments. These functions are mainly intended for converting user input in the minibuffer, a Lisp string, into a list of string arguments to be passed to @code{call-process} or -@code{start-process}, or for the converting such lists of arguments in +@code{start-process}, or for converting such lists of arguments into a single Lisp string to be presented in the minibuffer or echo area. @defun split-string-and-unquote string &optional separators @@ -347,7 +355,7 @@ @result{} 0 ---------- Buffer: foo ---------- -/usr/user/lewis/manual +/home/lewis/manual ---------- Buffer: foo ---------- @end group @@ -356,18 +364,18 @@ @result{} 0 ---------- Buffer: bar ---------- -lewis:5LTsHm66CSWKg:398:21:Bil Lewis:/user/lewis:/bin/csh +lewis:x:1001:1001:Bil Lewis,,,,:/home/lewis:/bin/bash ---------- Buffer: bar ---------- @end group @end smallexample -Here is a good example of the use of @code{call-process}, which used to -be found in the definition of @code{insert-directory}: +Here is an example of the use of @code{call-process}, as used to +be found in the definition of the @code{insert-directory} function: @smallexample @group -(call-process insert-directory-program nil t nil @var{switches} +(call-process insert-directory-program nil t nil switches (if full-directory-p (concat (file-name-as-directory file) ".") file)) @@ -377,9 +385,9 @@ @defun process-file program &optional infile buffer display &rest args This function processes files synchronously in a separate process. It -is similar to @code{call-process} but may invoke a file handler based -on the value of the variable @code{default-directory}. The current -working directory of the subprocess is @code{default-directory}. +is similar to @code{call-process}, but may invoke a file handler based +on the value of the variable @code{default-directory}, which specifies +the current working directory of the subprocess. The arguments are handled in almost the same way as for @code{call-process}, with the following differences: @@ -392,15 +400,15 @@ output by way of the @var{buffer} argument. If a file handler is invoked, it determines the program to run based -on the first argument @var{program}. For instance, consider that a +on the first argument @var{program}. For instance, suppose that a handler for remote files is invoked. Then the path that is used for -searching the program might be different than @code{exec-path}. +searching for the program might be different from @code{exec-path}. The second argument @var{infile} may invoke a file handler. The file handler could be different from the handler chosen for the @code{process-file} function itself. (For example, -@code{default-directory} could be on a remote host, whereas -@var{infile} is on another remote host. Or @code{default-directory} +@code{default-directory} could be on one remote host, and +@var{infile} on a different remote host. Or @code{default-directory} could be non-special, whereas @var{infile} is on a remote host.) If @var{buffer} is a list of the form @code{(@var{real-destination} @@ -417,16 +425,16 @@ @end defun @defvar process-file-side-effects -This variable indicates, whether a call of @code{process-file} changes +This variable indicates whether a call of @code{process-file} changes remote files. -Per default, this variable is always set to @code{t}, meaning that a +By default, this variable is always set to @code{t}, meaning that a call of @code{process-file} could potentially change any file on a remote host. When set to @code{nil}, a file handler could optimize -its behavior with respect to remote file attributes caching. +its behavior with respect to remote file attribute caching. -This variable should never be changed by @code{setq}. Instead of, it -shall be set only by let-binding. +You should only ever change this variable with a let-binding; never +with @code{setq}. @end defvar @defun call-process-region start end program &optional delete destination display &rest args @@ -442,7 +450,7 @@ @code{call-process}, above. If @var{destination} is the integer 0, @code{call-process-region} discards the output and returns @code{nil} immediately, without waiting for the subprocess to finish (this only -works if asynchronous subprocesses are supported). +works if asynchronous subprocesses are supported; i.e. not on MS-DOS). The remaining arguments, @var{args}, are strings that specify command line arguments for the program. @@ -476,20 +484,21 @@ @end group @end smallexample - The @code{shell-command-on-region} command uses -@code{call-process-region} like this: + For example, the @code{shell-command-on-region} command uses +@code{call-process-region} in a manner similar to this: @smallexample @group (call-process-region start end - shell-file-name ; @r{Name of program.} - nil ; @r{Do not delete region.} - buffer ; @r{Send output to @code{buffer}.} - nil ; @r{No redisplay during output.} - "-c" command) ; @r{Arguments for the shell.} + shell-file-name ; @r{name of program} + nil ; @r{do not delete region} + buffer ; @r{send output to @code{buffer}} + nil ; @r{no redisplay during output} + "-c" command) ; @r{arguments for the shell} @end group @end smallexample +@c It actually uses shell-command-switch, but no need to mention that here. @end defun @defun call-process-shell-command command &optional infile destination display &rest args @@ -510,6 +519,9 @@ then returns the command's output as a string. @end defun +@c There is also shell-command-on-region, but that is more of a user +@c command, not something to use in programs. + @defun process-lines program &rest args This function runs @var{program}, waits for it to finish, and returns its output as a list of strings. Each string in the list holds a @@ -553,7 +565,8 @@ line arguments for the program. In the example below, the first process is started and runs (rather, -sleeps) for 100 seconds. Meanwhile, the second process is started, and +sleeps) for 100 seconds (the output buffer @samp{foo} is created +immediately). Meanwhile, the second process is started, and given the name @samp{my-process<1>} for the sake of uniqueness. It inserts the directory listing at the end of the buffer @samp{foo}, before the first process finishes. Then it finishes, and a message to @@ -567,13 +580,15 @@ @end group @group -(start-process "my-process" "foo" "ls" "-l" "/user/lewis/bin") +(start-process "my-process" "foo" "ls" "-l" "/bin") @result{} #> ---------- Buffer: foo ---------- -total 2 -lrwxrwxrwx 1 lewis 14 Jul 22 10:12 gnuemacs --> /emacs --rwxrwxrwx 1 lewis 19 Jul 30 21:02 lemon +total 8336 +-rwxr-xr-x 1 root root 971384 Mar 30 10:14 bash +-rwxr-xr-x 1 root root 146920 Jul 5 2011 bsd-csh +@dots{} +-rwxr-xr-x 1 root root 696880 Feb 28 15:55 zsh4 Process my-process<1> finished @@ -586,45 +601,49 @@ @defun start-file-process name buffer-or-name program &rest args Like @code{start-process}, this function starts a new asynchronous subprocess running @var{program} in it, and returns its process -object---when @code{default-directory} is not a magic file name. +object. -If @code{default-directory} is magic, the function invokes its file -handler instead. This handler ought to run @var{program}, perhaps on -the local host, perhaps on a remote host that corresponds to -@code{default-directory}. In the latter case, the local part of -@code{default-directory} becomes the working directory of the process. +The difference from @code{start-process} is that this function may +invoked a file handler based on the value of @code{default-directory}. +This handler ought to run @var{program}, perhaps on the local host, +perhaps on a remote host that corresponds to @code{default-directory}. +In the latter case, the local part of @code{default-directory} becomes +the working directory of the process. This function does not try to invoke file name handlers for @var{program} or for the @var{program-args}. Depending on the implementation of the file handler, it might not be possible to apply @code{process-filter} or @code{process-sentinel} to -the resulting process object (@pxref{Filter Functions}, @pxref{Sentinels}). +the resulting process object. @xref{Filter Functions}, and @ref{Sentinels}. +@c FIXME Can we find a better example (i.e. a more modern function +@c that is actually documented). Some file handlers may not support @code{start-file-process} (for -example @code{ange-ftp-hook-function}). In such cases, the function -does nothing and returns @code{nil}. +example the function @code{ange-ftp-hook-function}). In such cases, +this function does nothing and returns @code{nil}. @end defun @defun start-process-shell-command name buffer-or-name command -This function is like @code{start-process} except that it uses a shell +This function is like @code{start-process}, except that it uses a shell to execute the specified command. The argument @var{command} is a shell command name. The variable @code{shell-file-name} specifies which shell to use. The point of running a program through the shell, rather than directly with @code{start-process}, is so that you can employ shell features such -as wildcards in the arguments. It follows that if you include an -arbitrary user-specified arguments in the command, you should quote it +as wildcards in the arguments. It follows that if you include any +arbitrary user-specified arguments in the command, you should quote them with @code{shell-quote-argument} first, so that any special shell characters do @emph{not} have their special shell meanings. @xref{Shell -Arguments}. +Arguments}. Of course, when executing commands based on user input +you should also consider the security implications. @end defun @defun start-file-process-shell-command name buffer-or-name command This function is like @code{start-process-shell-command}, but uses -@code{start-file-process} internally. By this, @var{command} can be -executed also on remote hosts, depending on @code{default-directory}. +@code{start-file-process} internally. Because of this, @var{command} +can also be executed on remote hosts, depending on @code{default-directory}. @end defun @defvar process-connection-type @@ -649,7 +668,7 @@ @smallexample @group -(let ((process-connection-type nil)) ; @r{Use a pipe.} +(let ((process-connection-type nil)) ; @r{use a pipe} (start-process @dots{})) @end group @end smallexample @@ -666,9 +685,9 @@ @dfn{Deleting a process} disconnects Emacs immediately from the subprocess. Processes are deleted automatically after they terminate, but not necessarily right away. You can delete a process explicitly -at any time. If you delete a terminated process explicitly before it +at any time. If you explicitly delete a terminated process before it is deleted automatically, no harm results. Deleting a running -process sends a signal to terminate it (and its child processes if +process sends a signal to terminate it (and its child processes, if any), and calls the process sentinel if it has one. @xref{Sentinels}. When a process is deleted, the process object itself continues to @@ -866,7 +885,7 @@ @end defun @defun process-live-p process -This function returns nin-@code{nil} if @var{process} is alive. A +This function returns non-@code{nil} if @var{process} is alive. A process is considered alive if its status is @code{run}, @code{open}, @code{listen}, @code{connect} or @code{stop}. @end defun @@ -2664,7 +2683,7 @@ @dfn{fields}. This specification controls length of each field to be processed, and how to pack or unpack it. We normally keep bindat specs in variables whose names end in @samp{-bindat-spec}; that kind of name -is automatically recognized as ``risky.'' +is automatically recognized as ``risky''. @cindex endianness @cindex big endian @@ -2674,7 +2693,7 @@ that the field represents and, in the case of multibyte fields, how the bytes are ordered within the field. The two possible orderings are ``big endian'' (also known as ``network byte ordering'') and -``little endian.'' For instance, the number @code{#x23cd} (decimal +``little endian''. For instance, the number @code{#x23cd} (decimal 9165) in big endian would be the two bytes @code{#x23} @code{#xcd}; and in little endian, @code{#xcd} @code{#x23}. Here are the possible type values: === modified file 'lisp/ChangeLog' --- lisp/ChangeLog 2012-04-15 02:59:30 +0000 +++ lisp/ChangeLog 2012-04-15 07:28:01 +0000 @@ -1,3 +1,16 @@ +2012-04-15 Stefan Monnier + + Avoid the use of ((lambda ...) ...) in lexical-binding code. + * emacs-lisp/easy-mmode.el (define-minor-mode):Use funcall (bug#11241). + +2012-04-15 Glenn Morris + + * simple.el (process-file-side-effects): Doc fix. + +2012-04-15 Glenn Morris + + * international/mule-cmds.el (set-language-environment): Doc fix. + 2012-04-14 Juanma Barranquero * server.el (server-auth-key, server-generate-key): Doc fixes. === modified file 'lisp/emacs-lisp/easy-mmode.el' --- lisp/emacs-lisp/easy-mmode.el 2012-02-23 18:51:22 +0000 +++ lisp/emacs-lisp/easy-mmode.el 2012-04-14 12:48:27 +0000 @@ -260,7 +260,7 @@ ;; repeat-command still does the toggling correctly. (interactive (list (or current-prefix-arg 'toggle))) (let ((,last-message (current-message))) - (,@(if setter (list setter) + (,@(if setter `(funcall #',setter) (list (if (symbolp mode) 'setq 'setf) mode)) (if (eq arg 'toggle) (not ,mode) === modified file 'lisp/international/mule-cmds.el' --- lisp/international/mule-cmds.el 2012-04-09 00:58:00 +0000 +++ lisp/international/mule-cmds.el 2012-04-15 07:28:01 +0000 @@ -1834,7 +1834,11 @@ This sets the coding system priority and the default input method and sometimes other things. LANGUAGE-NAME should be a string which is the name of a language environment. For example, \"Latin-1\" -specifies the character set for the major languages of Western Europe." +specifies the character set for the major languages of Western Europe. + +If there is a prior value for `current-language-environment', this +runs the hook `exit-language-environment-hook'. After setting up +the new language environment, it runs `set-language-environment-hook'." (interactive (list (read-language-name nil "Set language environment (default English): "))) === modified file 'lisp/simple.el' --- lisp/simple.el 2012-04-14 01:46:06 +0000 +++ lisp/simple.el 2012-04-15 07:28:01 +0000 @@ -1,6 +1,6 @@ ;;; simple.el --- basic editing commands for Emacs -;; Copyright (C) 1985-1987, 1993-2012 Free Software Foundation, Inc. +;; Copyright (C) 1985-1987, 1993-2012 Free Software Foundation, Inc. ;; Maintainer: FSF ;; Keywords: internal @@ -2677,13 +2677,13 @@ (defvar process-file-side-effects t "Whether a call of `process-file' changes remote files. -Per default, this variable is always set to `t', meaning that a +By default, this variable is always set to `t', meaning that a call of `process-file' could potentially change any file on a remote host. When set to `nil', a file handler could optimize -its behavior with respect to remote file attributes caching. +its behavior with respect to remote file attribute caching. -This variable should never be changed by `setq'. Instead of, it -shall be set only by let-binding.") +You should only ever change this variable with a let-binding; +never with `setq'.") (defun start-file-process (name buffer program &rest program-args) "Start a program in a subprocess. Return the process object for it. ------------------------------------------------------------ revno: 107909 committer: Juanma Barranquero branch nick: trunk timestamp: Sun 2012-04-15 04:59:30 +0200 message: Fix ChangeLog typos. diff: === modified file 'ChangeLog' --- ChangeLog 2012-04-14 01:46:06 +0000 +++ ChangeLog 2012-04-15 02:59:30 +0000 @@ -2308,7 +2308,7 @@ 2010-03-12 Eli Zaretskii - These changes remove termcap.c from the build on Posix platforms. + These changes remove termcap.c from the build on POSIX platforms. * configure.in : Remove termcap.h. * configure: Regenerated. === modified file 'lib-src/ChangeLog' --- lib-src/ChangeLog 2012-04-14 01:46:06 +0000 +++ lib-src/ChangeLog 2012-04-15 02:59:30 +0000 @@ -67,7 +67,7 @@ * makefile.w32-in (LOCAL_FLAGS): Add $(EMACS_EXTRA_C_FLAGS). * emacsclient.c (main) : Remove declaration, already - pulled in by unistd.h on Posix hosts and stdlib.h on MS-Windows. + pulled in by unistd.h on POSIX hosts and stdlib.h on MS-Windows. 2011-11-24 Glenn Morris @@ -6651,7 +6651,7 @@ 1993-08-25 Paul Eggert (eggert@twinsun.com) - * rcs2log: Change /{/ to /\{/ for Posix ERE compatibility; + * rcs2log: Change /{/ to /\{/ for POSIX ERE compatibility; otherwise, HP awk complains. * vcdiff: Append /usr/ccs/bin and /usr/sccs to PATH, since these @@ -6998,7 +6998,7 @@ * rcs2log: mawk, SunOS 4.1.3 nawk, and Ultrix/MKS nawk all barf on /[/]/, so change it to /[\/]/. This should work on all - Posix-compliant awks. It's slightly wrong with traditional awk, + POSIX-compliant awks. It's slightly wrong with traditional awk, since it matches \ too, but that's a minor problem compared to awk syntax errors. === modified file 'lisp/ChangeLog' --- lisp/ChangeLog 2012-04-14 12:58:29 +0000 +++ lisp/ChangeLog 2012-04-15 02:59:30 +0000 @@ -12,8 +12,7 @@ 2012-04-14 Michal Nazarewicz * server.el (server-auth-key): New variable. - (server-generate-key): New function. - (server-get-auth-key): New function. + (server-generate-key, server-get-auth-key): New function. (server-start): Use the new variable and functions to allow setting a permanent server key (bug#9423). @@ -156,11 +155,10 @@ * hexl.el (hexl-bits): New variable. (hexl-options): Mention the variable in the doc string. - (hexl-rulerise): New function. - (hexl-line-displen): New function + (hexl-rulerise, hexl-line-displen): New functions. (hexl-mode): Mention the new variable. - (hexl-mode, hexl-current-address, hexl-current-address): Use the - displen. + (hexl-mode, hexl-current-address, hexl-current-address): + Use the displen. (hexl-ascii-start-column): New function. (hexl-address-to-marker, hexl-beginning-of-line, hexl-options) (hexl-insert-char, hexl-mode-ruler): Use the displen (bug#4941). @@ -223,7 +221,7 @@ * emacs-lisp/lisp.el (narrow-to-defun): `beginning-of-defun' goes to previous function when point is on the first character of a - function. Take care of that in `narrow-to-defun' (bug#6157). + function. Take care of that in `narrow-to-defun' (bug#6157). 2012-04-11 Glenn Morris @@ -285,8 +283,8 @@ 2012-04-10 Laimonas VÄ—bra (tiny change) * language/european.el (cp775): Add oem/legacy (en)coding on - DOS/MS Windows for the Baltic languages. There are still plenty of - texts written in this encoding/codepage (bug#6519). + DOS/MS Windows for the Baltic languages. There are still plenty + of texts written in this encoding/codepage (bug#6519). 2012-04-10 Glenn Morris @@ -476,8 +474,8 @@ 2012-03-30 AgustĂ­n MartĂ­n Domingo * ispell.el (ispell-get-extended-character-mode): Disable - extended-char-mode for hunspell. hunspell does not support it and - treats ~word as ordinary words in pipe mode. + extended-char-mode for hunspell. hunspell does not support it + and treats ~word as ordinary words in pipe mode. 2012-03-30 Glenn Morris @@ -707,7 +705,7 @@ (hfy-face-to-css-default): Same as the earlier `hfy-face-to-css'. (hfy-face-to-css): Re-defined to be a variable. (hfy-compile-stylesheet): Modify. Allow stylesheet to be built - over multiple runs. This is made possible by having the caller let + over multiple runs. This is made possible by having the caller let bind a special variable `hfy-user-sheet-assoc'. (htmlfontify-string): New defun. (hfy-compile-face-map): Make sure that the last char in the @@ -940,7 +938,7 @@ 2012-03-09 Michael Albinus - * net/dbus.el: (dbus-property-handler): Return empty array if + * net/dbus.el (dbus-property-handler): Return empty array if there are no properties. 2012-03-09 Leo Liu === modified file 'lisp/ChangeLog.11' --- lisp/ChangeLog.11 2012-02-24 19:32:46 +0000 +++ lisp/ChangeLog.11 2012-04-15 02:59:30 +0000 @@ -10889,7 +10889,7 @@ 2004-01-29 Jari Aalto * progmodes/executable.el (executable-command-find-posix-p): - New. Check if find handles arguments Posix-style. + New. Check if find handles arguments POSIX-style. * progmodes/grep.el (grep-compute-defaults): Use executable-command-find-posix-p. === modified file 'lisp/ChangeLog.12' --- lisp/ChangeLog.12 2012-01-19 07:21:25 +0000 +++ lisp/ChangeLog.12 2012-04-15 02:59:30 +0000 @@ -12449,7 +12449,7 @@ * calendar/appt.el (diary-selective-display): Add defvar. - * sort.el (sort-columns): Use Posix arg syntax for `sort'. + * sort.el (sort-columns): Use POSIX arg syntax for `sort'. * isearch.el (search-whitespace-regexp): Fix custom type. === modified file 'lisp/ChangeLog.6' --- lisp/ChangeLog.6 2012-01-19 07:21:25 +0000 +++ lisp/ChangeLog.6 2012-04-15 02:59:30 +0000 @@ -715,7 +715,7 @@ * ediff-diff.el (ediff-setup-fine-diff-regions): Allow diff options to be passed to the diff program. - (ediff-make-diff2-buffer): Don't run Posix diff on remote files. + (ediff-make-diff2-buffer): Don't run POSIX diff on remote files. (ediff-make-diff2-buffer): Refuses to diff remote files. (ediff-make-diff2-buffer, ediff-setup-diff-regions): Changed functions. (ediff-make-diff2-buffer): New function. === modified file 'nt/ChangeLog' --- nt/ChangeLog 2012-04-14 01:46:06 +0000 +++ nt/ChangeLog 2012-04-15 02:59:30 +0000 @@ -1195,7 +1195,7 @@ 2005-06-05 Eli Zaretskii * inc/sys/socket.h: Change arg 4 of sys_setsockopt to - `const void *', for consistency with Posix. + `const void *', for consistency with POSIX. 2005-06-04 Eli Zaretskii === modified file 'src/ChangeLog' --- src/ChangeLog 2012-04-14 06:18:49 +0000 +++ src/ChangeLog 2012-04-15 02:59:30 +0000 @@ -51,7 +51,7 @@ * alloc.c (lisp_align_malloc): Remove unneeded prototype. -2012-04-10 "Jason S. Cornez" (tiny change) +2012-04-10 Jason S. Cornez (tiny change) * keyboard.c: Override inhibit-quit after the third C-g (bug#6585). (force_quit_count): New var. @@ -1550,7 +1550,7 @@ * xfns.c (unwind_create_frame): Fix comment. (Fx_create_frame, x_create_tip_frame): Move terminal->reference_count++ just before making the frame - official. Move initialization of image_cache_refcount and + official. Move initialization of image_cache_refcount and dpyinfo_refcount before calling init_frame_faces (Bug#9943). 2011-11-05 Eli Zaretskii @@ -7323,7 +7323,7 @@ * xfaces.c : Make extern again. * syntax.c: Include sys/types.h before including regex.h, as - required by Posix. + required by POSIX. * doc.c (get_doc_string): Improve the format passed to `error'. === modified file 'src/ChangeLog.10' --- src/ChangeLog.10 2012-02-24 19:44:16 +0000 +++ src/ChangeLog.10 2012-04-15 02:59:30 +0000 @@ -23215,7 +23215,7 @@ * macterm.c (do_ae_open_documents) [MAC_OSX]: Call FSpMakeFSRef and FSRefMakePath to convert FSSpec returned with Apple Event to - Posix pathname. + POSIX pathname. (mac_initialize) [TARGET_API_MAC_CARBON]: Call init_required_apple_events and disable the `Quit' menu item provided automatically by the Carbon Toolbox. === modified file 'src/ChangeLog.11' --- src/ChangeLog.11 2012-03-21 18:27:05 +0000 +++ src/ChangeLog.11 2012-04-15 02:59:30 +0000 @@ -9641,7 +9641,7 @@ 2010-03-12 Eli Zaretskii - These changes remove termcap.c from the build on Posix platforms. + These changes remove termcap.c from the build on POSIX platforms. * Makefile.in (termcapobj): Move termcap.o from here... (MSDOS_OBJ): ...to here. (termcapobj) [!LIBS_TERMCAP]: Remove specialized value, as it is === modified file 'src/ChangeLog.6' --- src/ChangeLog.6 2012-01-19 07:21:25 +0000 +++ src/ChangeLog.6 2012-04-15 02:59:30 +0000 @@ -3236,7 +3236,7 @@ 1995-12-12 Paul Eggert - * process.c (create_process): Use Posix signal handling to + * process.c (create_process): Use POSIX signal handling to block signals, if available. If HAVE_VFORK, save and restore signal handlers that the child might change, since in many systems (e.g. Solaris 2.4) if the child changes the signal ------------------------------------------------------------ Use --include-merges or -n0 to see merged revisions.