comparison lisp/help.el @ 5182:2e528066e2fc

Move #'sort*, #'fill, #'merge to C from cl-seq.el. lisp/ChangeLog addition: 2010-04-01 Aidan Kehoe <kehoea@parhasard.net> * cl-seq.el (fill, sort*, merge): Move these functions to fns.c. (stable-sort): Make this docstring reflect the argument names used in the #'sort* docstring. * cl-macs.el (stable-sort): Make #'stable-sort exactly equivalent to #'sort* in compiled code. * bytecomp.el (byte-compile-maybe-add-*): New macro, for functions like #'sort and #'mapcar that, to be strictly compatible, should only take two args, but in our implementation can take more, because they're aliases of #'sort* and #'mapcar*. (byte-compile-mapcar, byte-compile-sort, byte-compile-fillarray): Use this new macro. (map-into): Add a byte-compile method for #'map-into in passing. * apropos.el (apropos-print): Use #'sort* with a :key argument, now it's in C. * compat.el (extent-at): Ditto. * register.el (list-registers): Ditto. * package-ui.el (pui-list-packages): Ditto. * help.el (sorted-key-descriptions): Ditto. src/ChangeLog addition: 2010-03-31 Aidan Kehoe <kehoea@parhasard.net> * fns.c (STRING_DATA_TO_OBJECT_ARRAY) (BIT_VECTOR_TO_OBJECT_ARRAY, c_merge_predicate_key) (c_merge_predicate_nokey, list_merge, array_merge) (list_array_merge_into_list, list_list_merge_into_array) (list_array_merge_into_array, CHECK_KEY_ARGUMENT, Fmerge) (list_sort, array_sort, FsortX): Move #'sort*, #'fill, #'merge from cl-seq.el to C, extending the implementations of Fsort, Ffillarray, and merge() to do so. * keymap.c (keymap_submaps, map_keymap_sort_predicate) (describe_map_sort_predicate): Change the calling semantics of the C sort predicates to return a non-nil Lisp object if the first argument is less than the second, rather than C integers. * fontcolor-msw.c (sort_font_list_function): * fileio.c (build_annotations): * dired.c (Fdirectory_files): * abbrev.c (Finsert_abbrev_table_description): Call list_sort instead of Fsort, list_merge instead of merge() in these functions. man/ChangeLog addition: 2010-04-01 Aidan Kehoe <kehoea@parhasard.net> * lispref/lists.texi (Rearrangement): Update the documentation of #'sort here, now that it accepts any type of sequence and the KEY keyword argument. (Though this is probably now the wrong place for this function, given that.)
author Aidan Kehoe <kehoea@parhasard.net>
date Thu, 01 Apr 2010 20:22:50 +0100
parents d555581e3cba
children f00192e1cd49 308d34e9f07d
comparison
equal deleted inserted replaced
5181:a00bfbd64e0a 5182:2e528066e2fc
1729 (defun sorted-key-descriptions (keys &optional separator) 1729 (defun sorted-key-descriptions (keys &optional separator)
1730 "Sort and separate the key descriptions for KEYS. 1730 "Sort and separate the key descriptions for KEYS.
1731 The sorting is done by length (shortest bindings first), and the bindings 1731 The sorting is done by length (shortest bindings first), and the bindings
1732 are separated with SEPARATOR (\", \" by default)." 1732 are separated with SEPARATOR (\", \" by default)."
1733 (mapconcat 'key-description 1733 (mapconcat 'key-description
1734 (sort keys #'(lambda (x y) 1734 (sort* keys #'< :key #'length)
1735 (< (length x) (length y)))) 1735 (or separator ", ")))
1736 (or separator ", ")))
1737 1736
1738 (defun where-is (definition &optional insert) 1737 (defun where-is (definition &optional insert)
1739 "Print message listing key sequences that invoke specified command. 1738 "Print message listing key sequences that invoke specified command.
1740 Argument is a command definition, usually a symbol with a function definition. 1739 Argument is a command definition, usually a symbol with a function definition.
1741 When run interactively, it defaults to any function found by 1740 When run interactively, it defaults to any function found by