Mercurial > hg > xemacs-beta
annotate lisp/lisp.el @ 4981:4aebb0131297
Cleanups/renaming of EXTERNAL_TO_C_STRING and friends
-------------------- ChangeLog entries follow: --------------------
modules/ChangeLog addition:
2010-02-05 Ben Wing <ben@xemacs.org>
* postgresql/postgresql.c:
* postgresql/postgresql.c (CHECK_LIVE_CONNECTION):
* postgresql/postgresql.c (Fpq_connectdb):
* postgresql/postgresql.c (Fpq_connect_start):
* postgresql/postgresql.c (Fpq_lo_import):
* postgresql/postgresql.c (Fpq_lo_export):
* ldap/eldap.c (Fldap_open):
* ldap/eldap.c (Fldap_search_basic):
* ldap/eldap.c (Fldap_add):
* ldap/eldap.c (Fldap_modify):
* ldap/eldap.c (Fldap_delete):
* canna/canna_api.c (Fcanna_initialize):
* canna/canna_api.c (Fcanna_store_yomi):
* canna/canna_api.c (Fcanna_parse):
* canna/canna_api.c (Fcanna_henkan_begin):
EXTERNAL_TO_C_STRING returns its argument instead of storing it
in a parameter, and is renamed to EXTERNAL_TO_ITEXT. Similar
things happen to related macros. See entry in src/ChangeLog.
More Mule-izing of postgresql.c. Extract out common code
between `pq-connectdb' and `pq-connect-start'. Fix places
that signal an error string using a formatted string to instead
follow the standard and have a fixed reason followed by the
particular error message stored as one of the frobs.
src/ChangeLog addition:
2010-02-05 Ben Wing <ben@xemacs.org>
* console-msw.c (write_string_to_mswindows_debugging_output):
* console-msw.c (Fmswindows_message_box):
* console-x.c (x_perhaps_init_unseen_key_defaults):
* console.c:
* database.c (dbm_get):
* database.c (dbm_put):
* database.c (dbm_remove):
* database.c (berkdb_get):
* database.c (berkdb_put):
* database.c (berkdb_remove):
* database.c (Fopen_database):
* device-gtk.c (gtk_init_device):
* device-msw.c (msprinter_init_device_internal):
* device-msw.c (msprinter_default_printer):
* device-msw.c (msprinter_init_device):
* device-msw.c (sync_printer_with_devmode):
* device-msw.c (Fmsprinter_select_settings):
* device-x.c (sanity_check_geometry_resource):
* device-x.c (Dynarr_add_validified_lisp_string):
* device-x.c (x_init_device):
* device-x.c (Fx_put_resource):
* device-x.c (Fx_valid_keysym_name_p):
* device-x.c (Fx_set_font_path):
* dialog-msw.c (push_lisp_string_as_unicode):
* dialog-msw.c (handle_directory_dialog_box):
* dialog-msw.c (handle_file_dialog_box):
* dialog-x.c (dbox_descriptor_to_widget_value):
* editfns.c (Fformat_time_string):
* editfns.c (Fencode_time):
* editfns.c (Fset_time_zone_rule):
* emacs.c (make_argc_argv):
* emacs.c (Fdump_emacs):
* emodules.c (emodules_load):
* eval.c:
* eval.c (maybe_signal_error_1):
* event-msw.c (Fdde_alloc_advise_item):
* event-msw.c (mswindows_dde_callback):
* event-msw.c (mswindows_wnd_proc):
* fileio.c (report_error_with_errno):
* fileio.c (Fsysnetunam):
* fileio.c (Fdo_auto_save):
* font-mgr.c (extract_fcapi_string):
* font-mgr.c (Ffc_config_app_font_add_file):
* font-mgr.c (Ffc_config_app_font_add_dir):
* font-mgr.c (Ffc_config_filename):
* frame-gtk.c (gtk_set_frame_text_value):
* frame-gtk.c (gtk_create_widgets):
* frame-msw.c (mswindows_init_frame_1):
* frame-msw.c (mswindows_set_title_from_ibyte):
* frame-msw.c (msprinter_init_frame_3):
* frame-x.c (x_set_frame_text_value):
* frame-x.c (x_set_frame_properties):
* frame-x.c (start_drag_internal_1):
* frame-x.c (x_cde_transfer_callback):
* frame-x.c (x_create_widgets):
* glyphs-eimage.c (my_jpeg_output_message):
* glyphs-eimage.c (jpeg_instantiate):
* glyphs-eimage.c (gif_instantiate):
* glyphs-eimage.c (png_instantiate):
* glyphs-eimage.c (tiff_instantiate):
* glyphs-gtk.c (xbm_instantiate_1):
* glyphs-gtk.c (gtk_xbm_instantiate):
* glyphs-gtk.c (gtk_xpm_instantiate):
* glyphs-gtk.c (gtk_xface_instantiate):
* glyphs-gtk.c (cursor_font_instantiate):
* glyphs-gtk.c (gtk_redisplay_widget):
* glyphs-gtk.c (gtk_widget_instantiate_1):
* glyphs-gtk.c (gtk_add_tab_item):
* glyphs-msw.c (mswindows_xpm_instantiate):
* glyphs-msw.c (bmp_instantiate):
* glyphs-msw.c (mswindows_resource_instantiate):
* glyphs-msw.c (xbm_instantiate_1):
* glyphs-msw.c (mswindows_xbm_instantiate):
* glyphs-msw.c (mswindows_xface_instantiate):
* glyphs-msw.c (mswindows_redisplay_widget):
* glyphs-msw.c (mswindows_widget_instantiate):
* glyphs-msw.c (add_tree_item):
* glyphs-msw.c (add_tab_item):
* glyphs-msw.c (mswindows_combo_box_instantiate):
* glyphs-msw.c (mswindows_widget_query_string_geometry):
* glyphs-x.c (x_locate_pixmap_file):
* glyphs-x.c (xbm_instantiate_1):
* glyphs-x.c (x_xbm_instantiate):
* glyphs-x.c (extract_xpm_color_names):
* glyphs-x.c (x_xpm_instantiate):
* glyphs-x.c (x_xface_instantiate):
* glyphs-x.c (autodetect_instantiate):
* glyphs-x.c (safe_XLoadFont):
* glyphs-x.c (cursor_font_instantiate):
* glyphs-x.c (x_redisplay_widget):
* glyphs-x.c (Fchange_subwindow_property):
* glyphs-x.c (x_widget_instantiate):
* glyphs-x.c (x_tab_control_redisplay):
* glyphs.c (pixmap_to_lisp_data):
* gui-x.c (menu_separator_style_and_to_external):
* gui-x.c (add_accel_and_to_external):
* gui-x.c (button_item_to_widget_value):
* hpplay.c (player_error_internal):
* hpplay.c (play_sound_file):
* hpplay.c (play_sound_data):
* intl.c (Fset_current_locale):
* lisp.h:
* menubar-gtk.c (gtk_xemacs_set_accel_keys):
* menubar-msw.c (populate_menu_add_item):
* menubar-msw.c (populate_or_checksum_helper):
* menubar-x.c (menu_item_descriptor_to_widget_value_1):
* nt.c (init_user_info):
* nt.c (get_long_basename):
* nt.c (nt_get_resource):
* nt.c (init_mswindows_environment):
* nt.c (get_cached_volume_information):
* nt.c (mswindows_readdir):
* nt.c (read_unc_volume):
* nt.c (mswindows_stat):
* nt.c (mswindows_getdcwd):
* nt.c (mswindows_executable_type):
* nt.c (Fmswindows_short_file_name):
* ntplay.c (nt_play_sound_file):
* objects-gtk.c:
* objects-gtk.c (gtk_valid_color_name_p):
* objects-gtk.c (gtk_initialize_font_instance):
* objects-gtk.c (gtk_font_list):
* objects-msw.c (font_enum_callback_2):
* objects-msw.c (parse_font_spec):
* objects-x.c (x_parse_nearest_color):
* objects-x.c (x_valid_color_name_p):
* objects-x.c (x_initialize_font_instance):
* objects-x.c (x_font_instance_truename):
* objects-x.c (x_font_list):
* objects-xlike-inc.c (XFUN):
* objects-xlike-inc.c (xft_find_charset_font):
* process-nt.c (mswindows_report_winsock_error):
* process-nt.c (nt_create_process):
* process-nt.c (get_internet_address):
* process-nt.c (nt_open_network_stream):
* process-unix.c:
* process-unix.c (allocate_pty):
* process-unix.c (get_internet_address):
* process-unix.c (unix_canonicalize_host_name):
* process-unix.c (unix_open_network_stream):
* realpath.c:
* select-common.h (lisp_data_to_selection_data):
* select-gtk.c (symbol_to_gtk_atom):
* select-gtk.c (atom_to_symbol):
* select-msw.c (symbol_to_ms_cf):
* select-msw.c (mswindows_register_selection_data_type):
* select-x.c (symbol_to_x_atom):
* select-x.c (x_atom_to_symbol):
* select-x.c (hack_motif_clipboard_selection):
* select-x.c (Fx_store_cutbuffer_internal):
* sound.c (Fplay_sound_file):
* sound.c (Fplay_sound):
* sound.h (sound_perror):
* sysdep.c:
* sysdep.c (qxe_allocating_getcwd):
* sysdep.c (qxe_execve):
* sysdep.c (copy_in_passwd):
* sysdep.c (qxe_getpwnam):
* sysdep.c (qxe_ctime):
* sysdll.c (dll_open):
* sysdll.c (dll_function):
* sysdll.c (dll_variable):
* sysdll.c (search_linked_libs):
* sysdll.c (dll_error):
* sysfile.h:
* sysfile.h (PATHNAME_CONVERT_OUT_TSTR):
* sysfile.h (PATHNAME_CONVERT_OUT_UTF_8):
* sysfile.h (PATHNAME_CONVERT_OUT):
* sysfile.h (LISP_PATHNAME_CONVERT_OUT):
* syswindows.h (ITEXT_TO_TSTR):
* syswindows.h (LOCAL_FILE_FORMAT_TO_TSTR):
* syswindows.h (TSTR_TO_LOCAL_FILE_FORMAT):
* syswindows.h (LOCAL_FILE_FORMAT_TO_INTERNAL_MSWIN):
* syswindows.h (LISP_LOCAL_FILE_FORMAT_MAYBE_URL_TO_TSTR):
* text.h:
* text.h (eicpy_ext_len):
* text.h (enum new_dfc_src_type):
* text.h (EXTERNAL_TO_ITEXT):
* text.h (GET_STRERROR):
* tooltalk.c (check_status):
* tooltalk.c (Fadd_tooltalk_message_arg):
* tooltalk.c (Fadd_tooltalk_pattern_attribute):
* tooltalk.c (Fadd_tooltalk_pattern_arg):
* win32.c (tstr_to_local_file_format):
* win32.c (mswindows_lisp_error_1):
* win32.c (mswindows_report_process_error):
* win32.c (Fmswindows_shell_execute):
* win32.c (mswindows_read_link_1):
Changes involving external/internal format conversion,
mostly code cleanup and renaming.
1. Eliminate the previous macros like LISP_STRING_TO_EXTERNAL
that stored its result in a parameter. The new version of
LISP_STRING_TO_EXTERNAL returns its result through the
return value, same as the previous NEW_LISP_STRING_TO_EXTERNAL.
Use the new-style macros throughout the code.
2. Rename C_STRING_TO_EXTERNAL and friends to ITEXT_TO_EXTERNAL,
in keeping with overall naming rationalization involving
Itext and related types.
Macros involved in previous two:
EXTERNAL_TO_C_STRING -> EXTERNAL_TO_ITEXT
EXTERNAL_TO_C_STRING_MALLOC -> EXTERNAL_TO_ITEXT_MALLOC
SIZED_EXTERNAL_TO_C_STRING -> SIZED_EXTERNAL_TO_ITEXT
SIZED_EXTERNAL_TO_C_STRING_MALLOC -> SIZED_EXTERNAL_TO_ITEXT_MALLOC
C_STRING_TO_EXTERNAL -> ITEXT_TO_EXTERNAL
C_STRING_TO_EXTERNAL_MALLOC -> ITEXT_TO_EXTERNAL_MALLOC
LISP_STRING_TO_EXTERNAL
LISP_STRING_TO_EXTERNAL_MALLOC
LISP_STRING_TO_TSTR
C_STRING_TO_TSTR -> ITEXT_TO_TSTR
TSTR_TO_C_STRING -> TSTR_TO_ITEXT
The following four still return their values through parameters,
since they have more than one value to return:
C_STRING_TO_SIZED_EXTERNAL -> ITEXT_TO_SIZED_EXTERNAL
LISP_STRING_TO_SIZED_EXTERNAL
C_STRING_TO_SIZED_EXTERNAL_MALLOC -> ITEXT_TO_SIZED_EXTERNAL_MALLOC
LISP_STRING_TO_SIZED_EXTERNAL_MALLOC
Sometimes additional casts had to be inserted, since the old
macros played strange games and completely defeated the type system
of the store params.
3. Rewrite many places where direct calls to TO_EXTERNAL_FORMAT
occurred with calls to one of the convenience macros listed above,
or to make_extstring().
4. Eliminate SIZED_C_STRING macros (they were hardly used, anyway)
and use a direct call to TO_EXTERNAL_FORMAT or TO_INTERNAL_FORMAT.
4. Use LISP_PATHNAME_CONVERT_OUT in many places instead of something
like LISP_STRING_TO_EXTERNAL(..., Qfile_name).
5. Eliminate some temporary variables that are no longer necessary
now that we return a value rather than storing it into a variable.
6. Some Mule-izing in database.c.
7. Error functions:
-- A bit of code cleanup in maybe_signal_error_1.
-- Eliminate report_file_type_error; it's just an alias for
signal_error_2 with params in a different order.
-- Fix some places in the hostname-handling code that directly
inserted externally-retrieved error strings into the
supposed ASCII "reason" param instead of doing the right thing
and sticking text descriptive of what was going on in "reason"
and putting the external message in a frob.
8. Use Ascbyte instead of CIbyte in process-unix.c and maybe one
or two other places.
9. Some code cleanup in copy_in_passwd() in sysdep.c.
10. Fix a real bug due to accidental variable shadowing in
tstr_to_local_file_format() in win32.c.
author | Ben Wing <ben@xemacs.org> |
---|---|
date | Fri, 05 Feb 2010 11:02:24 -0600 |
parents | 4bbda1c11a7b |
children | 308d34e9f07d |
rev | line source |
---|---|
428 | 1 ;;; lisp.el --- Lisp editing commands for XEmacs |
2 | |
3 ;; Copyright (C) 1985, 1986, 1994, 1997 Free Software Foundation, Inc. | |
4 | |
5 ;; Maintainer: FSF | |
6 ;; Keywords: lisp, languages, dumped | |
7 | |
8 ;; This file is part of XEmacs. | |
9 | |
10 ;; XEmacs is free software; you can redistribute it and/or modify it | |
11 ;; under the terms of the GNU General Public License as published by | |
12 ;; the Free Software Foundation; either version 2, or (at your option) | |
13 ;; any later version. | |
14 | |
15 ;; XEmacs is distributed in the hope that it will be useful, but | |
16 ;; WITHOUT ANY WARRANTY; without even the implied warranty of | |
17 ;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU | |
18 ;; General Public License for more details. | |
19 | |
20 ;; You should have received a copy of the GNU General Public License | |
21 ;; along with XEmacs; see the file COPYING. If not, write to the Free | |
22 ;; Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA | |
23 ;; 02111-1307, USA. | |
24 | |
25 ;;; Synched up with: Emacs/Mule zeta. | |
26 | |
27 ;;; Commentary: | |
28 | |
29 ;; This file is dumped with XEmacs. | |
30 | |
31 ;; Lisp editing commands to go with Lisp major mode. | |
32 | |
33 ;; 06/11/1997 - Use char-(after|before) instead of | |
34 ;; (following|preceding)-char. -slb | |
35 | |
36 ;;; Code: | |
37 | |
38 ;; Note that this variable is used by non-lisp modes too. | |
39 (defcustom defun-prompt-regexp nil | |
40 "*Non-nil => regexp to ignore, before the character that starts a defun. | |
41 This is only necessary if the opening paren or brace is not in column 0. | |
42 See `beginning-of-defun'." | |
43 :type '(choice (const :tag "none" nil) | |
44 regexp) | |
45 :group 'lisp) | |
46 | |
47 (make-variable-buffer-local 'defun-prompt-regexp) | |
48 | |
49 (defcustom parens-require-spaces t | |
50 "Non-nil => `insert-parentheses' should insert whitespace as needed." | |
51 :type 'boolean | |
52 :group 'editing-basics | |
53 :group 'lisp) | |
54 | |
4726
4bbda1c11a7b
Improve argument names and update docstrings.
Stephen J. Turnbull <stephen@xemacs.org>
parents:
4724
diff
changeset
|
55 (defun forward-sexp (&optional count) |
428 | 56 "Move forward across one balanced expression (sexp). |
4726
4bbda1c11a7b
Improve argument names and update docstrings.
Stephen J. Turnbull <stephen@xemacs.org>
parents:
4724
diff
changeset
|
57 With non-nil COUNT, do it that many times. Negative COUNT means |
4bbda1c11a7b
Improve argument names and update docstrings.
Stephen J. Turnbull <stephen@xemacs.org>
parents:
4724
diff
changeset
|
58 move backward across -COUNT balanced expressions." |
428 | 59 ;; XEmacs change (for zmacs regions) |
60 (interactive "_p") | |
4726
4bbda1c11a7b
Improve argument names and update docstrings.
Stephen J. Turnbull <stephen@xemacs.org>
parents:
4724
diff
changeset
|
61 (or count (setq count 1)) |
428 | 62 ;; XEmacs: evil hack! The other half of the evil hack below. |
4726
4bbda1c11a7b
Improve argument names and update docstrings.
Stephen J. Turnbull <stephen@xemacs.org>
parents:
4724
diff
changeset
|
63 (if (and (> count 0) (looking-at "#s(\\|#r[uU]\\{0,1\\}\"")) |
3543 | 64 (goto-char (1+ (- (point) (- (match-end 0) (match-beginning 0)))))) |
4726
4bbda1c11a7b
Improve argument names and update docstrings.
Stephen J. Turnbull <stephen@xemacs.org>
parents:
4724
diff
changeset
|
65 (goto-char (or (scan-sexps (point) count) (buffer-end count))) |
4bbda1c11a7b
Improve argument names and update docstrings.
Stephen J. Turnbull <stephen@xemacs.org>
parents:
4724
diff
changeset
|
66 (when (< count 0) |
3543 | 67 (backward-prefix-chars) |
68 ;; XEmacs: evil hack! Skip back over #[sr] so that structures and raw | |
69 ;; strings are read properly. the current cheesified syntax tables just | |
70 ;; aren't up to this. | |
71 (let* ((diff (- (point) (point-min))) | |
72 (subject (buffer-substring (- (point) (min diff 3)) | |
73 (1+ (point)))) | |
74 (matched (string-match "#s(\\|#r[uU]\\{0,1\\}\"" subject))) | |
75 (if matched | |
76 (goto-char (1+ (- (point) (- (length subject) matched)))))))) | |
428 | 77 |
4726
4bbda1c11a7b
Improve argument names and update docstrings.
Stephen J. Turnbull <stephen@xemacs.org>
parents:
4724
diff
changeset
|
78 (defun backward-sexp (&optional count) |
428 | 79 "Move backward across one balanced expression (sexp). |
4726
4bbda1c11a7b
Improve argument names and update docstrings.
Stephen J. Turnbull <stephen@xemacs.org>
parents:
4724
diff
changeset
|
80 With non-nil COUNT, do it that many times. Negative COUNT means |
4bbda1c11a7b
Improve argument names and update docstrings.
Stephen J. Turnbull <stephen@xemacs.org>
parents:
4724
diff
changeset
|
81 move forward across -COUNT balanced expressions." |
428 | 82 ;; XEmacs change (for zmacs regions) |
83 (interactive "_p") | |
4726
4bbda1c11a7b
Improve argument names and update docstrings.
Stephen J. Turnbull <stephen@xemacs.org>
parents:
4724
diff
changeset
|
84 (forward-sexp (- (or count 1)))) |
428 | 85 |
4726
4bbda1c11a7b
Improve argument names and update docstrings.
Stephen J. Turnbull <stephen@xemacs.org>
parents:
4724
diff
changeset
|
86 (defun mark-sexp (&optional count) |
4bbda1c11a7b
Improve argument names and update docstrings.
Stephen J. Turnbull <stephen@xemacs.org>
parents:
4724
diff
changeset
|
87 "Set mark COUNT sexps from point. |
428 | 88 The place mark goes is the same place \\[forward-sexp] would |
89 move to with the same argument. | |
90 Repeat this command to mark more sexps in the same direction." | |
91 (interactive "p") | |
4726
4bbda1c11a7b
Improve argument names and update docstrings.
Stephen J. Turnbull <stephen@xemacs.org>
parents:
4724
diff
changeset
|
92 (mark-something 'mark-sexp 'forward-sexp (or count 1))) |
428 | 93 |
4726
4bbda1c11a7b
Improve argument names and update docstrings.
Stephen J. Turnbull <stephen@xemacs.org>
parents:
4724
diff
changeset
|
94 (defun forward-list (&optional count) |
428 | 95 "Move forward across one balanced group of parentheses. |
4726
4bbda1c11a7b
Improve argument names and update docstrings.
Stephen J. Turnbull <stephen@xemacs.org>
parents:
4724
diff
changeset
|
96 With non-nil COUNT, do it that many times. |
4bbda1c11a7b
Improve argument names and update docstrings.
Stephen J. Turnbull <stephen@xemacs.org>
parents:
4724
diff
changeset
|
97 Negative COUNT means move backward across -COUNT groups of parentheses." |
428 | 98 ;; XEmacs change |
99 (interactive "_p") | |
4726
4bbda1c11a7b
Improve argument names and update docstrings.
Stephen J. Turnbull <stephen@xemacs.org>
parents:
4724
diff
changeset
|
100 (goto-char (or (scan-lists (point) (or count 1) 0) |
4bbda1c11a7b
Improve argument names and update docstrings.
Stephen J. Turnbull <stephen@xemacs.org>
parents:
4724
diff
changeset
|
101 (buffer-end (or count 1))))) |
428 | 102 |
4726
4bbda1c11a7b
Improve argument names and update docstrings.
Stephen J. Turnbull <stephen@xemacs.org>
parents:
4724
diff
changeset
|
103 (defun backward-list (&optional count) |
428 | 104 "Move backward across one balanced group of parentheses. |
4726
4bbda1c11a7b
Improve argument names and update docstrings.
Stephen J. Turnbull <stephen@xemacs.org>
parents:
4724
diff
changeset
|
105 With non-nil COUNT, do it that many times. |
4bbda1c11a7b
Improve argument names and update docstrings.
Stephen J. Turnbull <stephen@xemacs.org>
parents:
4724
diff
changeset
|
106 Negative COUNT means move forward across -COUNT groups of parentheses." |
428 | 107 ;; XEmacs change (for zmacs regions) |
108 (interactive "_p") | |
4726
4bbda1c11a7b
Improve argument names and update docstrings.
Stephen J. Turnbull <stephen@xemacs.org>
parents:
4724
diff
changeset
|
109 (forward-list (- (or count 1)))) |
428 | 110 |
4726
4bbda1c11a7b
Improve argument names and update docstrings.
Stephen J. Turnbull <stephen@xemacs.org>
parents:
4724
diff
changeset
|
111 (defun down-list (&optional count) |
428 | 112 "Move forward down one level of parentheses. |
4726
4bbda1c11a7b
Improve argument names and update docstrings.
Stephen J. Turnbull <stephen@xemacs.org>
parents:
4724
diff
changeset
|
113 With non-nil COUNT, do this that many times. |
4bbda1c11a7b
Improve argument names and update docstrings.
Stephen J. Turnbull <stephen@xemacs.org>
parents:
4724
diff
changeset
|
114 A negative COUNT means move backward but still go down a level." |
428 | 115 ;; XEmacs change (for zmacs regions) |
116 (interactive "_p") | |
4726
4bbda1c11a7b
Improve argument names and update docstrings.
Stephen J. Turnbull <stephen@xemacs.org>
parents:
4724
diff
changeset
|
117 (or count (setq count 1)) |
4bbda1c11a7b
Improve argument names and update docstrings.
Stephen J. Turnbull <stephen@xemacs.org>
parents:
4724
diff
changeset
|
118 (let ((inc (if (> count 0) 1 -1))) |
4bbda1c11a7b
Improve argument names and update docstrings.
Stephen J. Turnbull <stephen@xemacs.org>
parents:
4724
diff
changeset
|
119 (while (/= count 0) |
4bbda1c11a7b
Improve argument names and update docstrings.
Stephen J. Turnbull <stephen@xemacs.org>
parents:
4724
diff
changeset
|
120 (goto-char (or (scan-lists (point) inc -1) (buffer-end count))) |
4bbda1c11a7b
Improve argument names and update docstrings.
Stephen J. Turnbull <stephen@xemacs.org>
parents:
4724
diff
changeset
|
121 (setq count (- count inc))))) |
428 | 122 |
4726
4bbda1c11a7b
Improve argument names and update docstrings.
Stephen J. Turnbull <stephen@xemacs.org>
parents:
4724
diff
changeset
|
123 (defun backward-up-list (&optional count) |
428 | 124 "Move backward out of one level of parentheses. |
4726
4bbda1c11a7b
Improve argument names and update docstrings.
Stephen J. Turnbull <stephen@xemacs.org>
parents:
4724
diff
changeset
|
125 With COUNT, do this that many times. |
4bbda1c11a7b
Improve argument names and update docstrings.
Stephen J. Turnbull <stephen@xemacs.org>
parents:
4724
diff
changeset
|
126 A negative COUNT means move forward but still to a less deep spot." |
428 | 127 (interactive "_p") |
4726
4bbda1c11a7b
Improve argument names and update docstrings.
Stephen J. Turnbull <stephen@xemacs.org>
parents:
4724
diff
changeset
|
128 (up-list (- (or count 1)))) |
428 | 129 |
4726
4bbda1c11a7b
Improve argument names and update docstrings.
Stephen J. Turnbull <stephen@xemacs.org>
parents:
4724
diff
changeset
|
130 (defun up-list (&optional count) |
428 | 131 "Move forward out of one level of parentheses. |
4726
4bbda1c11a7b
Improve argument names and update docstrings.
Stephen J. Turnbull <stephen@xemacs.org>
parents:
4724
diff
changeset
|
132 With non-nil COUNT, do this that many times. |
4bbda1c11a7b
Improve argument names and update docstrings.
Stephen J. Turnbull <stephen@xemacs.org>
parents:
4724
diff
changeset
|
133 A negative COUNT means move backward but still to a less deep spot. |
428 | 134 In Lisp programs, an argument is required." |
135 ;; XEmacs change (for zmacs regions) | |
136 (interactive "_p") | |
4726
4bbda1c11a7b
Improve argument names and update docstrings.
Stephen J. Turnbull <stephen@xemacs.org>
parents:
4724
diff
changeset
|
137 (or count (setq count 1)) |
4bbda1c11a7b
Improve argument names and update docstrings.
Stephen J. Turnbull <stephen@xemacs.org>
parents:
4724
diff
changeset
|
138 (let ((inc (if (> count 0) 1 -1))) |
4bbda1c11a7b
Improve argument names and update docstrings.
Stephen J. Turnbull <stephen@xemacs.org>
parents:
4724
diff
changeset
|
139 (while (/= count 0) |
4bbda1c11a7b
Improve argument names and update docstrings.
Stephen J. Turnbull <stephen@xemacs.org>
parents:
4724
diff
changeset
|
140 (goto-char (or (scan-lists (point) inc 1) (buffer-end count))) |
4bbda1c11a7b
Improve argument names and update docstrings.
Stephen J. Turnbull <stephen@xemacs.org>
parents:
4724
diff
changeset
|
141 (setq count (- count inc))))) |
428 | 142 |
4726
4bbda1c11a7b
Improve argument names and update docstrings.
Stephen J. Turnbull <stephen@xemacs.org>
parents:
4724
diff
changeset
|
143 (defun kill-sexp (&optional count) |
428 | 144 "Kill the sexp (balanced expression) following the cursor. |
4726
4bbda1c11a7b
Improve argument names and update docstrings.
Stephen J. Turnbull <stephen@xemacs.org>
parents:
4724
diff
changeset
|
145 With non-nil COUNT, kill that many sexps after the cursor. |
4bbda1c11a7b
Improve argument names and update docstrings.
Stephen J. Turnbull <stephen@xemacs.org>
parents:
4724
diff
changeset
|
146 Negative COUNT means kill -COUNT sexps before the cursor." |
428 | 147 (interactive "p") |
148 (let ((opoint (point))) | |
4726
4bbda1c11a7b
Improve argument names and update docstrings.
Stephen J. Turnbull <stephen@xemacs.org>
parents:
4724
diff
changeset
|
149 (forward-sexp (or count 1)) |
428 | 150 (kill-region opoint (point)))) |
151 | |
4726
4bbda1c11a7b
Improve argument names and update docstrings.
Stephen J. Turnbull <stephen@xemacs.org>
parents:
4724
diff
changeset
|
152 (defun backward-kill-sexp (&optional count) |
428 | 153 "Kill the sexp (balanced expression) preceding the cursor. |
4726
4bbda1c11a7b
Improve argument names and update docstrings.
Stephen J. Turnbull <stephen@xemacs.org>
parents:
4724
diff
changeset
|
154 With non-nil COUNT, kill that many sexps before the cursor. |
4bbda1c11a7b
Improve argument names and update docstrings.
Stephen J. Turnbull <stephen@xemacs.org>
parents:
4724
diff
changeset
|
155 Negative COUNT means kill -COUNT sexps after the cursor." |
428 | 156 (interactive "p") |
4726
4bbda1c11a7b
Improve argument names and update docstrings.
Stephen J. Turnbull <stephen@xemacs.org>
parents:
4724
diff
changeset
|
157 (kill-sexp (- (or count 1)))) |
428 | 158 |
4696
ecc468b62551
funcall beginning-of-defun-function arg
andreas.roehler@online.de
parents:
3543
diff
changeset
|
159 |
ecc468b62551
funcall beginning-of-defun-function arg
andreas.roehler@online.de
parents:
3543
diff
changeset
|
160 ;; derived stuff from GNU Emacs |
ecc468b62551
funcall beginning-of-defun-function arg
andreas.roehler@online.de
parents:
3543
diff
changeset
|
161 (defvar beginning-of-defun-function nil |
4724
7eef89a3d41f
Improve docstrings of defun movement functions.
Stephen J. Turnbull <stephen@xemacs.org>
parents:
4712
diff
changeset
|
162 "If non-nil, this function will be called by `beginning-of-defun-raw'. |
7eef89a3d41f
Improve docstrings of defun movement functions.
Stephen J. Turnbull <stephen@xemacs.org>
parents:
4712
diff
changeset
|
163 It will be called with one argument, which is a repetition count. |
7eef89a3d41f
Improve docstrings of defun movement functions.
Stephen J. Turnbull <stephen@xemacs.org>
parents:
4712
diff
changeset
|
164 It provides an alternative algorithm to find the beginning of the current |
7eef89a3d41f
Improve docstrings of defun movement functions.
Stephen J. Turnbull <stephen@xemacs.org>
parents:
4712
diff
changeset
|
165 defun instead of using the standard one implemented by `beginning-of-defun'. |
7eef89a3d41f
Improve docstrings of defun movement functions.
Stephen J. Turnbull <stephen@xemacs.org>
parents:
4712
diff
changeset
|
166 See also `defun-prompt-regexp' for minor tweaks.") |
4712
a46d7513a364
`beginning-of-defun-function', `end-of-defun-function'
Andreas Roehler <andreas.roehler@online.de>
parents:
4705
diff
changeset
|
167 (make-variable-buffer-local 'beginning-of-defun-function) |
4696
ecc468b62551
funcall beginning-of-defun-function arg
andreas.roehler@online.de
parents:
3543
diff
changeset
|
168 |
ecc468b62551
funcall beginning-of-defun-function arg
andreas.roehler@online.de
parents:
3543
diff
changeset
|
169 (defvar end-of-defun-function nil |
4724
7eef89a3d41f
Improve docstrings of defun movement functions.
Stephen J. Turnbull <stephen@xemacs.org>
parents:
4712
diff
changeset
|
170 "If non-nil, this function will be called by `end-of-defun'. |
7eef89a3d41f
Improve docstrings of defun movement functions.
Stephen J. Turnbull <stephen@xemacs.org>
parents:
4712
diff
changeset
|
171 It will be called with no arguments. \(Repetition is implemented in |
7eef89a3d41f
Improve docstrings of defun movement functions.
Stephen J. Turnbull <stephen@xemacs.org>
parents:
4712
diff
changeset
|
172 `end-of-defun' by calling this function that many times.) |
7eef89a3d41f
Improve docstrings of defun movement functions.
Stephen J. Turnbull <stephen@xemacs.org>
parents:
4712
diff
changeset
|
173 This function provides an alternative algorithm to find the end |
7eef89a3d41f
Improve docstrings of defun movement functions.
Stephen J. Turnbull <stephen@xemacs.org>
parents:
4712
diff
changeset
|
174 of the current defun instead of using the standard one implemented by |
7eef89a3d41f
Improve docstrings of defun movement functions.
Stephen J. Turnbull <stephen@xemacs.org>
parents:
4712
diff
changeset
|
175 `end-of-defun'. |
7eef89a3d41f
Improve docstrings of defun movement functions.
Stephen J. Turnbull <stephen@xemacs.org>
parents:
4712
diff
changeset
|
176 ") |
4712
a46d7513a364
`beginning-of-defun-function', `end-of-defun-function'
Andreas Roehler <andreas.roehler@online.de>
parents:
4705
diff
changeset
|
177 (make-variable-buffer-local 'end-of-defun-function) |
4696
ecc468b62551
funcall beginning-of-defun-function arg
andreas.roehler@online.de
parents:
3543
diff
changeset
|
178 |
4726
4bbda1c11a7b
Improve argument names and update docstrings.
Stephen J. Turnbull <stephen@xemacs.org>
parents:
4724
diff
changeset
|
179 (defun beginning-of-defun (&optional count) |
4724
7eef89a3d41f
Improve docstrings of defun movement functions.
Stephen J. Turnbull <stephen@xemacs.org>
parents:
4712
diff
changeset
|
180 "Move backward to the beginning of the current defun. |
4726
4bbda1c11a7b
Improve argument names and update docstrings.
Stephen J. Turnbull <stephen@xemacs.org>
parents:
4724
diff
changeset
|
181 With COUNT, do it that many times. Negative COUNT |
4bbda1c11a7b
Improve argument names and update docstrings.
Stephen J. Turnbull <stephen@xemacs.org>
parents:
4724
diff
changeset
|
182 means move forward to -COUNTth following beginning of defun. |
428 | 183 Returns t unless search stops due to beginning or end of buffer. |
184 | |
4724
7eef89a3d41f
Improve docstrings of defun movement functions.
Stephen J. Turnbull <stephen@xemacs.org>
parents:
4712
diff
changeset
|
185 In the default implementation provided by `beginning-of-defun-raw', |
7eef89a3d41f
Improve docstrings of defun movement functions.
Stephen J. Turnbull <stephen@xemacs.org>
parents:
4712
diff
changeset
|
186 a defun starts at a char with open-parenthesis syntax at the beginning |
7eef89a3d41f
Improve docstrings of defun movement functions.
Stephen J. Turnbull <stephen@xemacs.org>
parents:
4712
diff
changeset
|
187 of a line. If `defun-prompt-regexp' is non-nil, then a string which |
7eef89a3d41f
Improve docstrings of defun movement functions.
Stephen J. Turnbull <stephen@xemacs.org>
parents:
4712
diff
changeset
|
188 matches that regexp may precede the open-parenthesis. Alternatively, |
7eef89a3d41f
Improve docstrings of defun movement functions.
Stephen J. Turnbull <stephen@xemacs.org>
parents:
4712
diff
changeset
|
189 if `beginning-of-defun-function' is non-nil, that function is called, |
7eef89a3d41f
Improve docstrings of defun movement functions.
Stephen J. Turnbull <stephen@xemacs.org>
parents:
4712
diff
changeset
|
190 and none of the default processing is done. |
7eef89a3d41f
Improve docstrings of defun movement functions.
Stephen J. Turnbull <stephen@xemacs.org>
parents:
4712
diff
changeset
|
191 |
7eef89a3d41f
Improve docstrings of defun movement functions.
Stephen J. Turnbull <stephen@xemacs.org>
parents:
4712
diff
changeset
|
192 If the beginning of defun function returns t, point moves to the |
7eef89a3d41f
Improve docstrings of defun movement functions.
Stephen J. Turnbull <stephen@xemacs.org>
parents:
4712
diff
changeset
|
193 beginning of the line containing the beginning of defun." |
428 | 194 ;; XEmacs change (for zmacs regions) |
195 (interactive "_p") | |
4726
4bbda1c11a7b
Improve argument names and update docstrings.
Stephen J. Turnbull <stephen@xemacs.org>
parents:
4724
diff
changeset
|
196 (and (beginning-of-defun-raw count) |
428 | 197 (progn (beginning-of-line) t))) |
198 | |
4726
4bbda1c11a7b
Improve argument names and update docstrings.
Stephen J. Turnbull <stephen@xemacs.org>
parents:
4724
diff
changeset
|
199 (defun beginning-of-defun-raw (&optional count) |
428 | 200 "Move point to the character that starts a defun. |
201 This is identical to beginning-of-defun, except that point does not move | |
202 to the beginning of the line when `defun-prompt-regexp' is non-nil." | |
203 (interactive "p") | |
4726
4bbda1c11a7b
Improve argument names and update docstrings.
Stephen J. Turnbull <stephen@xemacs.org>
parents:
4724
diff
changeset
|
204 (unless count (setq count 1)) |
4705
7b90173970ad
Unbreak `beginning-of-defun'.
Mike Sperber <sperber@deinprogramm.de>
parents:
4696
diff
changeset
|
205 (if beginning-of-defun-function |
4726
4bbda1c11a7b
Improve argument names and update docstrings.
Stephen J. Turnbull <stephen@xemacs.org>
parents:
4724
diff
changeset
|
206 (funcall beginning-of-defun-function count) |
4bbda1c11a7b
Improve argument names and update docstrings.
Stephen J. Turnbull <stephen@xemacs.org>
parents:
4724
diff
changeset
|
207 (and (< count 0) (not (eobp)) (forward-char 1)) |
4705
7b90173970ad
Unbreak `beginning-of-defun'.
Mike Sperber <sperber@deinprogramm.de>
parents:
4696
diff
changeset
|
208 (and |
7b90173970ad
Unbreak `beginning-of-defun'.
Mike Sperber <sperber@deinprogramm.de>
parents:
4696
diff
changeset
|
209 (re-search-backward (if defun-prompt-regexp |
7b90173970ad
Unbreak `beginning-of-defun'.
Mike Sperber <sperber@deinprogramm.de>
parents:
4696
diff
changeset
|
210 (concat "^\\s(\\|" |
7b90173970ad
Unbreak `beginning-of-defun'.
Mike Sperber <sperber@deinprogramm.de>
parents:
4696
diff
changeset
|
211 "\\(" defun-prompt-regexp "\\)\\s(") |
7b90173970ad
Unbreak `beginning-of-defun'.
Mike Sperber <sperber@deinprogramm.de>
parents:
4696
diff
changeset
|
212 "^\\s(") |
4726
4bbda1c11a7b
Improve argument names and update docstrings.
Stephen J. Turnbull <stephen@xemacs.org>
parents:
4724
diff
changeset
|
213 nil 'move count) |
4705
7b90173970ad
Unbreak `beginning-of-defun'.
Mike Sperber <sperber@deinprogramm.de>
parents:
4696
diff
changeset
|
214 (progn (goto-char (1- (match-end 0)))) t))) |
428 | 215 |
216 ;; XEmacs change (optional buffer parameter) | |
4726
4bbda1c11a7b
Improve argument names and update docstrings.
Stephen J. Turnbull <stephen@xemacs.org>
parents:
4724
diff
changeset
|
217 (defun buffer-end (direction &optional buffer) |
4bbda1c11a7b
Improve argument names and update docstrings.
Stephen J. Turnbull <stephen@xemacs.org>
parents:
4724
diff
changeset
|
218 "Return `point-max' of BUFFER if DIRECTION > 0, else return `point-min'. |
428 | 219 BUFFER defaults to the current buffer if omitted." |
4726
4bbda1c11a7b
Improve argument names and update docstrings.
Stephen J. Turnbull <stephen@xemacs.org>
parents:
4724
diff
changeset
|
220 (if (> direction 0) (point-max buffer) (point-min buffer))) |
428 | 221 |
4726
4bbda1c11a7b
Improve argument names and update docstrings.
Stephen J. Turnbull <stephen@xemacs.org>
parents:
4724
diff
changeset
|
222 (defun end-of-defun (&optional count) |
4bbda1c11a7b
Improve argument names and update docstrings.
Stephen J. Turnbull <stephen@xemacs.org>
parents:
4724
diff
changeset
|
223 "Move forward to next end of defun. |
4bbda1c11a7b
Improve argument names and update docstrings.
Stephen J. Turnbull <stephen@xemacs.org>
parents:
4724
diff
changeset
|
224 Non-nil COUNT means do it that many times (default is 1). |
4bbda1c11a7b
Improve argument names and update docstrings.
Stephen J. Turnbull <stephen@xemacs.org>
parents:
4724
diff
changeset
|
225 Negative COUNT means move back to -COUNTth preceding end of defun. |
428 | 226 |
4724
7eef89a3d41f
Improve docstrings of defun movement functions.
Stephen J. Turnbull <stephen@xemacs.org>
parents:
4712
diff
changeset
|
227 In the default implementation, the end of a defun is the end of the |
7eef89a3d41f
Improve docstrings of defun movement functions.
Stephen J. Turnbull <stephen@xemacs.org>
parents:
4712
diff
changeset
|
228 s-expression started at the character identified by `beginning-of-defun'. |
7eef89a3d41f
Improve docstrings of defun movement functions.
Stephen J. Turnbull <stephen@xemacs.org>
parents:
4712
diff
changeset
|
229 |
7eef89a3d41f
Improve docstrings of defun movement functions.
Stephen J. Turnbull <stephen@xemacs.org>
parents:
4712
diff
changeset
|
230 If `end-of-defun-function' is non-nil, none of the default processing is |
7eef89a3d41f
Improve docstrings of defun movement functions.
Stephen J. Turnbull <stephen@xemacs.org>
parents:
4712
diff
changeset
|
231 done. For a repetition count greater than 1, `end-of-defun-function' is |
7eef89a3d41f
Improve docstrings of defun movement functions.
Stephen J. Turnbull <stephen@xemacs.org>
parents:
4712
diff
changeset
|
232 called that many times. If the repetition count is less than 1, nothing |
7eef89a3d41f
Improve docstrings of defun movement functions.
Stephen J. Turnbull <stephen@xemacs.org>
parents:
4712
diff
changeset
|
233 is done. \(This is a bug.)" |
428 | 234 ;; XEmacs change (for zmacs regions) |
235 (interactive "_p") | |
4726
4bbda1c11a7b
Improve argument names and update docstrings.
Stephen J. Turnbull <stephen@xemacs.org>
parents:
4724
diff
changeset
|
236 (if (or (null count) (= count 0)) (setq count 1)) |
4696
ecc468b62551
funcall beginning-of-defun-function arg
andreas.roehler@online.de
parents:
3543
diff
changeset
|
237 (if end-of-defun-function |
4726
4bbda1c11a7b
Improve argument names and update docstrings.
Stephen J. Turnbull <stephen@xemacs.org>
parents:
4724
diff
changeset
|
238 (if (> count 0) |
4bbda1c11a7b
Improve argument names and update docstrings.
Stephen J. Turnbull <stephen@xemacs.org>
parents:
4724
diff
changeset
|
239 (dotimes (i count) |
4696
ecc468b62551
funcall beginning-of-defun-function arg
andreas.roehler@online.de
parents:
3543
diff
changeset
|
240 (funcall end-of-defun-function))) |
428 | 241 (let ((first t)) |
4726
4bbda1c11a7b
Improve argument names and update docstrings.
Stephen J. Turnbull <stephen@xemacs.org>
parents:
4724
diff
changeset
|
242 (while (and (> count 0) (< (point) (point-max))) |
428 | 243 (let ((pos (point))) ; XEmacs -- remove unused npos. |
244 (while (progn | |
245 (if (and first | |
246 (progn | |
247 (end-of-line 1) | |
248 (beginning-of-defun-raw 1))) | |
249 nil | |
446 | 250 (or (bobp) (backward-char 1)) |
428 | 251 (beginning-of-defun-raw -1)) |
252 (setq first nil) | |
253 (forward-list 1) | |
254 (skip-chars-forward " \t") | |
255 (if (looking-at "\\s<\\|\n") | |
256 (forward-line 1)) | |
257 (<= (point) pos)))) | |
4726
4bbda1c11a7b
Improve argument names and update docstrings.
Stephen J. Turnbull <stephen@xemacs.org>
parents:
4724
diff
changeset
|
258 (setq count (1- count))) |
4bbda1c11a7b
Improve argument names and update docstrings.
Stephen J. Turnbull <stephen@xemacs.org>
parents:
4724
diff
changeset
|
259 (while (< count 0) |
428 | 260 (let ((pos (point))) |
261 (beginning-of-defun-raw 1) | |
262 (forward-sexp 1) | |
263 (forward-line 1) | |
264 (if (>= (point) pos) | |
265 (if (beginning-of-defun-raw 2) | |
266 (progn | |
267 (forward-list 1) | |
268 (skip-chars-forward " \t") | |
269 (if (looking-at "\\s<\\|\n") | |
270 (forward-line 1))) | |
271 (goto-char (point-min))))) | |
4726
4bbda1c11a7b
Improve argument names and update docstrings.
Stephen J. Turnbull <stephen@xemacs.org>
parents:
4724
diff
changeset
|
272 (setq count (1+ count)))))) |
428 | 273 |
274 (defun mark-defun () | |
275 "Put mark at end of this defun, point at beginning. | |
276 The defun marked is the one that contains point or follows point." | |
277 (interactive) | |
278 (push-mark (point)) | |
279 (end-of-defun) | |
280 (push-mark (point) nil t) | |
281 (beginning-of-defun) | |
282 (re-search-backward "^\n" (- (point) 1) t)) | |
283 | |
284 (defun narrow-to-defun (&optional arg) | |
285 "Make text outside current defun invisible. | |
4726
4bbda1c11a7b
Improve argument names and update docstrings.
Stephen J. Turnbull <stephen@xemacs.org>
parents:
4724
diff
changeset
|
286 The defun visible is the one that contains point or follows point. |
4bbda1c11a7b
Improve argument names and update docstrings.
Stephen J. Turnbull <stephen@xemacs.org>
parents:
4724
diff
changeset
|
287 Optional ARG is currently ignored." |
428 | 288 (interactive) |
289 (save-excursion | |
290 (widen) | |
291 (end-of-defun) | |
292 (let ((end (point))) | |
293 (beginning-of-defun) | |
294 (narrow-to-region (point) end)))) | |
295 | |
4726
4bbda1c11a7b
Improve argument names and update docstrings.
Stephen J. Turnbull <stephen@xemacs.org>
parents:
4724
diff
changeset
|
296 (defun insert-parentheses (count) |
4bbda1c11a7b
Improve argument names and update docstrings.
Stephen J. Turnbull <stephen@xemacs.org>
parents:
4724
diff
changeset
|
297 "Enclose following COUNT sexps in parentheses. Leave point after open-paren. |
4bbda1c11a7b
Improve argument names and update docstrings.
Stephen J. Turnbull <stephen@xemacs.org>
parents:
4724
diff
changeset
|
298 A negative COUNT encloses the preceding -COUNT sexps instead. |
4bbda1c11a7b
Improve argument names and update docstrings.
Stephen J. Turnbull <stephen@xemacs.org>
parents:
4724
diff
changeset
|
299 COUNT defaults to zero: just insert `()' and leave point between. |
428 | 300 If `parens-require-spaces' is non-nil, this command also inserts a space |
301 before and after, depending on the surrounding characters." | |
302 (interactive "P") | |
4726
4bbda1c11a7b
Improve argument names and update docstrings.
Stephen J. Turnbull <stephen@xemacs.org>
parents:
4724
diff
changeset
|
303 (if count (setq count (prefix-numeric-value count)) |
4bbda1c11a7b
Improve argument names and update docstrings.
Stephen J. Turnbull <stephen@xemacs.org>
parents:
4724
diff
changeset
|
304 (setq count 0)) |
4bbda1c11a7b
Improve argument names and update docstrings.
Stephen J. Turnbull <stephen@xemacs.org>
parents:
4724
diff
changeset
|
305 (cond ((> count 0) (skip-chars-forward " \t")) |
4bbda1c11a7b
Improve argument names and update docstrings.
Stephen J. Turnbull <stephen@xemacs.org>
parents:
4724
diff
changeset
|
306 ((< count 0) (forward-sexp count) (setq count (- count)))) |
428 | 307 (and parens-require-spaces |
308 (not (bobp)) | |
309 (memq (char-syntax (char-before (point))) '(?w ?_ ?\) )) | |
310 (insert " ")) | |
311 (insert ?\() | |
312 (save-excursion | |
4726
4bbda1c11a7b
Improve argument names and update docstrings.
Stephen J. Turnbull <stephen@xemacs.org>
parents:
4724
diff
changeset
|
313 (or (eq count 0) (forward-sexp count)) |
428 | 314 (insert ?\)) |
315 (and parens-require-spaces | |
316 (not (eobp)) | |
317 (memq (char-syntax (char-after (point))) '(?w ?_ ?\( )) | |
318 (insert " ")))) | |
319 | |
320 (defun move-past-close-and-reindent () | |
321 "Move past next `)', delete indentation before it, then indent after it." | |
322 (interactive) | |
323 (up-list 1) | |
446 | 324 (backward-char 1) |
428 | 325 (while (save-excursion ; this is my contribution |
326 (let ((before-paren (point))) | |
327 (back-to-indentation) | |
328 (= (point) before-paren))) | |
329 (delete-indentation)) | |
330 (forward-char 1) | |
331 (newline-and-indent)) | |
332 | |
333 (defun lisp-complete-symbol () | |
334 "Perform completion on Lisp symbol preceding point. | |
335 Compare that symbol against the known Lisp symbols. | |
336 | |
337 The context determines which symbols are considered. | |
338 If the symbol starts just after an open-parenthesis, only symbols | |
339 with function definitions are considered. Otherwise, all symbols with | |
340 function definitions, values or properties are considered." | |
341 (interactive) | |
342 (let* ((end (point)) | |
343 (buffer-syntax (syntax-table)) | |
344 (beg (unwind-protect | |
345 (save-excursion | |
346 ;; XEmacs change | |
347 (if emacs-lisp-mode-syntax-table | |
348 (set-syntax-table emacs-lisp-mode-syntax-table)) | |
349 (backward-sexp 1) | |
350 (while (eq (char-syntax (char-after (point))) ?\') | |
351 (forward-char 1)) | |
352 (point)) | |
353 (set-syntax-table buffer-syntax))) | |
354 (pattern (buffer-substring beg end)) | |
355 (predicate | |
356 (if (eq (char-after (1- beg)) ?\() | |
357 'fboundp | |
358 ;; XEmacs change | |
359 #'(lambda (sym) | |
360 (or (boundp sym) (fboundp sym) | |
361 (symbol-plist sym))))) | |
362 (completion (try-completion pattern obarray predicate))) | |
363 (cond ((eq completion t)) | |
364 ((null completion) | |
365 (message "Can't find completion for \"%s\"" pattern) | |
366 (ding)) | |
367 ((not (string= pattern completion)) | |
368 (delete-region beg end) | |
369 (insert completion)) | |
370 (t | |
371 (message "Making completion list...") | |
372 (let ((list (all-completions pattern obarray predicate)) | |
373 ;FSFmacs crock unnecessary in XEmacs | |
374 ;see minibuf.el | |
375 ;(completion-fixup-function | |
376 ; (function (lambda () (if (save-excursion | |
377 ; (goto-char (max (point-min) | |
378 ; (- (point) 4))) | |
379 ; (looking-at " <f>")) | |
380 ; (forward-char -4)))) | |
381 ) | |
382 (or (eq predicate 'fboundp) | |
383 (let (new) | |
384 (while list | |
385 (setq new (cons (if (fboundp (intern (car list))) | |
386 (list (car list) " <f>") | |
387 (car list)) | |
388 new)) | |
389 (setq list (cdr list))) | |
390 (setq list (nreverse new)))) | |
391 (with-output-to-temp-buffer "*Completions*" | |
392 (display-completion-list list))) | |
393 (message "Making completion list...%s" "done"))))) | |
394 | |
395 ;;; lisp.el ends here |