[AC21.5] Check and report on package paths in configure
12 years, 4 months
Stephen J. Turnbull
APPROVE COMMIT 21.5
Not for 21.4.
This patch reports the package hierarchies (if user-specified, these
are the --with-user-packages, --with-system-packages, and
--with-legacy-packages options). The user package hierarchies are
just reported. (Which user to check? is the main problem. I have a
patch that assumes a single-user system but this wouldn't work if the
user configures XEmacs as root!) The system package roots are checked
for existence and presence of *-packages directories, and if either
check fails a warning that XEmacs features will be missing until
packages are installed is issued. The legacy package roots, if
supplied, are checked, and checked for existence and presence of
*-packages directories. If missing, a warning suggesting that the
option should be omitted is issued.
If the --with-legacy-packages option is not supplied, then the legacy
package root is completed ignored.
# HG changeset patch
# Parent 4e54445e0c7d2e0744b998ce9499beb5fae92a7a
Sanity check package search paths.
diff -r 4e54445e0c7d ChangeLog
--- a/ChangeLog Fri Aug 03 03:45:02 2012 +0900
+++ b/ChangeLog Sat Aug 04 22:53:41 2012 +0900
@@ -1,3 +1,10 @@
+2012-08-04 Stephen J. Turnbull <stephen(a)xemacs.org>
+
+ * configure.ac (Package Search): New section.
+ Warn about missing system package hierarchies.
+
+ * configure: Regenerate.
+
2012-08-02 Stephen J. Turnbull <stephen(a)xemacs.org>
* XEmacs 21.5.32 "habanero" is released.
diff -r 4e54445e0c7d configure
--- a/configure Fri Aug 03 03:45:02 2012 +0900
+++ b/configure Sat Aug 04 22:53:41 2012 +0900
@@ -21156,6 +21156,70 @@
- Consider configuring with --with-pdump." ;;
esac
+
+echo "
+Package Search (a 'root' contains '{xemacs,mule,site}-packages'):"
+
+if test -n "$with_early_packages"; then
+ case "$with_early_packages" in *:* ) case "$opsys" in *cygwin* )
+ echo " WARNING: Paths containing spaces will be misinterpreted." ;;
+esac
+with_early_packages="`echo '' $with_early_packages | sed -e 's/^ //' -e 's/:/ /g'`";; esac
+ echo " User package roots: $with_early_packages"
+else
+ echo " User package roots: ~/.xemacs"
+fi
+
+with_late_packages_expanded=$with_late_packages
+while true; do
+ case "$with_late_packages_expanded" in
+ *\$* ) eval "with_late_packages_expanded=$with_late_packages_expanded" ;;
+ *) break ;;
+ esac
+done
+case "$with_late_packages_expanded" in *:* ) case "$opsys" in *cygwin* )
+ echo " WARNING: Paths containing spaces will be misinterpreted." ;;
+esac
+with_late_packages_expanded="`echo '' $with_late_packages_expanded | sed -e 's/^ //' -e 's/:/ /g'`";; esac
+echo " System package roots: $with_late_packages_expanded"
+for path in $with_late_packages_expanded; do
+ if test ! -d $path; then
+ echo " WARNING: $path was specified, but doesn't exist."
+ echo " WARNING: XEmacs functionality will be noticably limited until"
+ echo " WARNING: some packages are installed."
+ elif test ! -d "$path/xemacs-packages" \
+ -a ! -d "$path/mule-packages" \
+ -a ! -d "$path/site-packages"; then
+ echo " WARNING: No packages found in $path."
+ echo " WARNING: XEmacs functionality will be noticably limited until"
+ echo " WARNING: some packages are installed."
+ fi
+done
+if test -z "$with_late_packages"; then
+ echo " XEmacs BUG: with_late_packages is unset. Please report this!"
+fi
+
+if test -n "$with_last_packages"; then
+ case "$with_last_packages" in *:* ) case "$opsys" in *cygwin* )
+ echo " WARNING: Paths containing spaces will be misinterpreted." ;;
+esac
+with_last_packages="`echo '' $with_last_packages | sed -e 's/^ //' -e 's/:/ /g'`";; esac
+ echo " Legacy package roots: $with_last_packages"
+ for path in $with_last_packages; do
+ if test ! -d $path; then
+ echo " WARNING: $path was specified, but doesn't exist."
+ echo " WARNING: If you don't need this setting, it is recommended"
+ echo " WARNING: that you not use it."
+ elif test ! -d "$path/xemacs-packages" \
+ -a ! -d "$path/mule-packages" \
+ -a ! -d "$path/site-packages"; then
+ echo " WARNING: No packages found in $path."
+ echo " WARNING: If you don't need this setting, it is recommended"
+ echo " WARNING: that you not use it."
+ fi
+ done
+fi
+
echo "
Window System:"
if test "$with_msw" = "yes"; then
diff -r 4e54445e0c7d configure.ac
--- a/configure.ac Fri Aug 03 03:45:02 2012 +0900
+++ b/configure.ac Sat Aug 04 22:53:41 2012 +0900
@@ -5680,6 +5680,63 @@
- Consider configuring with --with-pdump." ;;
esac
+define(COLON_TO_SPACE_WARN,
+ [case "$[$1]" in *:* [)] dnl
+case "$opsys" in *cygwin* [)]
+ echo " WARNING: Paths containing spaces will be misinterpreted." ;;
+esac
+[$1]="`echo '' $[$1] | sed -e 's/^ //' -e 's/:/ /g'`";; esac])dnl
+
+echo "
+Package Search (a 'root' contains '{xemacs,mule,site}-packages'):"
+
+if test -n "$with_early_packages"; then
+ COLON_TO_SPACE_WARN(with_early_packages)
+ echo " User package roots: $with_early_packages"
+else
+ echo " User package roots: ~/.xemacs"
+fi
+
+dnl Unlike the others, with_late_packages gets a non-null default.
+XE_EXPAND_VARIABLE(with_late_packages,with_late_packages_expanded)
+COLON_TO_SPACE_WARN(with_late_packages_expanded)
+echo " System package roots: $with_late_packages_expanded"
+for path in $with_late_packages_expanded; do
+ if test ! -d $path; then
+ echo " WARNING: $path was specified, but doesn't exist."
+ echo " WARNING: XEmacs functionality will be noticably limited until"
+ echo " WARNING: some packages are installed."
+ elif test ! -d "$path/xemacs-packages" \
+ -a ! -d "$path/mule-packages" \
+ -a ! -d "$path/site-packages"; then
+ echo " WARNING: No packages found in $path."
+ echo " WARNING: XEmacs functionality will be noticably limited until"
+ echo " WARNING: some packages are installed."
+ fi
+done
+dnl #### Shouldn't need this.
+if test -z "$with_late_packages"; then
+ echo " XEmacs BUG: with_late_packages is unset. Please report this!"
+fi
+
+if test -n "$with_last_packages"; then
+ COLON_TO_SPACE_WARN(with_last_packages)
+ echo " Legacy package roots: $with_last_packages"
+ for path in $with_last_packages; do
+ if test ! -d $path; then
+ echo " WARNING: $path was specified, but doesn't exist."
+ echo " WARNING: If you don't need this setting, it is recommended"
+ echo " WARNING: that you not use it."
+ elif test ! -d "$path/xemacs-packages" \
+ -a ! -d "$path/mule-packages" \
+ -a ! -d "$path/site-packages"; then
+ echo " WARNING: No packages found in $path."
+ echo " WARNING: If you don't need this setting, it is recommended"
+ echo " WARNING: that you not use it."
+ fi
+ done
+fi
+
echo "
Window System:"
if test "$with_msw" = "yes"; then
_______________________________________________
XEmacs-Patches mailing list
XEmacs-Patches(a)xemacs.org
http://lists.xemacs.org/mailman/listinfo/xemacs-patches
Re: [COMMIT] GC protect a freshly-consed list, define_specifier_tag().
12 years, 4 months
Raymond Toy
On Sun, Aug 12, 2012 at 8:53 PM, Raymond Toy <toy.raymond(a)gmail.com> wrote:
> On 8/12/12 8:08 AM, Stephen J. Turnbull wrote:
> > Aidan Kehoe writes:
> >
> > > The below fixes a definite bug, and that bug may well have provoked
> your
> > > crash.
> >
> > Thank you!
> >
> > > It’s odd that it has only started showing up now, though, so it may
> > > be that instead some compiler somewhere was choking on using the
> > > result of Fcharset_list() as the list to be looped over in the
> > > LIST_LOOP macro.
> >
> > I think it's more likely that few people are using charset predicates
> > (I've never done it, and you'd think I'd be a candidate if anyone is),
> > and even fewer are looping over them as Ray does.
>
> I'll check out this fix on my machine at work, where I was seeing this.
>
>
Updated my xemacs tree and I can't seem to reproduce the crash anymore. I
couldn't reproduce it at will before, so I can't say the crash doesn't
happen anymore, but it looks really promising.
Thanks!
Ray
_______________________________________________
XEmacs-Patches mailing list
XEmacs-Patches(a)xemacs.org
http://lists.xemacs.org/mailman/listinfo/xemacs-patches
Re: [COMMIT] GC protect a freshly-consed list, define_specifier_tag().
12 years, 4 months
Raymond Toy
On 8/12/12 8:08 AM, Stephen J. Turnbull wrote:
> Aidan Kehoe writes:
>
> > The below fixes a definite bug, and that bug may well have provoked your
> > crash.
>
> Thank you!
>
> > It’s odd that it has only started showing up now, though, so it may
> > be that instead some compiler somewhere was choking on using the
> > result of Fcharset_list() as the list to be looped over in the
> > LIST_LOOP macro.
>
> I think it's more likely that few people are using charset predicates
> (I've never done it, and you'd think I'd be a candidate if anyone is),
> and even fewer are looping over them as Ray does.
I'll check out this fix on my machine at work, where I was seeing this.
And the loop was not my idea. :-) I got it from xemacs beta, I think. I
would have just cut-and-pasted the stuff many times since it's just in
my sloppy init file.
Ray
_______________________________________________
XEmacs-Patches mailing list
XEmacs-Patches(a)xemacs.org
http://lists.xemacs.org/mailman/listinfo/xemacs-patches
[PATCH] Remapping support in keymap.c
12 years, 4 months
Aidan Kehoe
Hello!
GNU have had support for command remapping for a while, an alternative to
#'substitute-key-definition that works better as keymaps are
updated. And this is used in the package code, which is fair enough, useful
features will be.
Unfortunately, this feature doesn’t really appear to have had much care put
into its design. The aspect of this that I hate the most is the NO-REMAP
argument to #'where-is-internal, its fifth. See the sample code below.
I’d prefer to have the second example return nil, and the fourth the list it
currently returns but without the entries starting with [remap ...]. The
function #'command-remapping allows the second result to be constructed; I’d
like to add a function to allow the fourth result to be constructed.
Very little code uses *our* existing fifth argument to #'where-is-internal,
EVENT-OR-KEYS, but it is an existing incompatibility. Maybe keyword
arguments are an option.
Best,
Aidan
(let* ((map (make-keymap 'help-map-copy))
(parent-map (make-keymap 'help-map-copy-parent))
(help-map-copy t)
(minor-mode-map-alist (acons 'help-map-copy map minor-mode-map-alist)))
(set-keymap-parent map parent-map)
(loop for (keys def) on '((shift tab) help-prev-symbol
tab help-next-symbol
F find-function-at-point)
by #'cddr
do (define-key map (vector keys) def))
(loop for (keys def) on '(\0 find-function-at-point)
by #'cddr
do (define-key parent-map (vector keys) def))
(define-key map [remap find-function-at-point] #'find-file)
(define-key parent-map [remap help-next-symbol] #'find-file)
(list
(where-is-internal 'help-next-symbol map nil nil t)
(where-is-internal 'help-next-symbol map nil nil nil)
(lookup-key map [tab])
(where-is-internal 'find-file map nil nil t)
(where-is-internal 'find-file map nil nil nil)))
;; First result, NO-REMAP t, fair enough:
=> (([tab])
;; NO-REMAP nil, but we get key sequences that will never invoke
;; #'help-next-symbol?!
([open] [24 6] [menu-bar file new-file] [tab] [F] [\0])
;; Next ... but [tab] doesn’t invoke #'help-next-symbol. This is a
;; divergence between #'lookup-key and #'key-binding that is
;; unintuitive and underdocumented.
help-next-symbol
;; Am I really interested in those commands that are remapped *to*
;; DEFINITION? Surely that’s a separate question and separate syntax
;; would be better?
([remap find-function-at-point] [remap help-next-symbol] [open] [24 6] [menu-bar file new-file])
;; OK, this makes some sense, all these key sequences will invoke
;; #'find-file.
([open] [24 6] [menu-bar file new-file] [tab] [F] [\0]))
diff -r ee95ef1e644c src/keymap.c
--- a/src/keymap.c Mon Jul 02 20:39:12 2012 +0200
+++ b/src/keymap.c Sun Aug 12 20:28:01 2012 +0100
@@ -188,6 +188,11 @@
Lisp_Object Qmodeline_map;
Lisp_Object Qtoolbar_map;
+Lisp_Object Qremap;
+
+Lisp_Object Qxemacs_remap_command; /* Uninterned, so there's no conflict
+ with any key named remap. */
+
EXFUN (Fkeymap_fullness, 1);
EXFUN (Fset_keymap_name, 2);
EXFUN (Fsingle_key_description, 1);
@@ -1826,6 +1831,12 @@
`define-key' also accepts a number of abbreviations, aliases, and variants
for convenience, compatibility, and internal use.
+A key sequence can also be the vector [remap COMMAND]; this shadows any
+bindings for COMMAND in KEYMAP, using DEF instead of COMMAND. See
+`command-remapping' and `remap-command'. Specify [(remap) KEYSTROKE] if
+your keyboard has a key with the name `remap' and you'd like to use it as a
+prefix.
+
A keystroke may be represented by a key; this is treated as though it were a
list containing that key as the only element. A keystroke may also be
represented by an event object, as returned by the `next-command-event' and
@@ -1916,6 +1927,12 @@
GCPRO3 (keymap, keys, def);
+ /* Allow access to any keys named remap, use our uninterned symbol. */
+ if (2 == len && VECTORP (keys) && EQ (Qremap, XVECTOR_DATA (keys) [0]))
+ {
+ keys = vector2 (Qxemacs_remap_command, XVECTOR_DATA (keys) [1]);
+ }
+
/* ASCII grunge.
When the user defines a key which, in a strictly ASCII world, would be
produced by two different keys (^J and linefeed, or ^H and backspace,
@@ -2036,7 +2053,83 @@
}
}
}
-
+
+static int get_relevant_keymaps (Lisp_Object, Lisp_Object, int,
+ Lisp_Object maps[]);
+static Lisp_Object lookup_keys (Lisp_Object, int, Lisp_Object *, int);
+
+static Lisp_Object
+command_remapping (Lisp_Object definition, int nmaps, Lisp_Object *maps)
+{
+ Lisp_Object remapping = Qnil;
+ Lisp_Object keys[2] = { Qxemacs_remap_command, definition };
+ int jj;
+
+ for (jj = 0; jj < nmaps; jj++)
+ {
+ remapping = lookup_keys (maps[jj], countof (keys), keys, 0);
+ if (!NILP (remapping) && !FIXNUMP (remapping))
+ {
+ return remapping;
+ }
+ }
+
+ return Qnil;
+}
+
+DEFUN ("command-remapping", Fcommand_remapping, 1, 3, 0, /*
+Return the remapping for command COMMAND.
+Returns nil if COMMAND is not remapped (or not a symbol).
+
+If the optional argument POSITION is non-nil, it specifies a mouse
+position as returned by `event-start' and `event-end', and the
+remapping occurs in the keymaps associated with it. It can also be a
+number or marker, in which case the keymap properties at the specified
+buffer position instead of point are used. The KEYMAPS argument is
+ignored if POSITION is non-nil.
+
+If the optional argument KEYMAPS is non-nil, it should be a list of
+keymaps to search for command remapping. Otherwise, search for the
+remapping in all currently active keymaps.
+*/
+ (command, position, keymaps))
+{
+ Lisp_Object maps[100];
+ Lisp_Object *gubbish = maps;
+ int nmaps, maps_count = countof (maps);
+
+ CHECK_LIST (keymaps);
+
+ /* Get keymaps as an array */
+ if (NILP (keymaps) || !NILP (position))
+ {
+ nmaps = get_relevant_keymaps (Qnil, position, maps_count, gubbish);
+ }
+ else
+ {
+ Elemcount jj = 0;
+ nmaps = XFIXNUM (Flength (keymaps));
+ if (nmaps > maps_count)
+ {
+ gubbish = alloca_array (Lisp_Object, nmaps);
+ }
+
+ {
+ LIST_LOOP_2 (elt, keymaps)
+ {
+ gubbish[jj++] = elt;
+ }
+ }
+ }
+
+ if (nmaps > maps_count);
+ {
+ gubbish = alloca_array (Lisp_Object, nmaps);
+ nmaps = get_relevant_keymaps (Qnil, position, nmaps, gubbish);
+ }
+
+ return command_remapping (command, nmaps, gubbish);
+}
/************************************************************************/
/* Looking up keys in keymaps */
@@ -2318,8 +2411,8 @@
}
static int
-get_relevant_keymaps (Lisp_Object keys,
- int max_maps, Lisp_Object maps[])
+get_relevant_keymaps (Lisp_Object keys, Lisp_Object position, int max_maps,
+ Lisp_Object maps[])
{
/* This function can GC */
Lisp_Object terminal = Qnil;
@@ -2464,6 +2557,18 @@
}
#endif /* HAVE_WINDOW_SYSTEM */
+ if (FIXNUMP (position))
+ {
+ get_relevant_extent_keymaps (position, wrap_buffer (current_buffer),
+ Qnil, &closure);
+ }
+ else if (MARKERP (position) && !NILP (Fmarker_buffer (position)))
+ {
+ get_relevant_extent_keymaps (Fmarker_position (position),
+ Fmarker_buffer (position),
+ Qnil, &closure);
+ }
+
if (CONSOLE_TTY_P (con))
relevant_map_push (Vglobal_tty_map, &closure);
else
@@ -2580,18 +2685,18 @@
int nmaps;
GCPRO1 (event_or_keys);
- nmaps = get_relevant_keymaps (event_or_keys, countof (maps),
+ nmaps = get_relevant_keymaps (event_or_keys, Qnil, countof (maps),
gubbish);
if (nmaps > countof (maps))
{
gubbish = alloca_array (Lisp_Object, nmaps);
- nmaps = get_relevant_keymaps (event_or_keys, nmaps, gubbish);
+ nmaps = get_relevant_keymaps (event_or_keys, Qnil, nmaps, gubbish);
}
UNGCPRO;
return Flist (nmaps, gubbish);
}
-DEFUN ("key-binding", Fkey_binding, 1, 2, 0, /*
+DEFUN ("key-binding", Fkey_binding, 1, 4, 0, /*
Return the binding for command KEYS in current keymaps.
KEYS is a string, a vector of events, or a vector of key-description lists
as described in the documentation for the `define-key' function.
@@ -2650,7 +2755,7 @@
generate and display a list of possible key sequences and bindings
given the prefix so far generated.
*/
- (keys, accept_default))
+ (keys, accept_default, no_remap, position))
{
/* This function can GC */
int i;
@@ -2659,7 +2764,7 @@
struct gcpro gcpro1, gcpro2;
GCPRO2 (keys, accept_default); /* get_relevant_keymaps may autoload */
- nmaps = get_relevant_keymaps (keys, countof (maps), maps);
+ nmaps = get_relevant_keymaps (keys, position, countof (maps), maps);
UNGCPRO;
@@ -2668,15 +2773,19 @@
for (i = 0; i < nmaps; i++)
{
- Lisp_Object tem = Flookup_key (maps[i], keys,
- accept_default);
+ Lisp_Object tem = Flookup_key (maps[i], keys, accept_default);
+
if (FIXNUMP (tem))
{
/* Too long in some local map means don't look at global map */
return Qnil;
}
- else if (!NILP (tem))
- return tem;
+
+ if (!NILP (tem) && NILP (no_remap) && SYMBOLP (tem))
+ {
+ Lisp_Object remap = command_remapping (tem, nmaps, maps);
+ return NILP (remap) ? tem : remap;
+ }
}
return Qnil;
}
@@ -2724,7 +2833,7 @@
assert (EVENTP (event0));
- nmaps = get_relevant_keymaps (event0, countof (maps), maps);
+ nmaps = get_relevant_keymaps (event0, Qnil, countof (maps), maps);
if (nmaps > countof (maps))
nmaps = countof (maps);
return process_event_binding_result (lookup_events (event0, nmaps, maps,
@@ -3452,7 +3561,8 @@
static Lisp_Object
where_is_internal (Lisp_Object definition, Lisp_Object *maps, int nmaps,
- Lisp_Object firstonly, Eistring *target_buffer);
+ Lisp_Object firstonly, Lisp_Object no_remap,
+ Eistring *target_buffer);
DEFUN ("where-is-internal", Fwhere_is_internal, 1, 5, 0, /*
Return list of keys that invoke DEFINITION in KEYMAPS.
@@ -3460,20 +3570,26 @@
current global keymap) or a list of keymaps (meaning search in exactly
those keymaps and no others).
-If optional 3rd arg FIRSTONLY is non-nil, return a vector representing
- the first key sequence found, rather than a list of all possible key
- sequences.
+If optional 3rd arg FIRSTONLY is non-nil, return a vector representing the
+first key sequence found, rather than a list of all possible key sequences.
Optional 4th argument NOINDIRECT is ignored. (GNU Emacs uses it to allow
searching for an indirect keymap by inhibiting following of indirections to
keymaps or slots, but XEmacs doesn't need it because keymaps are a type.)
-If optional 5th argument EVENT-OR-KEYS is non-nil and KEYMAPS is nil,
-search in the currently applicable maps for EVENT-OR-KEYS (this is
-equivalent to specifying `(current-keymaps EVENT-OR-KEYS)' as the
-argument to KEYMAPS).
+The optional 5th arg NO-REMAP alters how command remapping is handled:
+
+- If some other command OTHER-COMMAND is remapped to DEFINITION, normally
+ search for the bindings of OTHER-COMMAND and include them in the returned
+ list. But if NO-REMAP is non-nil, include the vector [remap
+ OTHER-COMMAND] in the returned list instead, without searching for those
+ other bindings.
+
+- If DEFINITION is remapped to OTHER-COMMAND, normally return the
+ bindings for OTHER-COMMAND. But if NO-REMAP is non-nil, return the
+ bindings for DEFINITION instead, ignoring its remapping.
*/
- (definition, keymaps, firstonly, UNUSED (noindirect), event_or_keys))
+ (definition, keymaps, firstonly, UNUSED (noindirect), no_remap))
{
/* This function can GC */
Lisp_Object maps[100];
@@ -3483,12 +3599,11 @@
/* Get keymaps as an array */
if (NILP (keymaps))
{
- nmaps = get_relevant_keymaps (event_or_keys, countof (maps),
- gubbish);
+ nmaps = get_relevant_keymaps (Qnil, Qnil, countof (maps), gubbish);
if (nmaps > countof (maps))
{
gubbish = alloca_array (Lisp_Object, nmaps);
- nmaps = get_relevant_keymaps (event_or_keys, nmaps, gubbish);
+ nmaps = get_relevant_keymaps (Qnil, Qnil, nmaps, gubbish);
}
}
else if (CONSP (keymaps))
@@ -3518,7 +3633,8 @@
}
}
- return where_is_internal (definition, gubbish, nmaps, firstonly, 0);
+ return where_is_internal (definition, gubbish, nmaps, firstonly, no_remap,
+ 0);
}
/* This function is like
@@ -3536,14 +3652,14 @@
int nmaps;
/* Get keymaps as an array */
- nmaps = get_relevant_keymaps (Qnil, countof (maps), gubbish);
+ nmaps = get_relevant_keymaps (Qnil, Qnil, countof (maps), gubbish);
if (nmaps > countof (maps))
{
gubbish = alloca_array (Lisp_Object, nmaps);
- nmaps = get_relevant_keymaps (Qnil, nmaps, gubbish);
+ nmaps = get_relevant_keymaps (Qnil, Qnil, nmaps, gubbish);
}
- where_is_internal (definition, maps, nmaps, Qt, buffer);
+ where_is_internal (definition, maps, nmaps, Qt, Qnil, buffer);
}
@@ -3602,6 +3718,7 @@
Lisp_Object *shadow;
int shadow_count;
int firstonly;
+ int no_remap;
int keys_count;
int modifiers_so_far;
Eistring *target_buffer;
@@ -3619,6 +3736,7 @@
struct where_is_closure *c = (struct where_is_closure *) arg;
Lisp_Object definition = c->definition;
const int firstonly = c->firstonly;
+ const int no_remap = c->no_remap;
const int keys_count = c->keys_count;
const int modifiers_so_far = c->modifiers_so_far;
Eistring *target_buffer = c->target_buffer;
@@ -3771,17 +3889,31 @@
static Lisp_Object
where_is_internal (Lisp_Object definition, Lisp_Object *maps, int nmaps,
- Lisp_Object firstonly, Eistring *target_buffer)
+ Lisp_Object firstonly, Lisp_Object no_remap,
+ Eistring *target_buffer)
{
/* This function can GC */
Lisp_Object result = Qnil;
int i;
Lisp_Key_Data raw[20];
struct where_is_closure c;
+ struct gcpro gcpro1;
+
+ if (NILP (no_remap))
+ {
+ Lisp_Object remapped = command_remapping (definition, nmaps, maps);
+ if (!NILP (remapped))
+ {
+ definition = remapped;
+ }
+ }
+
+ GCPRO1 (definition);
c.definition = definition;
c.shadow = maps;
c.firstonly = !NILP (firstonly);
+ c.no_remap = !NILP (no_remap);
c.target_buffer = target_buffer;
c.keys_so_far = raw;
c.keys_so_far_total_size = countof (raw);
@@ -3815,6 +3947,9 @@
if (c.keys_so_far_malloced)
xfree (c.keys_so_far);
+
+ UNGCPRO;
+
return result;
}
@@ -4307,6 +4442,7 @@
DEFSYMBOL (Qmodeline_map);
DEFSYMBOL (Qtoolbar_map);
+ DEFSYMBOL (Qremap);
DEFSUBR (Fkeymap_parents);
DEFSUBR (Fset_keymap_parents);
@@ -4326,6 +4462,7 @@
DEFSUBR (Fmap_keymap);
DEFSUBR (Fevent_matches_key_specifier_p);
DEFSUBR (Fdefine_key);
+ DEFSUBR (Fcommand_remapping);
DEFSUBR (Flookup_key);
DEFSUBR (Fkey_binding);
DEFSUBR (Fuse_global_map);
@@ -4455,6 +4592,10 @@
Vsingle_space_string = make_string ((const Ibyte *) " ", 1);
staticpro (&Vsingle_space_string);
+
+ Qxemacs_remap_command
+ = Fmake_symbol (build_ascstring ("remap-xemacs-command"));
+ staticpro (&Qxemacs_remap_command);
}
void
--
‘Liston operated so fast that he once accidentally amputated an assistant’s
fingers along with a patient’s leg, […] The patient and the assistant both
died of sepsis, and a spectator reportedly died of shock, resulting in the
only known procedure with a 300% mortality.’ (Atul Gawande, NEJM, 2012)
_______________________________________________
XEmacs-Patches mailing list
XEmacs-Patches(a)xemacs.org
http://lists.xemacs.org/mailman/listinfo/xemacs-patches
[COMMIT] GC protect a freshly-consed list, define_specifier_tag().
12 years, 4 months
Aidan Kehoe
Ar an naoiú lá de mí Lúnasa, scríobh Raymond Toy:
> This crash is something new in b32. My init code was running fine
> until I updated my build to b32. It's not 100% repeatable, but I can
> sometimes make it happen by clicking in the window while xemacs is
> loading up my init files.
The below fixes a definite bug, and that bug may well have provoked your
crash. It’s odd that it has only started showing up now, though, so it may
be that instead some compiler somewhere was choking on using the result of
Fcharset_list() as the list to be looped over in the LIST_LOOP macro.
# HG changeset patch
# User Aidan Kehoe <kehoea(a)parhasard.net>
# Date 1344767556 -3600
# Node ID b0d40183ac7959bf1c6f5fe0df678f83b5c8b0ec
# Parent febc025c4e0c6f95a8adc7995a072205e56cdf07
GC protect a freshly-consed list, define_specifier_tag().
src/ChangeLog addition:
2012-08-12 Aidan Kehoe <kehoea(a)parhasard.net>
* specifier.c (define_specifier_tag):
GC protect the list that Fcharset_list () gave back, it's freshly
consed.
Clear the alist entries for this tag in CHARSET's tag list if the
charset_predicate is nil, so re-creating a charset tag works more
effectively.
* specifier.c (Fdefine_specifier_tag):
Device-type-specific tags *are* available, even if that device
type isn't; see specifier.el.
diff -r febc025c4e0c -r b0d40183ac79 src/ChangeLog
--- a/src/ChangeLog Mon Aug 06 13:07:55 2012 +0100
+++ b/src/ChangeLog Sun Aug 12 11:32:36 2012 +0100
@@ -1,3 +1,15 @@
+2012-08-12 Aidan Kehoe <kehoea(a)parhasard.net>
+
+ * specifier.c (define_specifier_tag):
+ GC protect the list that Fcharset_list () gave back, it's freshly
+ consed.
+ Clear the alist entries for this tag in CHARSET's tag list if the
+ charset_predicate is nil, so re-creating a charset tag works more
+ effectively.
+ * specifier.c (Fdefine_specifier_tag):
+ Device-type-specific tags *are* available, even if that device
+ type isn't; see specifier.el.
+
2012-08-06 Aidan Kehoe <kehoea(a)parhasard.net>
* lread.c (read1):
diff -r febc025c4e0c -r b0d40183ac79 src/specifier.c
--- a/src/specifier.c Mon Aug 06 13:07:55 2012 +0100
+++ b/src/specifier.c Sun Aug 12 11:32:36 2012 +0100
@@ -1162,15 +1162,18 @@
if (recompute_charsets)
{
-
- LIST_LOOP_2 (charset_name, Fcharset_list ())
+ GC_EXTERNAL_LIST_LOOP_2 (charset_name, Fcharset_list ())
{
Lisp_Object charset = Fget_charset (charset_name);
Lisp_Object tag_list = Fgethash (charset, Vcharset_tag_lists, Qnil);
Lisp_Object charpres;
- if (NILP (charset_predicate))
- continue;
+ if (NILP (charset_predicate))
+ {
+ Fputhash (charset, remassq_no_quit (tag, tag_list),
+ Vcharset_tag_lists);
+ continue;
+ }
charpres = call_charset_predicate (charset_predicate, charset);
@@ -1186,6 +1189,7 @@
Vcharset_tag_lists);
}
}
+ END_GC_EXTERNAL_LIST_LOOP (charset_name);
}
return Qt;
}
@@ -1222,9 +1226,6 @@
You can redefine an existing user-defined specifier tag. However, you
cannot redefine most of the built-in specifier tags \(the device types and
classes, `initial', and `final') or the symbols nil, t, `all', or `global'.
-Note that if a device type is not supported in this XEmacs, it will not be
-available as a built-in specifier tag; this is probably something we should
-change.
*/
(tag, device_predicate, charset_predicate))
{
--
‘Liston operated so fast that he once accidentally amputated an assistant’s
fingers along with a patient’s leg, […] The patient and the assistant both
died of sepsis, and a spectator reportedly died of shock, resulting in the
only known procedure with a 300% mortality.’ (Atul Gawande, NEJM, 2012)
_______________________________________________
XEmacs-Patches mailing list
XEmacs-Patches(a)xemacs.org
http://lists.xemacs.org/mailman/listinfo/xemacs-patches
commit/XEmacs: kehoea: GC protect a freshly-consed list, define_specifier_tag().
12 years, 4 months
Bitbucket
1 new commit in XEmacs:
https://bitbucket.org/xemacs/xemacs/changeset/b0d40183ac79/
changeset: b0d40183ac79
user: kehoea
date: 2012-08-12 12:32:36
summary: GC protect a freshly-consed list, define_specifier_tag().
src/ChangeLog addition:
2012-08-12 Aidan Kehoe <kehoea(a)parhasard.net>
* specifier.c (define_specifier_tag):
GC protect the list that Fcharset_list () gave back, it's freshly
consed.
Clear the alist entries for this tag in CHARSET's tag list if the
charset_predicate is nil, so re-creating a charset tag works more
effectively.
* specifier.c (Fdefine_specifier_tag):
Device-type-specific tags *are* available, even if that device
type isn't; see specifier.el.
affected #: 2 files
diff -r febc025c4e0c6f95a8adc7995a072205e56cdf07 -r b0d40183ac7959bf1c6f5fe0df678f83b5c8b0ec src/ChangeLog
--- a/src/ChangeLog
+++ b/src/ChangeLog
@@ -1,3 +1,15 @@
+2012-08-12 Aidan Kehoe <kehoea(a)parhasard.net>
+
+ * specifier.c (define_specifier_tag):
+ GC protect the list that Fcharset_list () gave back, it's freshly
+ consed.
+ Clear the alist entries for this tag in CHARSET's tag list if the
+ charset_predicate is nil, so re-creating a charset tag works more
+ effectively.
+ * specifier.c (Fdefine_specifier_tag):
+ Device-type-specific tags *are* available, even if that device
+ type isn't; see specifier.el.
+
2012-08-06 Aidan Kehoe <kehoea(a)parhasard.net>
* lread.c (read1):
diff -r febc025c4e0c6f95a8adc7995a072205e56cdf07 -r b0d40183ac7959bf1c6f5fe0df678f83b5c8b0ec src/specifier.c
--- a/src/specifier.c
+++ b/src/specifier.c
@@ -1162,15 +1162,18 @@
if (recompute_charsets)
{
-
- LIST_LOOP_2 (charset_name, Fcharset_list ())
+ GC_EXTERNAL_LIST_LOOP_2 (charset_name, Fcharset_list ())
{
Lisp_Object charset = Fget_charset (charset_name);
Lisp_Object tag_list = Fgethash (charset, Vcharset_tag_lists, Qnil);
Lisp_Object charpres;
- if (NILP (charset_predicate))
- continue;
+ if (NILP (charset_predicate))
+ {
+ Fputhash (charset, remassq_no_quit (tag, tag_list),
+ Vcharset_tag_lists);
+ continue;
+ }
charpres = call_charset_predicate (charset_predicate, charset);
@@ -1186,6 +1189,7 @@
Vcharset_tag_lists);
}
}
+ END_GC_EXTERNAL_LIST_LOOP (charset_name);
}
return Qt;
}
@@ -1222,9 +1226,6 @@
You can redefine an existing user-defined specifier tag. However, you
cannot redefine most of the built-in specifier tags \(the device types and
classes, `initial', and `final') or the symbols nil, t, `all', or `global'.
-Note that if a device type is not supported in this XEmacs, it will not be
-available as a built-in specifier tag; this is probably something we should
-change.
*/
(tag, device_predicate, charset_predicate))
{
Repository URL: https://bitbucket.org/xemacs/xemacs/
--
This is a commit notification from bitbucket.org. You are receiving
this because you have the service enabled, addressing the recipient of
this email.
_______________________________________________
XEmacs-Patches mailing list
XEmacs-Patches(a)xemacs.org
http://lists.xemacs.org/mailman/listinfo/xemacs-patches
[COMMIT] Adopt GNU's ## syntax for the interned symbol with name "".
12 years, 4 months
Aidan Kehoe
APPROVE COMMIT
NOTE: This patch has been committed.
# HG changeset patch
# User Aidan Kehoe <kehoea(a)parhasard.net>
# Date 1344254875 -3600
# Node ID febc025c4e0c6f95a8adc7995a072205e56cdf07
# Parent dede3f658f8e3c3299aaf47157a0569abc28e231
Adopt GNU's ## syntax for the interned symbol with name "".
src/ChangeLog addition:
2012-08-06 Aidan Kehoe <kehoea(a)parhasard.net>
* lread.c (read1):
* print.c (print_symbol):
Adopt GNU's ## syntax for the interned symbol with the zero-length
name.
man/ChangeLog addition:
2012-08-06 Aidan Kehoe <kehoea(a)parhasard.net>
* lispref/symbols.texi (Symbol Components):
Document the new syntax of ## for the symbol with name "" interned
in obarray.
diff -r dede3f658f8e -r febc025c4e0c man/ChangeLog
--- a/man/ChangeLog Sat Aug 04 23:26:26 2012 +0900
+++ b/man/ChangeLog Mon Aug 06 13:07:55 2012 +0100
@@ -1,3 +1,9 @@
+2012-08-06 Aidan Kehoe <kehoea(a)parhasard.net>
+
+ * lispref/symbols.texi (Symbol Components):
+ Document the new syntax of ## for the symbol with name "" interned
+ in obarray.
+
2012-08-02 Stephen J. Turnbull <stephen(a)xemacs.org>
* XEmacs 21.5.32 "habanero" is released.
diff -r dede3f658f8e -r febc025c4e0c man/lispref/symbols.texi
--- a/man/lispref/symbols.texi Sat Aug 04 23:26:26 2012 +0900
+++ b/man/lispref/symbols.texi Mon Aug 06 13:07:55 2012 +0100
@@ -73,9 +73,15 @@
Since symbols are represented textually by their names, it is important
not to have two symbols with the same name. The Lisp reader ensures
this: every time it reads a symbol, it looks for an existing symbol with
-the specified name before it creates a new one. (In XEmacs Lisp,
-this lookup uses a hashing algorithm and an obarray; see @ref{Creating
-Symbols}.)
+the specified name before it creates a new one. In XEmacs Lisp,
+this lookup uses an hashing algorithm and an obarray; see @ref{Creating
+Symbols}. In Emacs Lisp, the symbol with the zero-length name has the
+special print syntax @code{##}:
+
+@example
+(intern "")
+ @result{} ##
+@end example
In normal usage, the function cell usually contains a function or
macro, as that is what the Lisp interpreter expects to see there
diff -r dede3f658f8e -r febc025c4e0c src/ChangeLog
--- a/src/ChangeLog Sat Aug 04 23:26:26 2012 +0900
+++ b/src/ChangeLog Mon Aug 06 13:07:55 2012 +0100
@@ -1,3 +1,10 @@
+2012-08-06 Aidan Kehoe <kehoea(a)parhasard.net>
+
+ * lread.c (read1):
+ * print.c (print_symbol):
+ Adopt GNU's ## syntax for the interned symbol with the zero-length
+ name.
+
2012-08-02 Stephen J. Turnbull <stephen(a)xemacs.org>
* XEmacs 21.5.32 "habanero" is released.
diff -r dede3f658f8e -r febc025c4e0c src/lread.c
--- a/src/lread.c Sat Aug 04 23:26:26 2012 +0900
+++ b/src/lread.c Mon Aug 06 13:07:55 2012 +0100
@@ -2654,6 +2654,8 @@
goto retry;
}
+ /* The interned symbol with the empty name. */
+ case '#': return intern ("");
case '$': return Vload_file_name_internal;
/* bit vectors */
case '*': return read_bit_vector (readcharfun);
diff -r dede3f658f8e -r febc025c4e0c src/print.c
--- a/src/print.c Sat Aug 04 23:26:26 2012 +0900
+++ b/src/print.c Mon Aug 06 13:07:55 2012 +0100
@@ -2375,8 +2375,6 @@
print_symbol (Lisp_Object obj, Lisp_Object printcharfun, int escapeflag)
{
/* This function can GC */
- /* #### Bug!! (intern "") isn't printed in some distinguished way */
- /* #### (the reader also loses on it) */
Lisp_Object name = symbol_name (XSYMBOL (obj));
Bytecount size = XSTRING_LENGTH (name);
struct gcpro gcpro1, gcpro2;
@@ -2390,12 +2388,15 @@
GCPRO2 (obj, printcharfun);
- if (print_gensym)
+ if (print_gensym && !IN_OBARRAY (obj))
{
- if (!IN_OBARRAY (obj))
- {
- write_ascstring (printcharfun, "#:");
- }
+ write_ascstring (printcharfun, "#:");
+ }
+ else if (0 == size)
+ {
+ /* Compatible with GNU, but not with Common Lisp, where the syntax for
+ this symbol is ||. */
+ write_ascstring (printcharfun, "##");
}
/* Does it look like an integer or a float? */
--
‘Liston operated so fast that he once accidentally amputated an assistant’s
fingers along with a patient’s leg, […] The patient and the assistant both
died of sepsis, and a spectator reportedly died of shock, resulting in the
only known procedure with a 300% mortality.’ (Atul Gawande, NEJM, 2012)
_______________________________________________
XEmacs-Patches mailing list
XEmacs-Patches(a)xemacs.org
http://lists.xemacs.org/mailman/listinfo/xemacs-patches
commit/XEmacs: kehoea: Adopt GNU's ## syntax for the interned symbol with name "".
12 years, 4 months
Bitbucket
1 new commit in XEmacs:
https://bitbucket.org/xemacs/xemacs/changeset/febc025c4e0c/
changeset: febc025c4e0c
user: kehoea
date: 2012-08-06 14:07:55
summary: Adopt GNU's ## syntax for the interned symbol with name "".
src/ChangeLog addition:
2012-08-06 Aidan Kehoe <kehoea(a)parhasard.net>
* lread.c (read1):
* print.c (print_symbol):
Adopt GNU's ## syntax for the interned symbol with the zero-length
name.
man/ChangeLog addition:
2012-08-06 Aidan Kehoe <kehoea(a)parhasard.net>
* lispref/symbols.texi (Symbol Components):
Document the new syntax of ## for the symbol with name "" interned
in obarray.
affected #: 5 files
diff -r dede3f658f8e3c3299aaf47157a0569abc28e231 -r febc025c4e0c6f95a8adc7995a072205e56cdf07 man/ChangeLog
--- a/man/ChangeLog
+++ b/man/ChangeLog
@@ -1,3 +1,9 @@
+2012-08-06 Aidan Kehoe <kehoea(a)parhasard.net>
+
+ * lispref/symbols.texi (Symbol Components):
+ Document the new syntax of ## for the symbol with name "" interned
+ in obarray.
+
2012-08-02 Stephen J. Turnbull <stephen(a)xemacs.org>
* XEmacs 21.5.32 "habanero" is released.
diff -r dede3f658f8e3c3299aaf47157a0569abc28e231 -r febc025c4e0c6f95a8adc7995a072205e56cdf07 man/lispref/symbols.texi
--- a/man/lispref/symbols.texi
+++ b/man/lispref/symbols.texi
@@ -73,9 +73,15 @@
Since symbols are represented textually by their names, it is important
not to have two symbols with the same name. The Lisp reader ensures
this: every time it reads a symbol, it looks for an existing symbol with
-the specified name before it creates a new one. (In XEmacs Lisp,
-this lookup uses a hashing algorithm and an obarray; see @ref{Creating
-Symbols}.)
+the specified name before it creates a new one. In XEmacs Lisp,
+this lookup uses an hashing algorithm and an obarray; see @ref{Creating
+Symbols}. In Emacs Lisp, the symbol with the zero-length name has the
+special print syntax @code{##}:
+
+@example
+(intern "")
+ @result{} ##
+@end example
In normal usage, the function cell usually contains a function or
macro, as that is what the Lisp interpreter expects to see there
diff -r dede3f658f8e3c3299aaf47157a0569abc28e231 -r febc025c4e0c6f95a8adc7995a072205e56cdf07 src/ChangeLog
--- a/src/ChangeLog
+++ b/src/ChangeLog
@@ -1,3 +1,10 @@
+2012-08-06 Aidan Kehoe <kehoea(a)parhasard.net>
+
+ * lread.c (read1):
+ * print.c (print_symbol):
+ Adopt GNU's ## syntax for the interned symbol with the zero-length
+ name.
+
2012-08-02 Stephen J. Turnbull <stephen(a)xemacs.org>
* XEmacs 21.5.32 "habanero" is released.
diff -r dede3f658f8e3c3299aaf47157a0569abc28e231 -r febc025c4e0c6f95a8adc7995a072205e56cdf07 src/lread.c
--- a/src/lread.c
+++ b/src/lread.c
@@ -2654,6 +2654,8 @@
goto retry;
}
+ /* The interned symbol with the empty name. */
+ case '#': return intern ("");
case '$': return Vload_file_name_internal;
/* bit vectors */
case '*': return read_bit_vector (readcharfun);
diff -r dede3f658f8e3c3299aaf47157a0569abc28e231 -r febc025c4e0c6f95a8adc7995a072205e56cdf07 src/print.c
--- a/src/print.c
+++ b/src/print.c
@@ -2375,8 +2375,6 @@
print_symbol (Lisp_Object obj, Lisp_Object printcharfun, int escapeflag)
{
/* This function can GC */
- /* #### Bug!! (intern "") isn't printed in some distinguished way */
- /* #### (the reader also loses on it) */
Lisp_Object name = symbol_name (XSYMBOL (obj));
Bytecount size = XSTRING_LENGTH (name);
struct gcpro gcpro1, gcpro2;
@@ -2390,12 +2388,15 @@
GCPRO2 (obj, printcharfun);
- if (print_gensym)
+ if (print_gensym && !IN_OBARRAY (obj))
{
- if (!IN_OBARRAY (obj))
- {
- write_ascstring (printcharfun, "#:");
- }
+ write_ascstring (printcharfun, "#:");
+ }
+ else if (0 == size)
+ {
+ /* Compatible with GNU, but not with Common Lisp, where the syntax for
+ this symbol is ||. */
+ write_ascstring (printcharfun, "##");
}
/* Does it look like an integer or a float? */
Repository URL: https://bitbucket.org/xemacs/xemacs/
--
This is a commit notification from bitbucket.org. You are receiving
this because you have the service enabled, addressing the recipient of
this email.
_______________________________________________
XEmacs-Patches mailing list
XEmacs-Patches(a)xemacs.org
http://lists.xemacs.org/mailman/listinfo/xemacs-patches
[AC21.5] Improve (?) Help menu
12 years, 4 months
Stephen J. Turnbull
APPROVE COMMIT 21.5
Committed and pushed. Patch reprodued below for the record.
Stephen J. Turnbull writes:
> Hi all,
>
> As I proposed earlier, I've added PROBLEMS to the Help menu. I've
> also reorganized and renamed several other elements. The idea is to
> better reflect how users would use things. For example, PROBLEMS is
> grouped with "Bug Report" and "Installation" as well as a new submenu
> "Recent History" containing entries for Messages and lossage. (The
> logic for subordinating the specific history commands is that they're
> included in the bug report anyway.)
>
> Similarly a number of informational entries like NEWS, licensing, and
> so on are grouped in a new submenu "More about XEmacs".
>
> I also removed the ellipses which I don't think are appropriate for
> "About" (but maybe OK for Unix man) and are a bit ugly.
>
> I'm considering moving Unix manual to the "Info (Online Docs)"
> submenu. I guess that would be renamed to something like "Unix Man
> and Info Docs".
>
> Before I commit, I'd like everybody to take a look at a quick
> screenshot:
>
# HG changeset patch
# Parent 7c3e44003e0fb4331645030c7e230f1e588f5208
Reorganize Help menu.
diff -r 7c3e44003e0f lisp/ChangeLog
--- a/lisp/ChangeLog Fri Aug 03 02:15:20 2012 +0900
+++ b/lisp/ChangeLog Fri Aug 03 23:43:59 2012 +0900
@@ -1,3 +1,11 @@
+2012-08-03 Stephen J. Turnbull <stephen(a)xemacs.org>
+
+ * menubar-items.el (default-menubar): Reorganize.
+ Add PROBLEMS to toplevel.
+ New "More about XEmacs" submenu for NEWS, licensing, etc.
+ New "Recent History" menu for messages, lossage, etc.
+ Get rid of ugly and unexpressive ellipses.
+
2012-05-14 Aidan Kehoe <kehoea(a)parhasard.net>
* byte-optimize.el (byte-optimize-letX):
diff -r 7c3e44003e0f lisp/menubar-items.el
--- a/lisp/menubar-items.el Fri Aug 03 02:15:20 2012 +0900
+++ b/lisp/menubar-items.el Fri Aug 03 23:43:59 2012 +0900
@@ -1469,22 +1469,28 @@
nil ; the partition: menus after this are flushright
("%_Help"
- ["%_About XEmacs..." about-xemacs]
- ["%_Home Page (www.xemacs.org)" xemacs-www-page
-:active (fboundp 'browse-url)]
- ["What's %_New in XEmacs" view-emacs-news]
+ ["%_About XEmacs and Contributors" about-xemacs]
+ ("%_More about XEmacs"
+ ["What's %_New in XEmacs" view-emacs-news]
+ ["XEmacs %_License" describe-copying]
+ ["%_No Warranty" describe-no-warranty]
+ ["%_Obtaining the Latest Version" describe-distribution]
+ ["View %_Splash Screen" xemacs-splash-buffer]
+ ["%_Home Page (www.xemacs.org)" xemacs-www-page
+:active (fboundp 'browse-url)])
["B%_eta Info" describe-beta
:included (string-match "beta" emacs-version)]
"-----"
("%_Info (Online Docs)"
["%_Info Contents" (Info-goto-node "(dir)")]
+ ["%_How to Use Info" (Info-goto-node "(Info)")]
"-----"
["XEmacs %_User's Manual" (Info-goto-node "(XEmacs)")]
+ ["%_Getting Started with XEmacs" (Info-goto-node "(New-Users-Guide)")]
["XEmacs %_Lisp Reference Manual" (Info-goto-node "(Lispref)")]
["All About %_Packages" (Info-goto-node "(xemacs)Packages")]
- ["%_Getting Started with XEmacs" (Info-goto-node "(New-Users-Guide)")]
+ ["Find %_Packages" finder-by-keyword]
["%_XEmacs Internals Manual" (Info-goto-node "(Internals)")]
- ["%_How to Use Info" (Info-goto-node "(Info)")]
"-----"
["Lookup %_Key Sequence in User's Manual..."
Info-goto-emacs-key-command-node]
@@ -1554,20 +1560,15 @@
["Show %_Diagnosis for MULE" mule-diag :active nil]
["Show \"%_hello\" in Many Languages" view-hello-file]
)))
- ("%_Other"
- ["%_Current Installation Info" describe-installation
-:active (boundp 'Installation-string)]
- ["%_Known Problems" view-xemacs-problems ]
- ["%_Obtaining the Latest Version" describe-distribution]
- ["%_No Warranty" describe-no-warranty]
- ["XEmacs %_License" describe-copying]
- ["Find %_Packages" finder-by-keyword]
- ["View %_Splash Screen" xemacs-splash-buffer]
- ["%_Unix Manual..." manual-entry])
+ ["%_Unix Manual" manual-entry]
"-----"
- ["Recent %_Messages" (view-lossage t)]
- ["Recent %_Keystrokes" view-lossage]
- ["Recent %_Warnings" view-warnings]
+ ["%_Current Installation Info" describe-installation
+:active (boundp 'Installation-string)]
+ ["%_Known Problems" view-xemacs-problems ]
+ ("Recent History"
+ ["%_Messages" (view-lossage t)]
+ ["%_Keystrokes" view-lossage]
+ ["%_Warnings" view-warnings])
["Send %_Bug Report..." report-xemacs-bug
:active (fboundp 'report-xemacs-bug)]))
"The default XEmacs menubar.
_______________________________________________
XEmacs-Patches mailing list
XEmacs-Patches(a)xemacs.org
http://lists.xemacs.org/mailman/listinfo/xemacs-patches
commit/XEmacs: stephen_at_xemacs: Sanity check package roots in configure.
12 years, 4 months
Bitbucket
1 new commit in XEmacs:
https://bitbucket.org/xemacs/xemacs/changeset/dede3f658f8e/
changeset: dede3f658f8e
user: stephen_at_xemacs
date: 2012-08-04 16:26:26
summary: Sanity check package roots in configure.
affected #: 3 files
diff -r 4e54445e0c7d2e0744b998ce9499beb5fae92a7a -r dede3f658f8e3c3299aaf47157a0569abc28e231 ChangeLog
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,10 @@
+2012-08-04 Stephen J. Turnbull <stephen(a)xemacs.org>
+
+ * configure.ac (Package Search): New Installation section.
+ Warn about missing system package hierarchies.
+
+ * configure: Regenerate.
+
2012-08-02 Stephen J. Turnbull <stephen(a)xemacs.org>
* XEmacs 21.5.32 "habanero" is released.
diff -r 4e54445e0c7d2e0744b998ce9499beb5fae92a7a -r dede3f658f8e3c3299aaf47157a0569abc28e231 configure
--- a/configure
+++ b/configure
@@ -21156,6 +21156,70 @@
- Consider configuring with --with-pdump." ;;
esac
+
+echo "
+Package Search (a 'root' contains '{xemacs,mule,site}-packages'):"
+
+if test -n "$with_early_packages"; then
+ case "$with_early_packages" in *:* ) case "$opsys" in *cygwin* )
+ echo " WARNING: Paths containing spaces will be misinterpreted." ;;
+esac
+with_early_packages="`echo '' $with_early_packages | sed -e 's/^ //' -e 's/:/ /g'`";; esac
+ echo " User package roots: $with_early_packages"
+else
+ echo " User package roots: ~/.xemacs"
+fi
+
+with_late_packages_expanded=$with_late_packages
+while true; do
+ case "$with_late_packages_expanded" in
+ *\$* ) eval "with_late_packages_expanded=$with_late_packages_expanded" ;;
+ *) break ;;
+ esac
+done
+case "$with_late_packages_expanded" in *:* ) case "$opsys" in *cygwin* )
+ echo " WARNING: Paths containing spaces will be misinterpreted." ;;
+esac
+with_late_packages_expanded="`echo '' $with_late_packages_expanded | sed -e 's/^ //' -e 's/:/ /g'`";; esac
+echo " System package roots: $with_late_packages_expanded"
+for path in $with_late_packages_expanded; do
+ if test ! -d $path; then
+ echo " WARNING: $path was specified, but doesn't exist."
+ echo " WARNING: XEmacs functionality will be noticably limited until"
+ echo " WARNING: some packages are installed."
+ elif test ! -d "$path/xemacs-packages" \
+ -a ! -d "$path/mule-packages" \
+ -a ! -d "$path/site-packages"; then
+ echo " WARNING: No packages found in $path."
+ echo " WARNING: XEmacs functionality will be noticably limited until"
+ echo " WARNING: some packages are installed."
+ fi
+done
+if test -z "$with_late_packages"; then
+ echo " XEmacs BUG: with_late_packages is unset. Please report this!"
+fi
+
+if test -n "$with_last_packages"; then
+ case "$with_last_packages" in *:* ) case "$opsys" in *cygwin* )
+ echo " WARNING: Paths containing spaces will be misinterpreted." ;;
+esac
+with_last_packages="`echo '' $with_last_packages | sed -e 's/^ //' -e 's/:/ /g'`";; esac
+ echo " Legacy package roots: $with_last_packages"
+ for path in $with_last_packages; do
+ if test ! -d $path; then
+ echo " WARNING: $path was specified, but doesn't exist."
+ echo " WARNING: If you don't need this setting, it is recommended"
+ echo " WARNING: that you not use it."
+ elif test ! -d "$path/xemacs-packages" \
+ -a ! -d "$path/mule-packages" \
+ -a ! -d "$path/site-packages"; then
+ echo " WARNING: No packages found in $path."
+ echo " WARNING: If you don't need this setting, it is recommended"
+ echo " WARNING: that you not use it."
+ fi
+ done
+fi
+
echo "
Window System:"
if test "$with_msw" = "yes"; then
diff -r 4e54445e0c7d2e0744b998ce9499beb5fae92a7a -r dede3f658f8e3c3299aaf47157a0569abc28e231 configure.ac
--- a/configure.ac
+++ b/configure.ac
@@ -5680,6 +5680,63 @@
- Consider configuring with --with-pdump." ;;
esac
+define(COLON_TO_SPACE_WARN,
+ [case "$[$1]" in *:* [)] dnl
+case "$opsys" in *cygwin* [)]
+ echo " WARNING: Paths containing spaces will be misinterpreted." ;;
+esac
+[$1]="`echo '' $[$1] | sed -e 's/^ //' -e 's/:/ /g'`";; esac])dnl
+
+echo "
+Package Search (a 'root' contains '{xemacs,mule,site}-packages'):"
+
+if test -n "$with_early_packages"; then
+ COLON_TO_SPACE_WARN(with_early_packages)
+ echo " User package roots: $with_early_packages"
+else
+ echo " User package roots: ~/.xemacs"
+fi
+
+dnl Unlike the others, with_late_packages gets a non-null default.
+XE_EXPAND_VARIABLE(with_late_packages,with_late_packages_expanded)
+COLON_TO_SPACE_WARN(with_late_packages_expanded)
+echo " System package roots: $with_late_packages_expanded"
+for path in $with_late_packages_expanded; do
+ if test ! -d $path; then
+ echo " WARNING: $path was specified, but doesn't exist."
+ echo " WARNING: XEmacs functionality will be noticably limited until"
+ echo " WARNING: some packages are installed."
+ elif test ! -d "$path/xemacs-packages" \
+ -a ! -d "$path/mule-packages" \
+ -a ! -d "$path/site-packages"; then
+ echo " WARNING: No packages found in $path."
+ echo " WARNING: XEmacs functionality will be noticably limited until"
+ echo " WARNING: some packages are installed."
+ fi
+done
+dnl #### Shouldn't need this.
+if test -z "$with_late_packages"; then
+ echo " XEmacs BUG: with_late_packages is unset. Please report this!"
+fi
+
+if test -n "$with_last_packages"; then
+ COLON_TO_SPACE_WARN(with_last_packages)
+ echo " Legacy package roots: $with_last_packages"
+ for path in $with_last_packages; do
+ if test ! -d $path; then
+ echo " WARNING: $path was specified, but doesn't exist."
+ echo " WARNING: If you don't need this setting, it is recommended"
+ echo " WARNING: that you not use it."
+ elif test ! -d "$path/xemacs-packages" \
+ -a ! -d "$path/mule-packages" \
+ -a ! -d "$path/site-packages"; then
+ echo " WARNING: No packages found in $path."
+ echo " WARNING: If you don't need this setting, it is recommended"
+ echo " WARNING: that you not use it."
+ fi
+ done
+fi
+
echo "
Window System:"
if test "$with_msw" = "yes"; then
Repository URL: https://bitbucket.org/xemacs/xemacs/
--
This is a commit notification from bitbucket.org. You are receiving
this because you have the service enabled, addressing the recipient of
this email.
_______________________________________________
XEmacs-Patches mailing list
XEmacs-Patches(a)xemacs.org
http://lists.xemacs.org/mailman/listinfo/xemacs-patches