Mercurial > hg > xemacs-beta
view lisp/lib-complete.el @ 4953:304aebb79cd3
function renamings to track names of char typedefs
-------------------- ChangeLog entries follow: --------------------
man/ChangeLog addition:
2010-01-27 Ben Wing <ben@xemacs.org>
* internals/internals.texi (lrecords):
* internals/internals.texi (The DFC API):
* internals/internals.texi (Conversion to and from External Data):
* internals/internals.texi (Mule-izing Code):
* internals/internals.texi (Pervasive changes throughout XEmacs sources):
* internals/internals.texi (Ben's README):
* internals/internals.texi (Future Work -- Localized Text/Messages):
* emodules.texi (Defining Variables):
Rename:
write_c_string -> write_cistring
build_intstring -> build_istring
build_string -> build_cistring
build_ext_string -> build_extstring
make_ext_string -> make_extstring
buffer_insert_c_string -> buffer_insert_ascstring
intern_int -> intern_istring
See comment in src/ChangeLog about this.
modules/ChangeLog addition:
2010-01-27 Ben Wing <ben@xemacs.org>
* postgresql/postgresql.c (print_pgconn):
* postgresql/postgresql.c (print_pgresult):
* postgresql/postgresql.c (Fpq_conn_defaults):
* postgresql/postgresql.c (Fpq_pgconn):
* postgresql/postgresql.c (Fpq_res_status):
* postgresql/postgresql.c (Fpq_result_error_message):
* postgresql/postgresql.c (Fpq_fname):
* postgresql/postgresql.c (Fpq_get_value):
* postgresql/postgresql.c (Fpq_cmd_status):
* postgresql/postgresql.c (Fpq_cmd_tuples):
* postgresql/postgresql.c (Fpq_notifies):
* postgresql/postgresql.c (Fpq_get_line):
* postgresql/postgresql.c (Fpq_get_line_async):
* postgresql/postgresql.c (FROB):
* postgresql/postgresql.c (init_postgresql_from_environment):
* ldap/eldap.c:
* ldap/eldap.c (Fldap_open):
* ldap/eldap.c (Fldap_search_basic):
* canna/canna_api.c:
* canna/canna_api.c (make_euc_string):
Rename:
write_c_string -> write_cistring
build_intstring -> build_istring
build_string -> build_cistring
build_ext_string -> build_extstring
make_ext_string -> make_extstring
buffer_insert_c_string -> buffer_insert_ascstring
intern_int -> intern_istring
See comment in src/ChangeLog about this.
src/ChangeLog addition:
2010-01-27 Ben Wing <ben@xemacs.org>
* .gdbinit.in.in:
* README:
* abbrev.c (write_abbrev):
* abbrev.c (describe_abbrev):
* alloc.c (make_extstring):
* alloc.c (build_istring):
* alloc.c (build_cistring):
* alloc.c (build_ascstring):
* alloc.c (build_extstring):
* alloc.c (build_msg_istring):
* alloc.c (build_defer_istring):
* buffer.c (Fgenerate_new_buffer_name):
* buffer.c (init_buffer_2):
* console-tty.c (tty_init_console):
* console-x.c (get_display_arg_connection):
* console-x.c (x_perhaps_init_unseen_key_defaults):
* database.c (dbm_map):
* database.c (dbm_get):
* database.c (berkdb_get):
* database.c (berkdb_map):
* device-gtk.c (FROB_PIXMAP):
* device-gtk.c (Fgtk_style_info):
* device-msw.c (msprinter_default_printer):
* device-msw.c (sync_printer_with_devmode):
* device-x.c (coding_system_of_xrm_database):
* device-x.c (x_init_device):
* device-x.c (signal_if_x_error):
* device-x.c (Fx_get_resource):
* device-x.c (Fx_server_vendor):
* device-x.c (Fx_get_font_path):
* dialog-x.c (maybe_run_dbox_text_callback):
* doc.c (extract_object_file_name):
* doc.c (unparesseuxify_doc_string):
* doc.c (get_doc_string):
* doc.c (get_object_file_name):
* doc.c (Fdocumentation):
* doc.c (Fsnarf_documentation):
* doc.c (Fsubstitute_command_keys):
* editfns.c (init_editfns):
* editfns.c (Ftemp_directory):
* editfns.c (Fuser_login_name):
* editfns.c (Fuser_real_login_name):
* editfns.c (Fuser_home_directory):
* editfns.c (Fformat_time_string):
* editfns.c (Fcurrent_time_string):
* editfns.c (Fcurrent_time_zone):
* emacs.c:
* emacs.c (main_1):
* emodules.c (Flist_modules):
* emodules.c (emodules_load):
* emodules.c (emodules_doc_sym):
* emodules.c (vars_of_module):
* event-Xt.c (x_has_keysym):
* event-gtk.c (emacs_gtk_format_magic_event):
* event-gtk.c (dragndrop_data_received):
* event-gtk.c (gtk_reset_key_mapping):
* event-msw.c (mswindows_dde_callback):
* event-msw.c (mswindows_wnd_proc):
* faces.c (complex_vars_of_faces):
* file-coding.c (find_coding_system):
* file-coding.c (setup_eol_coding_systems):
* file-coding.c (make_coding_system_1):
* file-coding.c (snarf_coding_system):
* fileio.c:
* fileio.c (lisp_strerror):
* fileio.c (Ffile_name_directory):
* fileio.c (Ffile_name_as_directory):
* fileio.c (Fdirectory_file_name):
* fileio.c (if):
* fileio.c (Ffile_symlink_p):
* fileio.c (Fencrypt_string):
* fileio.c (Fdecrypt_string):
* filelock.c (lock_file):
* filelock.c (Ffile_locked_p):
* floatfns.c (matherr):
* font-mgr.c (build_fcapi_string):
* font-mgr.c (make_xlfd_font_regexp):
* frame-msw.c (mswindows_window_id):
* frame-msw.c (mswindows_frame_property):
* frame-x.c:
* frame-x.c (color_to_string):
* frame-x.c (maybe_set_frame_title_format):
* frame-x.c (x_cde_transfer_callback):
* frame-x.c (Fx_window_id):
* glade.c (connector):
* glade.c (Fglade_xml_textdomain):
* glade.c (syms_of_glade):
* glyphs-eimage.c (jpeg_instantiate):
* glyphs-eimage.c (png_instantiate):
* glyphs-eimage.c (tiff_instantiate):
* glyphs-gtk.c (font_instantiate):
* glyphs-gtk.c (BUILD_GLYPH_INST):
* glyphs-x.c (x_locate_pixmap_file):
* glyphs-x.c (font_instantiate):
* glyphs-x.c (x_widget_property):
* glyphs-x.c (BUILD_GLYPH_INST):
* glyphs.c (print_image_instance):
* glyphs.c (bitmap_to_lisp_data):
* glyphs.c (pixmap_to_lisp_data):
* gpmevent.c (turn_off_gpm):
* gpmevent.c (Fgpm_enabled_p):
* gpmevent.c (Fgpm_enable):
* gtk-glue.c (__make_string_mapper):
* gtk-glue.c (xemacs_gtklist_to_list):
* gtk-xemacs.c (FROB_FACE):
* gtk-xemacs.c (xemacs_gtk_convert_color):
* hpplay.c (player_error_internal):
* hpplay.c (myHandler):
* insdel.c (buffer_insert_ascstring_1):
* insdel.h:
* insdel.h (buffer_insert_ascstring):
* intl.c (Fcurrent_locale):
* intl.c (Fset_current_locale):
* keymap.c (make_key_description):
* keymap.c (Ftext_char_description):
* keymap.c (describe_command):
* keymap.c (describe_map):
* lisp.h:
* lread.c:
* lread.c (locate_file_in_directory_mapper):
* lread.c (locate_file_construct_suffixed_files_mapper):
* mule-charset.c (Fmake_charset):
* nt.c (Fmswindows_short_file_name):
* nt.c (Fmswindows_long_file_name):
* objects-gtk.c (__get_gtk_font_truename):
* objects-gtk.c (__gtk_font_list_internal):
* objects-msw.c (font_enum_callback_2):
* objects-msw.c (create_hfont_from_font_spec):
* objects-msw.c (mswindows_font_list):
* objects-msw.c (mswindows_font_spec_matches_charset_stage_2):
* objects-tty.c (tty_initialize_font_instance):
* objects-x.c (x_font_truename):
* objects-x.c (x_font_instance_truename):
* objects-x.c (x_font_instance_properties):
* objects-x.c (x_font_list):
* print.c (write_cistring):
* print.c (print_vector_internal):
* print.c (print_cons):
* process-nt.c (nt_canonicalize_host_name):
* process-unix.c (unix_create_process):
* process-unix.c (unix_canonicalize_host_name):
* process.c (status_message):
* process.c (status_notify):
* process.c (init_xemacs_process):
* process.c (syms_of_process):
* redisplay-tty.c (term_get_fkeys_1):
* redisplay-tty.c (CONDITIONAL_REASSIGN):
* search.c (compile_pattern_1):
* select-common.h (selection_data_to_lisp_data):
* select-gtk.c (atom_to_symbol):
* select-gtk.c (PROCESSING_GTK_CODE):
* select-msw.c (mswindows_get_foreign_selection):
* select-x.c (x_atom_to_symbol):
* select-x.c (Fx_get_cutbuffer_internal):
* symbols.c (intern_istring):
* symbols.c (intern):
* symbols.c (intern_converting_underscores_to_dashes):
* symbols.c (Fintern):
* sysdep.c (init_system_name):
* sysdll.c (dll_error):
* sysdll.c (dll_open):
* syswindows.h:
* syswindows.h (build_tstr_string):
* tests.c (DFC_CHECK_LENGTH):
* tests.c (DFC_CHECK_CONTENT):
* tests.c (DFC_RESULT_PASS):
* tests.c (Ftest_data_format_conversion):
* text.c:
* text.c (new_dfc_convert_now_damn_it):
* text.h:
* text.h (build_wext_string):
* tooltalk.c (tt_build_c_string):
* tooltalk.c (Ftooltalk_default_procid):
* tooltalk.c (Ftooltalk_default_session):
* tooltalk.c (init_tooltalk):
* ui-byhand.c (Fgtk_clist_get_text):
* ui-byhand.c (Fgtk_clist_get_pixtext):
* ui-byhand.c (Fgtk_label_get):
* ui-byhand.c (Fgtk_notebook_query_tab_label_packing):
* ui-gtk.c (emacs_gtk_object_printer):
* ui-gtk.c (emacs_gtk_boxed_printer):
* ui-gtk.c (gtk_type_to_lisp):
* ui-gtk.c (symbol_to_enum):
* ui-gtk.c (enum_to_symbol):
* unexaix.c (report_error):
* unexaix.c (ERROR0):
* unexec.c (report_error):
* unexec.c (ERROR0):
* unicode.c (unicode_to_ichar):
* win32.c (tstr_to_local_file_format):
* win32.c (Fmswindows_cygwin_to_win32_path):
* win32.c (struct read_link_hash):
* xemacs.def.in.in:
Rename:
write_c_string -> write_cistring
build_intstring -> build_istring
build_string -> build_cistring
build_ext_string -> build_extstring
make_ext_string -> make_extstring
buffer_insert_c_string -> buffer_insert_ascstring
intern_int -> intern_istring
These functions have been renamed so that the naming harmonizes
with the typedefs for strings: `cistring' along with CIbyte *,
`istring' along with Ibyte *, `extstring' along with Extbyte *,
`ascstring' along with Ascbyte *.
Also make buffer_insert_ascstring take Ascbyte * and assert
that its argument is ASCII.
author | Ben Wing <ben@xemacs.org> |
---|---|
date | Wed, 27 Jan 2010 00:35:36 -0600 |
parents | 37bdd24225ef |
children | 308d34e9f07d |
line wrap: on
line source
;;; lib-complete.el --- Completion on the lisp search path ;; Copyright (C) 1997 Free Software Foundation, Inc. ;; Copyright (C) 1991 Mike Williams <mike-w@cs.aukuni.ac.nz>. ;; Copyright (C) 2002 Ben Wing. ;; Author: Mike Williams <mike-w@cs.aukuni.ac.nz> ;; Maintainer: XEmacs Development Team ;; Keywords: lisp, extensions, dumped ;; Created: Sat Apr 20 17:47:21 1991 ;; This file is part of XEmacs. ;; XEmacs is free software; you can redistribute it and/or modify it ;; under the terms of the GNU General Public License as published by ;; the Free Software Foundation; either version 2, or (at your option) ;; any later version. ;; XEmacs is distributed in the hope that it will be useful, but ;; WITHOUT ANY WARRANTY; without even the implied warranty of ;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ;; General Public License for more details. ;; You should have received a copy of the GNU General Public License ;; along with XEmacs; see the file COPYING. If not, write to the ;; Free Software Foundation, Inc., 59 Temple Place - Suite 330, ;; Boston, MA 02111-1307, USA. ;;; Synched up with: Not in FSF. ;;; Commentary: ;; This file is dumped with XEmacs. ;; Many thanks to Hallvard Furuseth <hallvard@ifi.uio.no> for his ;; helpful suggestions. ;;; ChangeLog: ;; 4/26/97: sb Mule-ize. ;; 6/24/1999 much rewriting from Bob Weiner ;;; Code: ;;=== Determine completions for filename in search path =================== (defun library-all-completions (FILE SEARCH-PATH &optional FULL FAST) "Return all completions for FILE in any directory on SEARCH-PATH. If optional third argument FULL is non-nil, returned pathnames should be absolute rather than relative to some directory on the SEARCH-PATH. If optional fourth argument FAST is non-nil, don't sort the completions, or remove duplicates." (setq FILE (or FILE "")) (if (file-name-absolute-p FILE) ;; It's an absolute file name, so don't need SEARCH-PATH (progn (setq FILE (expand-file-name FILE)) (file-name-all-completions (file-name-nondirectory FILE) (file-name-directory FILE))) (let ((subdir (file-name-directory FILE)) (file (file-name-nondirectory FILE)) all-completions) ;; Make list of completions in each directory on SEARCH-PATH (while SEARCH-PATH (let* ((dir (concat (file-name-as-directory (expand-file-name (car SEARCH-PATH))) subdir)) (dir-prefix (if FULL dir subdir))) (if (file-directory-p dir) (let ((subdir-completions (file-name-all-completions file dir))) (while subdir-completions (setq all-completions (cons (concat dir-prefix (car subdir-completions)) all-completions)) (setq subdir-completions (cdr subdir-completions)))))) (setq SEARCH-PATH (cdr SEARCH-PATH))) (if FAST all-completions (let ((sorted (nreverse (sort all-completions 'string<))) compressed) (while sorted (if (equal (car sorted) (car compressed)) nil (setq compressed (cons (car sorted) compressed))) (setq sorted (cdr sorted))) compressed))))) ;;=== Utilities =========================================================== (defmacro progn-with-message (message &rest forms) "(progn-with-message MESSAGE FORMS ...) Display MESSAGE and evaluate FORMS, returning value of the last one." ;; based on Hallvard Furuseth's funcall-with-message `(if (eq (selected-window) (minibuffer-window)) (save-excursion (goto-char (point-max)) (let ((orig-pmax (point-max))) (unwind-protect (progn (insert " " ,message) (goto-char orig-pmax) (sit-for 0) ; Redisplay ,@forms) (delete-region orig-pmax (point-max))))) (prog2 (message "%s" ,message) (progn ,@forms) (message "")))) (put 'progn-with-message 'lisp-indent-hook 1) ;;=== Completion caching ================================================== (defconst lib-complete:cache nil "Used within `read-library' and `read-library-internal' to prevent costly repeated calls to `library-all-completions'. Format is a list of lists of the form ([<path> <subdir>] <cache-record> <cache-record> ...) where each <cache-record> has the form (<root> <modtimes> <completion-table>)") (defun lib-complete:better-root (ROOT1 ROOT2) "Return non-nil if ROOT1 is a superset of ROOT2." (and (equal (file-name-directory ROOT1) (file-name-directory ROOT2)) (string-match (concat "^" (regexp-quote (file-name-nondirectory ROOT1))) ROOT2))) (defun lib-complete:get-completion-table (FILE PATH FILTER) (let* ((subdir (file-name-directory FILE)) (root (file-name-nondirectory FILE)) (PATH (mapcar (function (lambda (dir) (file-name-as-directory (expand-file-name (or dir ""))))) PATH)) (key (vector PATH subdir FILTER)) (real-dirs (if subdir (mapcar (function (lambda (dir) (concat dir subdir))) PATH) PATH)) (path-modtimes (mapcar (function (lambda (fn) (if fn (nth 5 (file-attributes fn))))) real-dirs)) (cache-entry (assoc key lib-complete:cache)) (cache-records (cdr cache-entry))) ;; Look for cached entry (catch 'table (while cache-records (if (and (lib-complete:better-root (nth 0 (car cache-records)) root) (equal (nth 1 (car cache-records)) path-modtimes)) (throw 'table (nth 2 (car cache-records)))) (setq cache-records (cdr cache-records))) ;; Otherwise build completions (let ((completion-list (progn-with-message "(building completion table...)" (library-all-completions FILE PATH nil 'fast))) (completion-table (make-vector 127 0))) (while completion-list (let ((completion (if (or (not FILTER) (file-directory-p (car completion-list))) (car completion-list) (funcall FILTER (car completion-list))))) (if completion (intern completion completion-table))) (setq completion-list (cdr completion-list))) ;; Cache the completions (lib-complete:cache-completions key root path-modtimes completion-table) completion-table)))) (defvar lib-complete:max-cache-size 40 "*Maximum number of search paths which are cached.") (defun lib-complete:cache-completions (key root modtimes table) (let* ((cache-entry (assoc key lib-complete:cache)) (cache-records (cdr cache-entry)) (new-cache-records (list (list root modtimes table)))) (if (not cache-entry) nil ;; Remove old cache entry (setq lib-complete:cache (delq cache-entry lib-complete:cache)) ;; Copy non-redundant entries from old cache entry (while cache-records (if (or (equal root (nth 0 (car cache-records))) (lib-complete:better-root root (nth 0 (car cache-records)))) nil (setq new-cache-records (cons (car cache-records) new-cache-records))) (setq cache-records (cdr cache-records)))) ;; Add entry to front of cache (setq lib-complete:cache (cons (cons key (nreverse new-cache-records)) lib-complete:cache)) ;; Trim cache (let ((tail (nthcdr lib-complete:max-cache-size lib-complete:cache))) (if tail (setcdr tail nil))))) ;;=== Read a filename, with completion in a search path =================== (defun read-library-internal (FILE FILTER FLAG) "Don't call this." ;; Relies on read-library-internal-search-path being let-bound (declare (special read-library-internal-search-path)) (let ((completion-table (lib-complete:get-completion-table FILE read-library-internal-search-path FILTER))) (cond ((not completion-table) nil) ;; Completion table is filtered before use, so the PREDICATE ;; argument is redundant. ((eq FLAG nil) (try-completion FILE completion-table nil)) ((eq FLAG t) (all-completions FILE completion-table nil)) ((eq FLAG 'lambda) (and (intern-soft FILE completion-table) t)) ))) (defun read-library (PROMPT SEARCH-PATH &optional DEFAULT MUST-MATCH FULL FILTER) "Read library name, prompting with PROMPT and completing in directories from SEARCH-PATH. A nil in the search path represents the current directory. Completions for a given search-path are cached, with the cache being invalidated whenever one of the directories on the path changes. Default to DEFAULT if user enters a null string. Optional fourth arg MUST-MATCH non-nil means require existing file's name. Non-nil and non-t means also require confirmation after completion. Optional fifth argument FULL non-nil causes a full pathname, rather than a relative pathname, to be returned. Note that FULL implies MUST-MATCH. Optional sixth argument FILTER can be used to provide a function to filter the completions. This function is passed the filename, and should return a transformed filename (possibly a null transformation) or nil, indicating that the filename should not be included in the completions." (declare (special read-library-internal-search-path)) (let* ((read-library-internal-search-path SEARCH-PATH) (library (completing-read PROMPT 'read-library-internal FILTER (or MUST-MATCH FULL) nil))) (cond ((equal library "") DEFAULT) (FULL (locate-file library read-library-internal-search-path '(".el" ".el.gz" ".elc"))) (t library)))) (defun read-library-name (prompt) "PROMPTs for and returns an existing Elisp library name (without any suffix) or the empty string." (interactive) (declare (special read-library-internal-search-path)) (let ((read-library-internal-search-path load-path)) (completing-read prompt 'read-library-internal (lambda (fn) (cond ((string-match "\\.el\\(\\.gz\\|\\.Z\\)?$" fn) (substring fn 0 (match-beginning 0))))) t nil))) ;; NOTE: as a special case, read-library may be used to read a filename ;; relative to the current directory, returning a *relative* pathname ;; (read-file-name returns a full pathname). ;; ;; eg. (read-library "Local header: " '(nil) nil) ;;=== Replacement for load-library with completion ======================== (defun load-library (library) "Load the library named LIBRARY. This is an interface to the function `load'." (interactive (list (read-library "Load library: " load-path nil nil nil (function (lambda (fn) (cond ((string-match "\\.elc?$" fn) (substring fn 0 (match-beginning 0)))))) ))) (load library)) ;;=== find-library with completion (Author: Bob Weiner) =================== ;; should be called find-lisp-source-path! (defcustom find-library-source-path nil "The default list of directories where find-library searches. If this variable is `nil' then find-library searches `load-path' by default. If this is set to a function, it will be called the first time this value is needed, to compute the actual list, which will then be substituted into the variable. A good way to set this variable is like this: \(setq find-library-source-path #'(lambda () (paths-find-recursive-load-path (list lisp-directory \"/src/xemacs/xemacs-packages-src/\")))) " :type '(repeat directory) :group 'find-function) (defun find-library (library &optional codesys display-function) "Find and display in the current window the source for the Elisp LIBRARY. LIBRARY should be a name without any path information and may include or omit the \".el\" suffix. Under XEmacs/Mule, the optional second argument CODESYS specifies the coding system to use when decoding the file. Interactively, with a prefix argument, this prompts for the coding system. Optional third argument DISPLAY-FUNCTION must take two arguments, the filename to display and CODESYS. The default for DISPLAY-FUNCTION is `find-file'. This function searches `find-library-source-path' to find the library; if this is nil (the default), then `load-path' is searched." (interactive (list (read-library-name "Find library: ") (if current-prefix-arg (read-coding-system "Coding System: ")))) (let ((path (if (or (null library) (equal library "")) nil (when (functionp find-library-source-path) (message "Computing find-library-source-path...") (setq find-library-source-path (funcall find-library-source-path)) (message "Computing find-library-source-path... done.")) (locate-file library (or find-library-source-path load-path) ":.el:.el.gz:.el.Z:.elc")))) (if path (funcall (if (fboundp display-function) display-function 'find-file) path codesys) (error "(find-library): Cannot locate library `%s'" library)))) (defun find-library-other-window (library &optional codesys) "Find and display in another window the source for the Elisp LIBRARY. LIBRARY should be a name without any path information and may include or omit the \".el\" suffix. Under XEmacs/Mule, the optional second argument CODESYS specifies the coding system to use when decoding the file. Interactively, with a prefix argument, this prompts for the coding system." (interactive (list (read-library-name "Find library in other window: ") (if current-prefix-arg (read-coding-system "Coding System: ")))) (find-library library codesys 'find-file-other-window)) (defun find-library-other-frame (library &optional codesys) "Find and display in another frame the source for the Elisp LIBRARY. LIBRARY should be a name without any path information and may include or omit the \".el\" suffix. Under XEmacs/Mule, the optional second argument CODESYS specifies the coding system to use when decoding the file. Interactively, with a prefix argument, this prompts for the coding system." (interactive (list (read-library-name "Find library in other frame: ") (if current-prefix-arg (read-coding-system "Coding System: ")))) (find-library library codesys 'find-file-other-frame)) ;; This conflicts with an existing binding. ;;(define-key global-map "\C-xl" 'find-library) (define-key global-map "\C-x4l" 'find-library-other-window) (define-key global-map "\C-x5l" 'find-library-other-frame) (provide 'lib-complete) ;;; lib-complete.el ends here