[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Emacs-diffs] xwidget_mvp 8cffeb5 2/3: merge master
From: |
Joakim Verona |
Subject: |
[Emacs-diffs] xwidget_mvp 8cffeb5 2/3: merge master |
Date: |
Thu, 26 Feb 2015 13:48:24 +0000 |
branch: xwidget_mvp
commit 8cffeb5e4d548398c5c8c26e191e6f237c47cf2b
Merge: f3644c0 7a77ed9
Author: Joakim Verona <address@hidden>
Commit: Joakim Verona <address@hidden>
merge master
---
ChangeLog | 16 +++
doc/misc/ChangeLog | 4 +
doc/misc/auth.texi | 4 +-
doc/misc/texinfo.tex | 55 +++++++--
etc/NEWS | 5 +
etc/TODO | 15 +++
leim/ChangeLog | 7 +
leim/Makefile.in | 2 +-
lib-src/ChangeLog | 17 +++
lib-src/Makefile.in | 2 +-
lib-src/etags.c | 8 +-
lib-src/make-docfile.c | 2 +-
lib/getdtablesize.c | 35 +++---
lib/getopt.c | 52 ++++++--
lib/signal.in.h | 8 +-
lib/tempname.c | 118 ++++++++++--------
lib/tempname.h | 15 +++
lisp/ChangeLog | 173 ++++++++++++++++++++++++--
lisp/Makefile.in | 2 +-
lisp/autorevert.el | 115 +++++++++++------
lisp/bindings.el | 2 +-
lisp/calendar/solar.el | 22 +---
lisp/cedet/ChangeLog | 7 +
lisp/cedet/semantic/doc.el | 9 +-
lisp/cedet/srecode/document.el | 2 +-
lisp/comint.el | 6 +
lisp/dom.el | 10 ++
lisp/emacs-lisp/cl-generic.el | 2 +-
lisp/emacs-lisp/cl-macs.el | 41 +++----
lisp/emacs-lisp/eieio-opt.el | 1 +
lisp/emacs-lisp/eieio.el | 2 +-
lisp/emacs-lisp/macroexp.el | 19 ++--
lisp/emacs-lisp/package.el | 13 +-
lisp/emacs-lisp/pcase.el | 2 +-
lisp/emacs-lisp/smie.el | 7 +-
lisp/filecache.el | 3 +-
lisp/files.el | 9 +-
lisp/gnus/ChangeLog | 19 +++-
lisp/gnus/gnus-art.el | 2 +-
lisp/gnus/mailcap.el | 5 +
lisp/gnus/nnimap.el | 7 +-
lisp/mail/rmailsum.el | 9 +-
lisp/net/sasl-scram-rfc.el | 47 ++++----
lisp/net/sasl.el | 2 +-
lisp/org/ChangeLog | 2 +-
lisp/progmodes/f90.el | 25 +++-
lisp/progmodes/verilog-mode.el | 37 +++---
lisp/progmodes/vhdl-mode.el | 273 +++++++++++++++++++++++++++++++++-------
lisp/progmodes/xref.el | 23 ++++
lisp/url/ChangeLog | 5 +
m4/dup2.m4 | 76 ++++++------
m4/fcntl.m4 | 52 ++++----
m4/getdtablesize.m4 | 6 +-
src/ChangeLog | 74 +++++++++++
src/buffer.c | 8 +-
src/bytecode.c | 8 +-
src/callint.c | 8 +-
src/callproc.c | 2 +-
src/charset.c | 4 +-
src/coding.c | 8 +-
src/editfns.c | 3 +-
src/emacs.c | 8 +-
src/fns.c | 2 +-
src/frame.c | 4 +-
src/ftfont.c | 1 -
src/keyboard.c | 6 +-
src/keymap.c | 4 +-
src/lisp.h | 6 +-
src/lread.c | 11 +--
src/minibuf.c | 6 +-
src/nsfns.m | 88 +++++++++++++-
src/sysstdio.h | 29 +++++
src/textprop.c | 3 +-
src/w32fns.c | 12 +-
src/w32font.c | 8 +-
src/w32inevt.c | 2 +-
src/w32term.c | 2 +-
src/xdisp.c | 5 +-
src/xfaces.c | 2 +-
src/xfns.c | 5 +-
src/xml.c | 3 +-
test/ChangeLog | 10 ++
test/automated/f90.el | 16 +++
test/automated/tramp-tests.el | 5 +-
test/automated/vc-tests.el | 4 +-
test/cedet/srecode-tests.el | 2 +-
86 files changed, 1303 insertions(+), 458 deletions(-)
diff --git a/ChangeLog b/ChangeLog
index 4365668..41bff0e 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,19 @@
+2015-02-21 Paul Eggert <address@hidden>
+
+ Merge from gnulib
+ * lib/getdtablesize.c, lib/getopt.c, lib/signal.in.h, lib/tempname.c:
+ * lib/tempname.h, m4/dup2.m4, m4/fcntl.m4, m4/getdtablesize.m4:
+ Update from gnulib, incorporating:
+ 2015-02-20 getdtablesize: port better for Android
+ 2015-02-19 fcntl: Fix cross compiling
+ 2015-02-18 dup2, fcntl: cross-compile better for Android
+ 2015-02-18 getopt: don't crash on memory exhaustion
+ 2015-02-17 tempname: allow compilation with C++ (trivial)
+ 2015-02-17 dup2, fcntl: port to AIX
+ 2015-02-16 getdtablesize, dup2, fcntl: port to Android
+ 2015-02-11 getdtablesize, signal_h: Fix Android build
+ 2015-02-11 maint: various whitespace cleanups in tempname
+
2015-02-13 Jan Djärv <address@hidden>
* configure.ac: Set locallisppath to empty for NS self contained,
diff --git a/doc/misc/ChangeLog b/doc/misc/ChangeLog
index c796b75..d04a8bb 100644
--- a/doc/misc/ChangeLog
+++ b/doc/misc/ChangeLog
@@ -1,3 +1,7 @@
+2015-02-21 Paul Eggert <address@hidden>
+
+ * texinfo.tex: Update from gnulib.
+
2015-02-10 Lars Ingebrigtsen <address@hidden>
* eww.texi (Basics): Mention eww-toggle-fonts.
diff --git a/doc/misc/auth.texi b/doc/misc/auth.texi
index 7c0254a..8dbde4d 100644
--- a/doc/misc/auth.texi
+++ b/doc/misc/auth.texi
@@ -247,8 +247,8 @@ names:
Your netrc entries will then be:
@example
-machine gmail login account@@gmail.com password "accountpassword" port imap
-machine gmail2 login account2@@gmail.com password "account2password" port imap
+machine gmail login account@@gmail.com password "account password" port imap
+machine gmail2 login account2@@gmail.com password "account2 password" port imap
@end example
@node Secret Service API
diff --git a/doc/misc/texinfo.tex b/doc/misc/texinfo.tex
index 96b212d..8236d7d 100644
--- a/doc/misc/texinfo.tex
+++ b/doc/misc/texinfo.tex
@@ -3,7 +3,7 @@
% Load plain if necessary, i.e., if running under initex.
\expandafter\ifx\csname fmtname\endcsname\relax\input plain\fi
%
-\def\texinfoversion{2015-01-31.10}
+\def\texinfoversion{2015-02-05.16}
%
% Copyright 1985, 1986, 1988, 1990, 1991, 1992, 1993, 1994, 1995,
% 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006,
@@ -4489,7 +4489,6 @@ end
% Called from \indexdummies and \atdummies.
%
\def\commondummies{%
- %
% \definedummyword defines \#1 as \string\#1\space, thus effectively
% preventing its expansion. This is used only for control words,
% not control letters, because the \space would be incorrect for
@@ -4566,6 +4565,7 @@ end
\definedummyword\guilsinglright
\definedummyword\lbracechar
\definedummyword\leq
+ \definedummyword\mathopsup
\definedummyword\minus
\definedummyword\ogonek
\definedummyword\pounds
@@ -4579,6 +4579,8 @@ end
\definedummyword\quotesinglbase
\definedummyword\rbracechar
\definedummyword\result
+ \definedummyword\sub
+ \definedummyword\sup
\definedummyword\textdegree
%
% We want to disable all macros so that they are not expanded by \write.
@@ -4653,6 +4655,7 @@ end
\definedummyword\samp
\definedummyword\strong
\definedummyword\tie
+ \definedummyword\U
\definedummyword\uref
\definedummyword\url
\definedummyword\var
@@ -8335,14 +8338,7 @@ end
\catcode`\\=\other
%
% Make the characters 128-255 be printing characters.
- {%
- \count1=128
- \def\loop{%
- \catcode\count1=\other
- \advance\count1 by 1
- \ifnum \count1<256 \loop \fi
- }%
- }%
+ {\setnonasciicharscatcodenonglobal\other}%
%
% @ is our escape character in .aux files, and we need braces.
\catcode`\{=1
@@ -9831,15 +9827,51 @@ directory should work if nowhere else does.}
\DeclareUnicodeCharacter{2261}{\equiv}
}% end of \utfeightchardefs
-
% US-ASCII character definitions.
\def\asciichardefs{% nothing need be done
\relax
}
+% Latin1 (ISO-8859-1) character definitions.
+\def\nonasciistringdefs{%
+ \setnonasciicharscatcode\active
+ \def\defstringchar##1{\def##1{\string##1}}%
+ \defstringchar^^a0\defstringchar^^a1\defstringchar^^a2\defstringchar^^a3%
+ \defstringchar^^a4\defstringchar^^a5\defstringchar^^a6\defstringchar^^a7%
+ \defstringchar^^a8\defstringchar^^a9\defstringchar^^aa\defstringchar^^ab%
+ \defstringchar^^ac\defstringchar^^ad\defstringchar^^ae\defstringchar^^af%
+ %
+ \defstringchar^^b0\defstringchar^^b1\defstringchar^^b2\defstringchar^^b3%
+ \defstringchar^^b4\defstringchar^^b5\defstringchar^^b6\defstringchar^^b7%
+ \defstringchar^^b8\defstringchar^^b9\defstringchar^^ba\defstringchar^^bb%
+ \defstringchar^^bc\defstringchar^^bd\defstringchar^^be\defstringchar^^bf%
+ %
+ \defstringchar^^c0\defstringchar^^c1\defstringchar^^c2\defstringchar^^c3%
+ \defstringchar^^c4\defstringchar^^c5\defstringchar^^c6\defstringchar^^c7%
+ \defstringchar^^c8\defstringchar^^c9\defstringchar^^ca\defstringchar^^cb%
+ \defstringchar^^cc\defstringchar^^cd\defstringchar^^ce\defstringchar^^cf%
+ %
+ \defstringchar^^d0\defstringchar^^d1\defstringchar^^d2\defstringchar^^d3%
+ \defstringchar^^d4\defstringchar^^d5\defstringchar^^d6\defstringchar^^d7%
+ \defstringchar^^d8\defstringchar^^d9\defstringchar^^da\defstringchar^^db%
+ \defstringchar^^dc\defstringchar^^dd\defstringchar^^de\defstringchar^^df%
+ %
+ \defstringchar^^e0\defstringchar^^e1\defstringchar^^e2\defstringchar^^e3%
+ \defstringchar^^e4\defstringchar^^e5\defstringchar^^e6\defstringchar^^e7%
+ \defstringchar^^e8\defstringchar^^e9\defstringchar^^ea\defstringchar^^eb%
+ \defstringchar^^ec\defstringchar^^ed\defstringchar^^ee\defstringchar^^ef%
+ %
+ \defstringchar^^f0\defstringchar^^f1\defstringchar^^f2\defstringchar^^f3%
+ \defstringchar^^f4\defstringchar^^f5\defstringchar^^f6\defstringchar^^f7%
+ \defstringchar^^f8\defstringchar^^f9\defstringchar^^fa\defstringchar^^fb%
+ \defstringchar^^fc\defstringchar^^fd\defstringchar^^fe\defstringchar^^ff%
+}
+
+
% define all the unicode characters we know about, for the sake of @U.
\utfeightchardefs
+
% Make non-ASCII characters printable again for compatibility with
% existing Texinfo documents that may use them, even without declaring a
% document encoding.
@@ -10193,6 +10225,7 @@ directory should work if nowhere else does.}
%
address@hidden = @active
@address@hidden
+ @nonasciistringdefs
@address@hidden
@let"address@hidden
@address@hidden %$ font-lock fix
diff --git a/etc/NEWS b/etc/NEWS
index f359f91..3f88d3d 100644
--- a/etc/NEWS
+++ b/etc/NEWS
@@ -467,6 +467,8 @@ allows to customize this.
*** Two new faces `compare-windows-removed' and `compare-windows-added'
replace the obsolete face `compare-windows'.
+** VHDL mode supports VHDL'08.
+
** Calculator: decimal display mode uses "," groups, so it's more
fitting for use in money calculations; factorial works with
non-integer inputs.
@@ -556,6 +558,9 @@ command line's password prompt.
** tar-mode: new `tar-new-entry' command, allowing for new members to
be added to the archive.
+** Autorevert: dired buffers are also auto-reverted via file
+notifications, if Emacs is compiled with file notification support.
+
** Obsolete packages
---
diff --git a/etc/TODO b/etc/TODO
index 68a3792..79996e2 100644
--- a/etc/TODO
+++ b/etc/TODO
@@ -102,6 +102,21 @@ make it.
"FOO-tab -> ?\FOO-\t", "uppercase -> lowercase", "[fringe KEY...] ->
[KEY]", "H-FOO -> M-FOO", "C-x C-y FOO -> H-FOO", ...
+* Things related to elpa.gnu.org.
+
+** Move idlwave to elpa.gnu.org.
+Need to sync up the Emacs and external versions.
+See <http://lists.gnu.org/archive/html/emacs-devel/2014-07/msg00008.html>
+
+** Move Org mode to elpa.gnu.org.
+See <http://lists.gnu.org/archive/html/emacs-devel/2014-08/msg00300.html>
+<http://lists.gnu.org/archive/html/emacs-devel/2014-11/msg00257.html>
+
+** Move verilog-mode to elpa.gnu.org.
+See <http://lists.gnu.org/archive/html/emacs-devel/2015-02/msg01180.html>
+
+** Move vhdl-mode to elpa.gnu.org.
+See <http://lists.gnu.org/archive/html/emacs-devel/2015-02/msg01180.html>
* Simple tasks. These don't require much Emacs knowledge, they are
suitable for anyone from beginners to experts.
diff --git a/leim/ChangeLog b/leim/ChangeLog
index 4bda9a6..a8dbca2 100644
--- a/leim/ChangeLog
+++ b/leim/ChangeLog
@@ -1,3 +1,10 @@
+2015-02-23 Pete Williamson <address@hidden> (tiny change)
+
+ Use ${EXEEXT} more uniformly in makefiles
+ When porting Emacs to run on NaCl, we need to make sure that we always
+ call it with the proper extension (.nexe in this case) during the build.
+ * Makefile.in (EMACS): Append ${EXEEXT}.
+
2015-01-04 Paul Eggert <address@hidden>
Less 'make' chatter for leim
diff --git a/leim/Makefile.in b/leim/Makefile.in
index 573acf7..2ec03db 100644
--- a/leim/Makefile.in
+++ b/leim/Makefile.in
@@ -47,7 +47,7 @@ unexport EMACSDATA EMACSDOC EMACSPATH
# Which Emacs to use to convert TIT files to Emacs Lisp files,
# and generate the file leim-list.el.
-EMACS = ../src/emacs
+EMACS = ../src/emacs${EXEEXT}
# How to run Emacs.
# Prevent any setting of EMACSLOADPATH in user environment causing problems.
diff --git a/lib-src/ChangeLog b/lib-src/ChangeLog
index 534d253..5c55bce 100644
--- a/lib-src/ChangeLog
+++ b/lib-src/ChangeLog
@@ -1,3 +1,20 @@
+2015-02-23 Pete Williamson <address@hidden> (tiny change)
+
+ Use ${EXEEXT} more uniformly in makefiles
+ * Makefile.in (EMACS): Append ${EXEEXT}.
+
+2015-02-20 Paul Eggert <address@hidden>
+
+ Simplify binary I/O configuration
+ * etags.c: Include <sysstdio.h> rather than <stdio.h>.
+ (process_file_name, analyze_regex): Use FOPEN_BINARY rather than
+ hard-coded "b".
+
+2015-02-19 Eli Zaretskii <address@hidden>
+
+ * etags.c (process_file_name) [!DOS_NT]: Use "r", not "rb" in the
+ call to 'popen'. (Bug#19735)
+
2015-02-13 Paul Eggert <address@hidden>
Better support for future plugins
diff --git a/lib-src/Makefile.in b/lib-src/Makefile.in
index d2705e7..6b5d379 100644
--- a/lib-src/Makefile.in
+++ b/lib-src/Makefile.in
@@ -21,7 +21,7 @@
SHELL = @SHELL@
# Following ../lisp/Makefile.in.
-EMACS = ../src/emacs
+EMACS = ../src/emacs${EXEEXT}
EMACSOPT = -batch --no-site-file --no-site-lisp
# ==================== Things `configure' will edit ====================
diff --git a/lib-src/etags.c b/lib-src/etags.c
index dc2ced5..7f18755 100644
--- a/lib-src/etags.c
+++ b/lib-src/etags.c
@@ -122,7 +122,7 @@ char pot_etags_version[] = "@(#) pot revision number is
17.38.1.4";
#include <stdarg.h>
#include <stdlib.h>
#include <string.h>
-#include <stdio.h>
+#include <sysstdio.h>
#include <ctype.h>
#include <errno.h>
#include <sys/types.h>
@@ -1532,11 +1532,11 @@ process_file_name (char *file, language *lang)
if (real_name == compressed_name)
{
char *cmd = concat (compr->command, " ", real_name);
- inf = popen (cmd, "rb");
+ inf = popen (cmd, "r" FOPEN_BINARY);
free (cmd);
}
else
- inf = fopen (real_name, "rb");
+ inf = fopen (real_name, "r" FOPEN_BINARY);
if (inf == NULL)
{
perror (real_name);
@@ -5600,7 +5600,7 @@ analyze_regex (char *regex_arg)
char *regexfile = regex_arg + 1;
/* regexfile is a file containing regexps, one per line. */
- regexfp = fopen (regexfile, "rb");
+ regexfp = fopen (regexfile, "r" FOPEN_BINARY);
if (regexfp == NULL)
pfatal (regexfile);
linebuffer_init (®exbuf);
diff --git a/lib-src/make-docfile.c b/lib-src/make-docfile.c
index a7943e3..bada8df 100644
--- a/lib-src/make-docfile.c
+++ b/lib-src/make-docfile.c
@@ -743,7 +743,7 @@ write_globals (void)
puts ("#endif");
puts ("#define Qnil builtin_lisp_symbol (0)");
- puts ("#if DEFINE_NONNIL_Q_SYMBOL_MACROS");
+ puts ("#if DEFINE_NON_NIL_Q_SYMBOL_MACROS");
num_symbols = 0;
for (int i = 0; i < num_globals; i++)
if (globals[i].type == SYMBOL && num_symbols++ != 0)
diff --git a/lib/getdtablesize.c b/lib/getdtablesize.c
index 59b9736..bad45f7 100644
--- a/lib/getdtablesize.c
+++ b/lib/getdtablesize.c
@@ -84,32 +84,31 @@ getdtablesize (void)
return dtablesize;
}
-#elif HAVE_GETDTABLESIZE
+#else
+# include <limits.h>
# include <sys/resource.h>
-# undef getdtablesize
+
+# ifdef __CYGWIN__
+ /* Cygwin 1.7.25 auto-increases the RLIMIT_NOFILE soft limit until it
+ hits the compile-time constant hard limit of 3200. We might as
+ well just report the hard limit. */
+# define rlim_cur rlim_max
+# endif
int
-rpl_getdtablesize(void)
+getdtablesize (void)
{
- /* To date, this replacement is only compiled for Cygwin 1.7.25,
- which auto-increased the RLIMIT_NOFILE soft limit until it
- hits the compile-time constant hard limit of 3200. Although
- that version of cygwin supported a child process inheriting
- a smaller soft limit, the smaller limit is not enforced, so
- we might as well just report the hard limit. */
struct rlimit lim;
- if (!getrlimit (RLIMIT_NOFILE, &lim) && lim.rlim_max != RLIM_INFINITY)
- return lim.rlim_max;
- return getdtablesize ();
-}
-#elif defined _SC_OPEN_MAX
+ if (getrlimit (RLIMIT_NOFILE, &lim) == 0
+ && 0 <= lim.rlim_cur && lim.rlim_cur <= INT_MAX
+ && lim.rlim_cur != RLIM_INFINITY
+ && lim.rlim_cur != RLIM_SAVED_CUR
+ && lim.rlim_cur != RLIM_SAVED_MAX)
+ return lim.rlim_cur;
-int
-getdtablesize (void)
-{
- return sysconf (_SC_OPEN_MAX);
+ return INT_MAX;
}
#endif
diff --git a/lib/getopt.c b/lib/getopt.c
index 3b9c585..212cbf7 100644
--- a/lib/getopt.c
+++ b/lib/getopt.c
@@ -487,7 +487,20 @@ _getopt_internal_r (int argc, char **argv, const char
*optstring,
const struct option *p;
struct option_list *next;
} *ambig_list = NULL;
+#ifdef _LIBC
+/* malloc() not used for _LIBC to simplify failure messages. */
+# define free_option_list(l)
+#else
+# define free_option_list(l) \
+ while (l != NULL) \
+ { \
+ struct option_list *pn = l->next; \
+ free (l); \
+ l = pn; \
+ }
+#endif
int exact = 0;
+ int ambig = 0;
int indfound = -1;
int option_index;
@@ -514,22 +527,37 @@ _getopt_internal_r (int argc, char **argv, const char
*optstring,
pfound = p;
indfound = option_index;
}
+ else if (ambig)
+ ; /* Taking simpler path to handling ambiguities. */
else if (long_only
|| pfound->has_arg != p->has_arg
|| pfound->flag != p->flag
|| pfound->val != p->val)
{
/* Second or later nonexact match found. */
+#ifdef _LIBC
+ struct option_list *newp = alloca (sizeof (*newp));
+#else
struct option_list *newp = malloc (sizeof (*newp));
- newp->p = p;
- newp->next = ambig_list;
- ambig_list = newp;
+ if (newp == NULL)
+ {
+ free_option_list (ambig_list);
+ ambig_list = NULL;
+ ambig = 1; /* Use simpler fallback message. */
+ }
+ else
+#endif
+ {
+ newp->p = p;
+ newp->next = ambig_list;
+ ambig_list = newp;
+ }
}
}
- if (ambig_list != NULL && !exact)
+ if ((ambig || ambig_list) && !exact)
{
- if (print_errors)
+ if (print_errors && ambig_list)
{
struct option_list first;
first.p = pfound;
@@ -585,18 +613,20 @@ _getopt_internal_r (int argc, char **argv, const char
*optstring,
fputc ('\n', stderr);
#endif
}
+ else if (print_errors && ambig)
+ {
+ fprintf (stderr,
+ _("%s: option '%s' is ambiguous\n"),
+ argv[0], argv[d->optind]);
+ }
d->__nextchar += strlen (d->__nextchar);
d->optind++;
d->optopt = 0;
+ free_option_list (ambig_list);
return '?';
}
- while (ambig_list != NULL)
- {
- struct option_list *pn = ambig_list->next;
- free (ambig_list);
- ambig_list = pn;
- }
+ free_option_list (ambig_list);
if (pfound != NULL)
{
diff --git a/lib/signal.in.h b/lib/signal.in.h
index 0f2ff5a..265b72a 100644
--- a/lib/signal.in.h
+++ b/lib/signal.in.h
@@ -55,11 +55,13 @@
#ifndef address@hidden@_SIGNAL_H
#define address@hidden@_SIGNAL_H
-/* Mac OS X 10.3, FreeBSD 6.4, OpenBSD 3.8, OSF/1 4.0, Solaris 2.6 declare
- pthread_sigmask in <pthread.h>, not in <signal.h>.
+/* Mac OS X 10.3, FreeBSD 6.4, OpenBSD 3.8, OSF/1 4.0, Solaris 2.6, Android
+ declare pthread_sigmask in <pthread.h>, not in <signal.h>.
But avoid namespace pollution on glibc systems.*/
#if (@GNULIB_PTHREAD_SIGMASK@ || defined GNULIB_POSIXCHECK) \
- && ((defined __APPLE__ && defined __MACH__) || defined __FreeBSD__ ||
defined __OpenBSD__ || defined __osf__ || defined __sun) \
+ && ((defined __APPLE__ && defined __MACH__) \
+ || defined __FreeBSD__ || defined __OpenBSD__ || defined __osf__ \
+ || defined __sun || defined __ANDROID__) \
&& ! defined __GLIBC__
# include <pthread.h>
#endif
diff --git a/lib/tempname.c b/lib/tempname.c
index 088b224..8e6d26c 100644
--- a/lib/tempname.c
+++ b/lib/tempname.c
@@ -62,6 +62,7 @@
# define struct_stat64 struct stat64
#else
# define struct_stat64 struct stat
+# define __try_tempname try_tempname
# define __gen_tempname gen_tempname
# define __getpid getpid
# define __gettimeofday gettimeofday
@@ -176,21 +177,9 @@ __path_search (char *tmpl, size_t tmpl_len, const char
*dir, const char *pfx,
static const char letters[] =
"abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789";
-/* Generate a temporary file name based on TMPL. TMPL must match the
- rules for mk[s]temp (i.e. end in "XXXXXX", possibly with a suffix).
- The name constructed does not exist at the time of the call to
- __gen_tempname. TMPL is overwritten with the result.
-
- KIND may be one of:
- __GT_NOCREATE: simply verify that the name does not exist
- at the time of the call.
- __GT_FILE: create the file using open(O_CREAT|O_EXCL)
- and return a read-write fd. The file is mode 0600.
- __GT_DIR: create a directory, which will be mode 0700.
-
- We use a clever algorithm to get hard-to-predict names. */
int
-__gen_tempname (char *tmpl, int suffixlen, int flags, int kind)
+__try_tempname (char *tmpl, int suffixlen, void *args,
+ int (*tryfunc) (char *, void *))
{
int len;
char *XXXXXX;
@@ -199,7 +188,6 @@ __gen_tempname (char *tmpl, int suffixlen, int flags, int
kind)
unsigned int count;
int fd = -1;
int save_errno = errno;
- struct_stat64 st;
/* A lower bound on the number of temporary files to attempt to
generate. The maximum total number of temporary file names that
@@ -256,41 +244,7 @@ __gen_tempname (char *tmpl, int suffixlen, int flags, int
kind)
v /= 62;
XXXXXX[5] = letters[v % 62];
- switch (kind)
- {
- case __GT_FILE:
- fd = __open (tmpl,
- (flags & ~O_ACCMODE)
- | O_RDWR | O_CREAT | O_EXCL, S_IRUSR | S_IWUSR);
- break;
-
- case __GT_DIR:
- fd = __mkdir (tmpl, S_IRUSR | S_IWUSR | S_IXUSR);
- break;
-
- case __GT_NOCREATE:
- /* This case is backward from the other three. __gen_tempname
- succeeds if __xstat fails because the name does not exist.
- Note the continue to bypass the common logic at the bottom
- of the loop. */
- if (__lxstat64 (_STAT_VER, tmpl, &st) < 0)
- {
- if (errno == ENOENT)
- {
- __set_errno (save_errno);
- return 0;
- }
- else
- /* Give up now. */
- return -1;
- }
- continue;
-
- default:
- assert (! "invalid KIND in __gen_tempname");
- abort ();
- }
-
+ fd = tryfunc (tmpl, args);
if (fd >= 0)
{
__set_errno (save_errno);
@@ -304,3 +258,67 @@ __gen_tempname (char *tmpl, int suffixlen, int flags, int
kind)
__set_errno (EEXIST);
return -1;
}
+
+static int
+try_file (char *tmpl, void *flags)
+{
+ int *openflags = flags;
+ return __open (tmpl,
+ (*openflags & ~O_ACCMODE)
+ | O_RDWR | O_CREAT | O_EXCL, S_IRUSR | S_IWUSR);
+}
+
+static int
+try_dir (char *tmpl, void *flags)
+{
+ return __mkdir (tmpl, S_IRUSR | S_IWUSR | S_IXUSR);
+}
+
+static int
+try_nocreate (char *tmpl, void *flags)
+{
+ struct_stat64 st;
+
+ if (__lxstat64 (_STAT_VER, tmpl, &st) == 0)
+ __set_errno (EEXIST);
+ return errno == ENOENT ? 0 : -1;
+}
+
+/* Generate a temporary file name based on TMPL. TMPL must match the
+ rules for mk[s]temp (i.e. end in "XXXXXX", possibly with a suffix).
+ The name constructed does not exist at the time of the call to
+ __gen_tempname. TMPL is overwritten with the result.
+
+ KIND may be one of:
+ __GT_NOCREATE: simply verify that the name does not exist
+ at the time of the call.
+ __GT_FILE: create the file using open(O_CREAT|O_EXCL)
+ and return a read-write fd. The file is mode 0600.
+ __GT_DIR: create a directory, which will be mode 0700.
+
+ We use a clever algorithm to get hard-to-predict names. */
+int
+__gen_tempname (char *tmpl, int suffixlen, int flags, int kind)
+{
+ int (*tryfunc) (char *, void *);
+
+ switch (kind)
+ {
+ case __GT_FILE:
+ tryfunc = try_file;
+ break;
+
+ case __GT_DIR:
+ tryfunc = try_dir;
+ break;
+
+ case __GT_NOCREATE:
+ tryfunc = try_nocreate;
+ break;
+
+ default:
+ assert (! "invalid KIND in __gen_tempname");
+ abort ();
+ }
+ return __try_tempname (tmpl, suffixlen, &flags, tryfunc);
+}
diff --git a/lib/tempname.h b/lib/tempname.h
index b560ee5..e609360 100644
--- a/lib/tempname.h
+++ b/lib/tempname.h
@@ -32,6 +32,10 @@
# define GT_NOCREATE 2
# endif
+#ifdef __cplusplus
+extern "C" {
+#endif
+
/* Generate a temporary file name based on TMPL. TMPL must match the
rules for mk[s]temp (i.e. end in "XXXXXX", possibly with a suffix).
The name constructed does not exist at the time of the call to
@@ -47,4 +51,15 @@
We use a clever algorithm to get hard-to-predict names. */
extern int gen_tempname (char *tmpl, int suffixlen, int flags, int kind);
+/* Similar to gen_tempname, but TRYFUNC is called for each temporary
+ name to try. If TRYFUNC returns a non-negative number, TRY_GEN_TEMPNAME
+ returns with this value. Otherwise, if errno is set to EEXIST, another
+ name is tried, or else TRY_GEN_TEMPNAME returns -1. */
+extern int try_tempname (char *tmpl, int suffixlen, void *args,
+ int (*tryfunc) (char *, void *));
+
+#ifdef __cplusplus
+}
+#endif
+
#endif /* GL_TEMPNAME_H */
diff --git a/lisp/ChangeLog b/lisp/ChangeLog
index b71b55d..b0a07df 100644
--- a/lisp/ChangeLog
+++ b/lisp/ChangeLog
@@ -1,3 +1,163 @@
+2015-02-24 Johan Claesson <address@hidden> (tiny change)
+
+ * filecache.el (file-cache-filter-regexps):
+ Add lock files. (Bug#19516)
+
+2015-02-24 Glenn Morris <address@hidden>
+
+ * mail/rmailsum.el (rmail-summary-next-all)
+ (rmail-summary-previous-all, rmail-summary-next-msg):
+ Fix handling of optional argument. (Bug#19916)
+
+ * progmodes/f90.el (f90-beginning-of-subprogram)
+ (f90-end-of-subprogram, f90-match-end):
+ Handle continued strings where the continuation does not start
+ with "&" and happens to match our regexp. (Bug#19809)
+
+2015-02-24 Bozhidar Batsov <address@hidden>
+
+ * comint.el (comint-clear-buffer): New command.
+ (comint-mode-map): Bind `comint-clear-buffer' to 'C-c M-o'.
+
+2015-02-23 Pete Williamson <address@hidden> (tiny change)
+
+ Use ${EXEEXT} more uniformly in makefiles
+ * Makefile.in (EMACS): Append ${EXEEXT}.
+
+2015-02-23 Sam Steingold <address@hidden>
+
+ * files.el (recover-session): Handle `auto-save-list-file-prefix'
+ being a directory (empty non-directory part).
+
+2015-02-23 Magnus Henoch <address@hidden>
+
+ * net/sasl.el (sasl-mechanism-alist): Refer to sasl-scram-rfc
+ instead of sasl-scram-sha-1, as the former is the name that can be
+ required.
+
+ * net/sasl-scram-rfc.el (sasl-scram-sha-1-steps)
+ (sasl-scram-sha-1-client-final-message)
+ (sasl-scram-sha-1-authenticate-server): Move to end of file.
+
+2015-02-23 Paul Eggert <address@hidden>
+
+ Fix the desired binding for comment-line
+ * bindings.el (ctl-x-map): Use [?\C-\;] to get the desired binding.
+ Fixes: bug#19826
+
+2015-02-23 Stefan Monnier <address@hidden>
+
+ * emacs-lisp/macroexp.el (macroexp-parse-body): Handle cl-declare
+ and :documentation. Change return value format accordingly.
+ * emacs-lisp/cl-generic.el (cl--generic-lambda):
+ * emacs-lisp/pcase.el (pcase-lambda): Adjust accordingly.
+ * emacs-lisp/cl-macs.el (cl--transform-lambda): Use macroexp-parse-body.
+
+2015-02-23 Dmitry Gutov <address@hidden>
+
+ Introduce `xref-etags-mode'.
+ * progmodes/xref.el (xref-etags-mode--saved): New variable.
+ (xref-etags-mode): New minor mode. (Bug#19466)
+
+2015-02-22 Lars Magne Ingebrigtsen <address@hidden>
+
+ * dom.el (dom-previous-sibling): New function.
+
+2015-02-21 Paul Eggert <address@hidden>
+
+ * bindings.el (ctl-x-map): There is no 'C-;'.
+ For now, make do with 'M-;'; this allows 'make bootstrap' to work.
+ Perhaps some other binding should be chosen.
+ Fixes: bug#19826
+
+2015-02-21 Artur Malabarba <address@hidden>
+
+ * bindings.el (ctl-x-map): Fix `comment-line' binding. (Bug#19826)
+
+2015-02-21 Michael Albinus <address@hidden>
+
+ * autorevert.el (auto-revert-notify-add-watch)
+ (auto-revert-notify-handler, auto-revert-buffers): Handle also
+ buffers without an associated file, like dired buffers. (Bug#16112)
+
+2015-02-21 Dima Kogan <address@hidden>
+
+ * autorevert.el (auto-revert-mode, auto-revert-tail-mode)
+ (global-auto-revert-mode): Remove (let (auto-revert-use-notify) ... )
+ wrappers. Call (auto-revert-buffers) consequently in order to
+ install handlers.
+
+2015-02-21 Wilson Snyder <address@hidden>
+
+ Sync with upstream verilog-mode revision 0d6420b.
+ * progmodes/verilog-mode.el (verilog-mode-version): Update.
+ (vector-skip-list): Remove.
+ (verilog-auto-inst-port, verilog-auto-inst-port-list)
+ (verilog-auto-inst, verilog-auto-inst-param):
+ Use arguments rather than vector-skip.
+ (verilog-auto-inst-port): Fix AUTOINST interfaces to not show
+ modport if signal attachment is itself a modport. Reported by
+ Matthew Lovell.
+
+2015-02-21 Reto Zimmermann <address@hidden>
+
+ Sync with upstream vhdl mode v3.37.1. Add VHDL'08 support.
+ * progmodes/vhdl-mode.el (vhdl-version, vhdl-time-stamp)
+ (vhdl-doc-release-notes): Update.
+ (vhdl-standard): Add VHDL'08 option.
+ (vhdl-sensitivity-list-all): New option.
+ (vhdl-directive-keywords): Add psl.
+ (vhdl-offsets-alist-default, vhdl-mode-abbrev-table-init)
+ (vhdl-template-construct-alist-init, vhdl-create-mode-menu):
+ (vhdl-imenu-generic-expression): Add context, directive.
+ (vhdl-offsets-alist, vhdl-mode, vhdl-doc-keywords): Doc fixes.
+ (vhdl-template-map-init): Add vhdl-template-context.
+ (vhdl-mode-syntax-table): Support VHDL'08 block comments.
+ (vhdl-create-mode-menu): Add some entries.
+ (vhdl-08-keywords, vhdl-08-types, vhdl-08-attributes)
+ (vhdl-08-functions, vhdl-08-packages, vhdl-08-directives):
+ New constants.
+ (vhdl-directives): New variable.
+ (vhdl-words-init, vhdl-template-process)
+ (vhdl-template-replace-header-keywords): Support VHDL'08.
+ (vhdl-abbrev-list-init): Add vhdl-directives.
+ (vhdl-in-comment-p, vhdl-in-literal, vhdl-win-il)
+ (vhdl-forward-syntactic-ws, vhdl-get-syntactic-context)
+ (vhdl-lineup-comment): Handle block comments and directives.
+ (vhdl-beginning-of-directive, vhdl-template-context)
+ (vhdl-template-context-hook): New functions.
+ (vhdl-libunit-re, vhdl-defun-re, vhdl-begin-p)
+ (vhdl-corresponding-begin, vhdl-get-library-unit, vhdl-regress-line)
+ (vhdl-align-declarations, vhdl-beginning-of-block, vhdl-end-of-block)
+ (vhdl-font-lock-keywords-2, vhdl-get-end-of-unit)
+ (vhdl-scan-context-clause): Add context.
+
+2015-02-20 Glenn Morris <address@hidden>
+
+ * calendar/solar.el (solar-sunrise-sunset-string):
+ Shorten message a little.
+ (sunrise-sunset): Use message rather than a window. (Bug#19859)
+
+ * progmodes/f90.el (f90-keywords-re, f90-procedures-re)
+ (f90-font-lock-keywords-2): Some F2008 additions.
+
+2015-02-19 Dima Kogan <address@hidden>
+
+ * autorevert.el (auto-revert-buffers-counter)
+ (auto-revert-buffers-counter-lockedout): New variables.
+ (auto-revert-buffers): Increase `auto-revert-buffers-counter'.
+ (auto-revert-notify-handler): Apply `auto-revert-handler' if not
+ suppressed by lockout. (Bug#18958)
+
+2015-02-19 Stefan Monnier <address@hidden>
+
+ * emacs-lisp/eieio-opt.el (eieio-help-class): `eieio-class-parents'
+ returns classes, not class names (bug#19891).
+
+ * emacs-lisp/cl-macs.el (cl-struct-slot-value): Handle a nil type.
+
+ * emacs-lisp/smie.el (smie-prec2->grammar): Fix corner case problem.
+
2015-02-18 Kelly Dean <address@hidden>
* register.el (jump-to-register):
@@ -20,7 +180,7 @@
* files.el (find-alternate-file, abort-if-file-too-large, write-file)
(set-visited-file-name):
* emacs-lisp/lisp.el (kill-backward-up-list):
- Use user-error instead of error. (Bug#14480)
+ Use user-error instead of error. (Bug#14480)
2015-02-18 Stefan Monnier <address@hidden>
@@ -36,12 +196,12 @@
* emacs-lisp/easy-mmode.el (define-minor-mode): Process macro
arguments correctly. (Bug#19685)
(define-minor-mode): Clarify docstring.
- Clarify mode switch messages for minor modes. (Bug#19690)
+ Clarify mode switch messages for minor modes. (Bug#19690)
2015-02-16 Kelly Dean <address@hidden>
* emacs-lisp/package-x.el (package-upload-buffer-internal):
- Create valid tar files. (Bug#19536)
+ Create valid tar files. (Bug#19536)
2015-02-16 Kelly Dean <address@hidden>
@@ -51,7 +211,7 @@
2015-02-16 Kelly Dean <address@hidden>
* help-mode.el (help-do-xref): Prevent duplicated display of Info
- buffer, and prevent interference with existing buffer. (Bug#13190)
+ buffer, and prevent interference with existing buffer. (Bug#13190)
2015-02-16 Fabián Ezequiel Gallina <address@hidden>
@@ -438,7 +598,7 @@
(package--sort-deps-in-alist): New function.
(package-menu-mark-install): Can mark dependencies.
(package--newest-p): New function.
- (package-delete): Don't delesect when deleting an older version of
+ (package-delete): Don't deselect when deleting an older version of
an upgraded package.
* emacs-lisp/package.el: Add missing (require 'subr-x)
@@ -1325,9 +1485,6 @@
2015-01-17 Ivan Shmakov <address@hidden>
- * url/url-cookie.el (url-cookie-write-file): Let-bind print-length
- and print-level to nil to avoid writing a garbled list. (Bug#16805)
-
* files.el (find-file-other-window, find-file-other-frame):
Use mapc instead of mapcar. (Bug#18175)
diff --git a/lisp/Makefile.in b/lisp/Makefile.in
index e5cfc63..22d5ddc 100644
--- a/lisp/Makefile.in
+++ b/lisp/Makefile.in
@@ -47,7 +47,7 @@ am__v_GEN_1 =
# We never change directory before running Emacs, so a relative file
# name is fine, and makes life easier. If we need to change
# directory, we can use emacs --chdir.
-EMACS = ../src/emacs
+EMACS = ../src/emacs${EXEEXT}
# Command line flags for Emacs.
diff --git a/lisp/autorevert.el b/lisp/autorevert.el
index 8c8c617..6489a3e 100644
--- a/lisp/autorevert.el
+++ b/lisp/autorevert.el
@@ -361,9 +361,8 @@ without being changed in the part that is already in the
buffer."
(delq (current-buffer) auto-revert-buffer-list)))
(auto-revert-set-timer)
(when auto-revert-mode
- (let (auto-revert-use-notify)
- (auto-revert-buffers)
- (setq auto-revert-tail-mode nil))))
+ (auto-revert-buffers)
+ (setq auto-revert-tail-mode nil)))
;;;###autoload
@@ -417,8 +416,7 @@ Use `auto-revert-mode' for changes other than appends!"
(y-or-n-p "File changed on disk, content may be missing. \
Perform a full revert? ")
;; Use this (not just revert-buffer) for point-preservation.
- (let (auto-revert-use-notify)
- (auto-revert-handler)))
+ (auto-revert-buffers))
;; else we might reappend our own end when we save
(add-hook 'before-save-hook (lambda () (auto-revert-tail-mode 0)) nil t)
(or (local-variable-p 'auto-revert-tail-pos) ; don't lose prior position
@@ -463,8 +461,7 @@ specifies in the mode line."
:global t :group 'auto-revert :lighter global-auto-revert-mode-text
(auto-revert-set-timer)
(if global-auto-revert-mode
- (let (auto-revert-use-notify)
- (auto-revert-buffers))
+ (auto-revert-buffers)
(dolist (buf (buffer-list))
(with-current-buffer buf
(when auto-revert-use-notify
@@ -508,16 +505,22 @@ will use an up-to-date value of `auto-revert-interval'"
;; `auto-revert-use-notify' are non-nil.
(when (or (string-match auto-revert-notify-exclude-dir-regexp
(expand-file-name default-directory))
- (file-symlink-p buffer-file-name))
+ (file-symlink-p (or buffer-file-name default-directory)))
;; Fallback to file checks.
(set (make-local-variable 'auto-revert-use-notify) nil))
(when (not auto-revert-notify-watch-descriptor)
(setq auto-revert-notify-watch-descriptor
(ignore-errors
- (file-notify-add-watch
- (expand-file-name buffer-file-name default-directory)
- '(change attribute-change) 'auto-revert-notify-handler)))
+ (if buffer-file-name
+ (file-notify-add-watch
+ (expand-file-name buffer-file-name default-directory)
+ '(change attribute-change)
+ 'auto-revert-notify-handler)
+ (file-notify-add-watch
+ (expand-file-name default-directory)
+ '(change)
+ 'auto-revert-notify-handler))))
(if auto-revert-notify-watch-descriptor
(progn
(puthash
@@ -531,6 +534,30 @@ will use an up-to-date value of `auto-revert-interval'"
;; Fallback to file checks.
(set (make-local-variable 'auto-revert-use-notify) nil))))
+;; If we have file notifications, we want to update the auto-revert buffers
+;; immediately when a notification occurs. Since file updates can happen very
+;; often, we want to skip some revert operations so that we don't spend all our
+;; time reverting the buffer.
+;;
+;; We do this by reverting immediately in response to the first in a flurry of
+;; notifications. We suppress subsequent notifications until the next time
+;; `auto-revert-buffers' is called (this happens on a timer with a period set
by
+;; `auto-revert-interval').
+(defvar auto-revert-buffers-counter 1
+ "Incremented each time `auto-revert-buffers' is called")
+(defvar-local auto-revert-buffers-counter-lockedout 0
+ "Buffer-local value to indicate whether we should immediately
+update the buffer on a notification event or not. If
+
+ (= auto-revert-buffers-counter-lockedout
+ auto-revert-buffers-counter)
+
+then the updates are locked out, and we wait until the next call
+of `auto-revert-buffers' to revert the buffer. If no lockout is
+present, then we revert immediately and set the lockout, so that
+no more reverts are possible until the next call of
+`auto-revert-buffers'")
+
(defun auto-revert-notify-handler (event)
"Handle an EVENT returned from file notification."
(with-demoted-errors
@@ -542,32 +569,40 @@ will use an up-to-date value of `auto-revert-interval'"
auto-revert-notify-watch-descriptor-hash-list)))
;; Check, that event is meant for us.
(cl-assert descriptor)
- ;; We do not handle `deleted', because nothing has to be refreshed.
- (unless (eq action 'deleted)
- (cl-assert (memq action '(attribute-changed changed created renamed))
- t)
- ;; Since we watch a directory, a file name must be returned.
- (cl-assert (stringp file))
- (when (eq action 'renamed) (cl-assert (stringp file1)))
- ;; Loop over all buffers, in order to find the intended one.
- (cl-dolist (buffer buffers)
- (when (buffer-live-p buffer)
- (with-current-buffer buffer
- (when (and (stringp buffer-file-name)
- (or
- (and (memq action '(attribute-changed changed
- created))
- (string-equal
- (file-name-nondirectory file)
- (file-name-nondirectory buffer-file-name)))
- (and (eq action 'renamed)
- (string-equal
- (file-name-nondirectory file1)
- (file-name-nondirectory buffer-file-name)))))
- ;; Mark buffer modified.
- (setq auto-revert-notify-modified-p t)
- ;; No need to check other buffers.
- (cl-return)))))))))
+ ;; Since we watch a directory, a file name must be returned.
+ (cl-assert (stringp file))
+ (when (eq action 'renamed) (cl-assert (stringp file1)))
+ ;; Loop over all buffers, in order to find the intended one.
+ (cl-dolist (buffer buffers)
+ (when (buffer-live-p buffer)
+ (with-current-buffer buffer
+ (when (or
+ ;; A buffer associated with a file.
+ (and (stringp buffer-file-name)
+ (or
+ (and (memq action '(attribute-changed changed created))
+ (string-equal
+ (file-name-nondirectory file)
+ (file-name-nondirectory buffer-file-name)))
+ (and (eq action 'renamed)
+ (string-equal
+ (file-name-nondirectory file1)
+ (file-name-nondirectory buffer-file-name)))))
+ ;; A buffer w/o a file, like dired.
+ (and (null buffer-file-name)
+ (memq action '(created renamed deleted))))
+ ;; Mark buffer modified.
+ (setq auto-revert-notify-modified-p t)
+
+ ;; Revert the buffer now if we're not locked out.
+ (when (/= auto-revert-buffers-counter-lockedout
+ auto-revert-buffers-counter)
+ (auto-revert-handler)
+ (setq auto-revert-buffers-counter-lockedout
+ auto-revert-buffers-counter))
+
+ ;; No need to check other buffers.
+ (cl-return))))))))
(defun auto-revert-active-p ()
"Check if auto-revert is active (in current buffer or globally)."
@@ -686,6 +721,10 @@ are checked first the next time this function is called.
This function is also responsible for removing buffers no longer in
Auto-Revert mode from `auto-revert-buffer-list', and for canceling
the timer when no buffers need to be checked."
+
+ (setq auto-revert-buffers-counter
+ (1+ auto-revert-buffers-counter))
+
(save-match-data
(let ((bufs (if global-auto-revert-mode
(buffer-list)
@@ -717,7 +756,7 @@ the timer when no buffers need to be checked."
(delq buf auto-revert-buffer-list)))
(when (auto-revert-active-p)
;; Enable file notification.
- (when (and auto-revert-use-notify buffer-file-name
+ (when (and auto-revert-use-notify
(not auto-revert-notify-watch-descriptor))
(auto-revert-notify-add-watch))
(auto-revert-handler)))
diff --git a/lisp/bindings.el b/lisp/bindings.el
index 4cc9f6a..b658914 100644
--- a/lisp/bindings.el
+++ b/lisp/bindings.el
@@ -1130,7 +1130,7 @@ if `inhibit-field-text-motion' is non-nil."
(define-key esc-map "j" 'indent-new-comment-line)
(define-key esc-map "\C-j" 'indent-new-comment-line)
(define-key ctl-x-map ";" 'comment-set-column)
-(define-key ctl-x-map "C-;" 'comment-line)
+(define-key ctl-x-map [?\C-\;] 'comment-line)
(define-key ctl-x-map "f" 'set-fill-column)
(define-key ctl-x-map "$" 'set-selective-display)
diff --git a/lisp/calendar/solar.el b/lisp/calendar/solar.el
index 46cd8d3..25a24ee 100644
--- a/lisp/calendar/solar.el
+++ b/lisp/calendar/solar.el
@@ -657,7 +657,7 @@ Corresponding value is nil if there is no sunrise/sunset."
Optional NOLOCATION non-nil means do not print the location."
(let ((l (solar-sunrise-sunset date)))
(format
- "%s, %s%s (%s hours daylight)"
+ "%s, %s%s (%s hrs daylight)"
(if (car l)
(concat "Sunrise " (apply 'solar-time-string (car l)))
"No sunrise")
@@ -847,20 +847,12 @@ This function is suitable for execution in an init file."
(date (if (< arg 4) (calendar-current-date) (calendar-read-date)))
(date-string (calendar-date-string date t))
(time-string (solar-sunrise-sunset-string date))
- (msg (format "%s: %s" date-string time-string))
- (one-window (one-window-p t)))
- (if (<= (length msg) (frame-width))
- (message "%s" msg)
- (with-output-to-temp-buffer "*temp*"
- (princ (concat date-string "\n" time-string)))
- (message "%s"
- (substitute-command-keys
- (if one-window
- (if pop-up-windows
- "Type \\[delete-other-windows] to remove temp window."
- "Type \\[switch-to-buffer] RET to remove temp window.")
- "Type \\[switch-to-buffer-other-window] RET to restore old \
-contents of temp window."))))))
+ (msg (format "%s%s"
+ (if (< arg 4) "" ; don't print date if it's today's
+ (format "%s: " date-string))
+ time-string)))
+ (message "%s" msg)
+ msg))
;;;###cal-autoload
(defun calendar-sunrise-sunset (&optional event)
diff --git a/lisp/cedet/ChangeLog b/lisp/cedet/ChangeLog
index 838a269..c9ddc38 100644
--- a/lisp/cedet/ChangeLog
+++ b/lisp/cedet/ChangeLog
@@ -1,3 +1,10 @@
+2015-02-22 Paul Eggert <address@hidden>
+
+ Spelling fixes
+ * semantic/doc.el (semantic-documentation-comment-preceding-tag):
+ Rename from semantic-documentation-comment-preceeding-tag. All
+ uses changed. Leave an obsolete alias behind.
+
2015-02-16 Stefan Monnier <address@hidden>
* semantic/db-el.el (semanticdb-elisp-sym->tag): Fix copy&paste error
diff --git a/lisp/cedet/semantic/doc.el b/lisp/cedet/semantic/doc.el
index 874763f..3ceb351 100644
--- a/lisp/cedet/semantic/doc.el
+++ b/lisp/cedet/semantic/doc.el
@@ -56,13 +56,12 @@ If nosnarf if 'lex, then only return the lex token."
doctmp
;; Check just before the definition.
(when (semantic-tag-with-position-p tag)
- (semantic-documentation-comment-preceeding-tag tag nosnarf))
+ (semantic-documentation-comment-preceding-tag tag nosnarf))
;; Let's look for comments either after the definition, but before
code:
;; Not sure yet. Fill in something clever later....
nil))))))
-;; FIXME this is not how you spell "preceding".
-(defun semantic-documentation-comment-preceeding-tag (&optional tag nosnarf)
+(defun semantic-documentation-comment-preceding-tag (&optional tag nosnarf)
"Find a comment preceding TAG.
If TAG is nil. use the tag under point.
Searches the space between TAG and the preceding tag for a comment,
@@ -84,6 +83,10 @@ just the lexical token and not the string."
;; of a function.
(semantic-doc-snarf-comment-for-tag nosnarf)))
))
+(define-obsolete-function-alias
+ 'semantic-documentation-comment-preceeding-tag
+ 'semantic-documentation-comment-preceding-tag
+ "25.1")
(defun semantic-doc-snarf-comment-for-tag (nosnarf)
"Snarf up the comment at POINT for `semantic-documentation-for-tag'.
diff --git a/lisp/cedet/srecode/document.el b/lisp/cedet/srecode/document.el
index 9f106a4..4757784 100644
--- a/lisp/cedet/srecode/document.el
+++ b/lisp/cedet/srecode/document.el
@@ -395,7 +395,7 @@ It is assumed that the comment occurs just in front of
FCN-IN."
(beginning-of-line)
(forward-char -1)
- (let ((lextok (semantic-documentation-comment-preceeding-tag fcn-in 'lex))
+ (let ((lextok (semantic-documentation-comment-preceding-tag fcn-in 'lex))
(doctext
(srecode-document-function-name-comment fcn-in))
)
diff --git a/lisp/comint.el b/lisp/comint.el
index 30c4dda..30aece1 100644
--- a/lisp/comint.el
+++ b/lisp/comint.el
@@ -472,6 +472,7 @@ executed once when the buffer is created."
(define-key map "\C-c\C-\\" 'comint-quit-subjob)
(define-key map "\C-c\C-m" 'comint-copy-old-input)
(define-key map "\C-c\C-o" 'comint-delete-output)
+ (defile-key map "\C-c\M-o" 'comint-clear-buffer)
(define-key map "\C-c\C-r" 'comint-show-output)
(define-key map "\C-c\C-e" 'comint-show-maximum-output)
(define-key map "\C-c\C-l" 'comint-dynamic-list-input-ring)
@@ -2428,6 +2429,11 @@ Sets mark to the value of point when this command is
run."
(goto-char (field-beginning pos))
(set-window-start (selected-window) (point))))))
+(defun comint-clear-buffer ()
+ "Clear the comint buffer."
+ (interactive)
+ (let ((comint-buffer-maximum-size 0))
+ (comint-truncate-buffer)))
(defun comint-interrupt-subjob ()
"Interrupt the current subjob.
diff --git a/lisp/dom.el b/lisp/dom.el
index 11357e8..4213107 100644
--- a/lisp/dom.el
+++ b/lisp/dom.el
@@ -149,6 +149,16 @@ ATTRIBUTE would typically be `class', `id' or the like."
(setq result (dom-parent elem node))))
result)))
+(defun dom-previous-sibling (dom node)
+ (when-let (parent (dom-parent dom node))
+ (let ((siblings (dom-children parent))
+ (previous nil))
+ (while siblings
+ (when (eq (cadr siblings) node)
+ (setq previous (car siblings)))
+ (pop siblings))
+ previous)))
+
(defun dom-node (tag &optional attributes &rest children)
"Return a DOM node with TAG and ATTRIBUTES."
(if children
diff --git a/lisp/emacs-lisp/cl-generic.el b/lisp/emacs-lisp/cl-generic.el
index ccd5bec..99924ba 100644
--- a/lisp/emacs-lisp/cl-generic.el
+++ b/lisp/emacs-lisp/cl-generic.el
@@ -278,7 +278,7 @@ This macro can only be used within the lexical scope of a
cl-generic method."
(uses-cnm (cl--generic-fgrep (list cnm nmp) nbody)))
(cons (not (not uses-cnm))
`#'(lambda (,@(if uses-cnm (list cnm)) ,@args)
- ,@(delq nil (car parsed-body))
+ ,@(car parsed-body)
,(if (not (memq nmp uses-cnm))
nbody
`(let ((,nmp (lambda ()
diff --git a/lisp/emacs-lisp/cl-macs.el b/lisp/emacs-lisp/cl-macs.el
index caaf768..c3da091 100644
--- a/lisp/emacs-lisp/cl-macs.el
+++ b/lisp/emacs-lisp/cl-macs.el
@@ -234,10 +234,9 @@ FORM is of the form (ARGS . BODY)."
(let* ((args (car form)) (body (cdr form)) (orig-args args)
(cl--bind-block bind-block) (cl--bind-defs nil) (cl--bind-enquote nil)
(cl--bind-lets nil) (cl--bind-forms nil)
- (header nil) (simple-args nil))
- (while (or (stringp (car body))
- (memq (car-safe (car body)) '(interactive declare cl-declare)))
- (push (pop body) header))
+ (parsed-body (macroexp-parse-body body))
+ (header (car parsed-body)) (simple-args nil))
+ (setq body (cdr parsed-body))
(setq args (if (listp args) (cl-copy-list args) (list '&rest args)))
(let ((p (last args))) (if (cdr p) (setcdr p (list '&rest (cdr p)))))
(if (setq cl--bind-defs (cadr (memq '&cl-defs args)))
@@ -258,7 +257,7 @@ FORM is of the form (ARGS . BODY)."
(or (eq cl--bind-block 'cl-none)
(setq body (list `(cl-block ,cl--bind-block ,@body))))
(if (null args)
- (cl-list* nil (nreverse simple-args) (nconc (nreverse header) body))
+ (cl-list* nil (nreverse simple-args) (nconc header body))
(if (memq '&optional simple-args) (push '&optional args))
(cl--do-arglist args nil (- (length simple-args)
(if (memq '&optional simple-args) 1 0)))
@@ -266,20 +265,18 @@ FORM is of the form (ARGS . BODY)."
(cl-list* nil
(nconc (nreverse simple-args)
(list '&rest (car (pop cl--bind-lets))))
- (nconc (let ((hdr (nreverse header)))
- ;; Macro expansion can take place in the middle of
- ;; apparently harmless computation, so it should not
- ;; touch the match-data.
- (save-match-data
- (require 'help-fns)
- (cons (help-add-fundoc-usage
- (if (stringp (car hdr)) (pop hdr))
- ;; Be careful with make-symbol and (back)quote,
- ;; see bug#12884.
- (let ((print-gensym nil) (print-quoted t))
- (format "%S" (cons 'fn (cl--make-usage-args
- orig-args)))))
- hdr)))
+ (nconc (save-match-data ;; Macro expansion can take place in the
+ ;; middle of apparently harmless computation, so it
+ ;; should not touch the match-data.
+ (require 'help-fns)
+ (cons (help-add-fundoc-usage
+ (if (stringp (car header)) (pop header))
+ ;; Be careful with make-symbol and (back)quote,
+ ;; see bug#12884.
+ (let ((print-gensym nil) (print-quoted t))
+ (format "%S" (cons 'fn (cl--make-usage-args
+ orig-args)))))
+ header))
(list `(let* ,cl--bind-lets
,@(nreverse cl--bind-forms)
,@body)))))))
@@ -2978,9 +2975,9 @@ STRUCT and SLOT-NAME are symbols. INST is a structure
instance."
;; We could use `elt', but since the byte compiler will resolve the
;; branch below at compile time, it's more efficient to use the
;; type-specific accessor.
- (if (eq (cl-struct-sequence-type ,struct-type) 'vector)
- (aref ,inst (cl-struct-slot-offset ,struct-type ,slot-name))
- (nth (cl-struct-slot-offset ,struct-type ,slot-name) ,inst))))))
+ (if (eq (cl-struct-sequence-type ,struct-type) 'list)
+ (nth (cl-struct-slot-offset ,struct-type ,slot-name) ,inst)
+ (aref ,inst (cl-struct-slot-offset ,struct-type ,slot-name)))))))
(run-hooks 'cl-macs-load-hook)
diff --git a/lisp/emacs-lisp/eieio-opt.el b/lisp/emacs-lisp/eieio-opt.el
index 304ee36..a769ca7 100644
--- a/lisp/emacs-lisp/eieio-opt.el
+++ b/lisp/emacs-lisp/eieio-opt.el
@@ -99,6 +99,7 @@ If CLASS is actually an object, then also display current
values of that object.
(when pl
(insert " Inherits from ")
(while (setq cur (pop pl))
+ (setq cur (eieio--class-symbol cur))
(insert "`")
(help-insert-xref-button (symbol-name cur)
'help-function cur)
diff --git a/lisp/emacs-lisp/eieio.el b/lisp/emacs-lisp/eieio.el
index 4f6b6d7..cdf1992 100644
--- a/lisp/emacs-lisp/eieio.el
+++ b/lisp/emacs-lisp/eieio.el
@@ -930,7 +930,7 @@ Optional argument GROUP is the sub-group of slots to
display.
;;;***
-;;;### (autoloads nil "eieio-opt" "eieio-opt.el"
"ff1097f185bc2c253276a7d19fe2f54a")
+;;;### (autoloads nil "eieio-opt" "eieio-opt.el"
"d1910eb455f102989fc33bb3f5a9b614")
;;; Generated autoloads from eieio-opt.el
(autoload 'eieio-browse "eieio-opt" "\
diff --git a/lisp/emacs-lisp/macroexp.el b/lisp/emacs-lisp/macroexp.el
index b75c8cc..68bf4f6 100644
--- a/lisp/emacs-lisp/macroexp.el
+++ b/lisp/emacs-lisp/macroexp.el
@@ -297,15 +297,16 @@ definitions to shadow the loaded ones for use in file
byte-compilation."
;;; Handy functions to use in macros.
-(defun macroexp-parse-body (exps)
- "Parse EXPS into ((DOC DECLARE-FORM INTERACTIVE-FORM) . BODY)."
- `((,(and (stringp (car exps))
- (pop exps))
- ,(and (eq (car-safe (car exps)) 'declare)
- (pop exps))
- ,(and (eq (car-safe (car exps)) 'interactive)
- (pop exps)))
- ,@exps))
+(defun macroexp-parse-body (body)
+ "Parse a function BODY into (DECLARATIONS . EXPS)."
+ (let ((decls ()))
+ (while (and (cdr body)
+ (let ((e (car body)))
+ (or (stringp e)
+ (memq (car-safe e)
+ '(:documentation declare interactive
cl-declare)))))
+ (push (pop body) decls))
+ (cons (nreverse decls) body)))
(defun macroexp-progn (exps)
"Return an expression equivalent to `(progn ,@EXPS)."
diff --git a/lisp/emacs-lisp/package.el b/lisp/emacs-lisp/package.el
index d8a4fc9..de1158d 100644
--- a/lisp/emacs-lisp/package.el
+++ b/lisp/emacs-lisp/package.el
@@ -335,11 +335,10 @@ contents of the archive."
:version "24.4")
(defcustom package-selected-packages nil
- "Store here packages installed explicitely by user.
-This variable will be feeded automatically by emacs,
-when installing a new package.
-This variable will be used by `package-autoremove' to decide
-which packages are no more needed.
+ "Store here packages installed explicitly by user.
+This variable is fed automatically by Emacs when installing a new package.
+This variable is used by `package-autoremove' to decide
+which packages are no longer needed.
You can use it to (re)install packages on other machines
by running `package-user-selected-packages-install'.
@@ -1280,7 +1279,7 @@ to install it but still mark it as selected."
;;;###autoload
(defun package-reinstall (pkg)
"Reinstall package PKG.
-PKG shoul be either a symbol, the package name, or a package-desc
+PKG should be either a symbol, the package name, or a package-desc
object."
(interactive (list (intern (completing-read
"Reinstall package: "
@@ -1547,7 +1546,7 @@ If NOSAVE is non-nil, the package is not removed from
;; `package-selected-packages' even if it can't be deleted.
(when (and (null nosave)
(package--user-selected-p name)
- ;; Don't delesect if this is an older version of an
+ ;; Don't deselect if this is an older version of an
;; upgraded package.
(package--newest-p pkg-desc))
(customize-save-variable
diff --git a/lisp/emacs-lisp/pcase.el b/lisp/emacs-lisp/pcase.el
index 057b128..4706be5 100644
--- a/lisp/emacs-lisp/pcase.el
+++ b/lisp/emacs-lisp/pcase.el
@@ -180,7 +180,7 @@ like `(,a . ,(pred (< a))) or, with more checks:
(when (eq nil (car (last pats 2)))
(setq pats (append (butlast pats 2) (car (last pats)))))
`(lambda (&rest ,args)
- ,@(remq nil (car body))
+ ,@(car body)
(pcase ,args
(,(list '\` pats) . ,(cdr body))))))
diff --git a/lisp/emacs-lisp/smie.el b/lisp/emacs-lisp/smie.el
index 5b9dc64..48bded4 100644
--- a/lisp/emacs-lisp/smie.el
+++ b/lisp/emacs-lisp/smie.el
@@ -612,8 +612,11 @@ PREC2 is a table as returned by `smie-precs->prec2' or
(cons (pcase (cdr x)
(`closer (cddr (assoc token table)))
(`opener (cdr (assoc token table))))))
- (cl-assert (numberp (car cons)))
- (setf (car cons) (list (car cons)))))
+ ;; `cons' can be nil for openers/closers which only contain
+ ;; "atomic" elements.
+ (when cons
+ (cl-assert (numberp (car cons)))
+ (setf (car cons) (list (car cons))))))
(let ((ca (gethash :smie-closer-alist prec2)))
(when ca (push (cons :smie-closer-alist ca) table)))
;; (smie-check-grammar table prec2 'step3)
diff --git a/lisp/filecache.el b/lisp/filecache.el
index d036107..fd99ee0 100644
--- a/lisp/filecache.el
+++ b/lisp/filecache.el
@@ -154,11 +154,12 @@
;; These are also used in buffers containing lines of file names,
;; so the end-of-name is matched with $ rather than \\'.
(list "~$" "\\.o$" "\\.exe$" "\\.a$" "\\.elc$" ",v$" "\\.output$"
- "\\.$" "#$" "\\.class$")
+ "\\.$" "#$" "\\.class$" "/\\.#")
"List of regular expressions used as filters by the file cache.
File names which match these expressions will not be added to the cache.
Note that the functions `file-cache-add-file' and `file-cache-add-file-list'
do not use this variable."
+ :version "25.1" ; added "/\\.#"
:type '(repeat regexp)
:group 'file-cache)
diff --git a/lisp/files.el b/lisp/files.el
index 1914ad8..42b00ac 100644
--- a/lisp/files.el
+++ b/lisp/files.el
@@ -5664,13 +5664,14 @@ Then you'll be asked about a number of files to
recover."
(interactive)
(if (null auto-save-list-file-prefix)
(error "You set `auto-save-list-file-prefix' to disable making session
files"))
- (let ((dir (file-name-directory auto-save-list-file-prefix)))
+ (let ((dir (file-name-directory auto-save-list-file-prefix))
+ (nd (file-name-nondirectory auto-save-list-file-prefix)))
(unless (file-directory-p dir)
(make-directory dir t))
(unless (directory-files dir nil
- (concat "\\`" (regexp-quote
- (file-name-nondirectory
- auto-save-list-file-prefix)))
+ (if (string= "" nd)
+ directory-files-no-dot-files-regexp
+ (concat "\\`" (regexp-quote nd)))
t)
(error "No previous sessions to recover")))
(let ((ls-lisp-support-shell-wildcards t))
diff --git a/lisp/gnus/ChangeLog b/lisp/gnus/ChangeLog
index 7910d74..7a4c463 100644
--- a/lisp/gnus/ChangeLog
+++ b/lisp/gnus/ChangeLog
@@ -1,3 +1,18 @@
+2015-02-23 Tassilo Horn <address@hidden>
+
+ * mailcap.el (mailcap-mime-data): Support `pdf-view-mode' (from PDF
+ Tools: https://github.com/politza/pdf-tools) for viewing PDF
+ attachments in emacs.
+
+2015-02-23 Katsumi Yamaoka <address@hidden>
+
+ * gnus-art.el (gnus-mime-display-single): Avoid "End of buffer" error.
+
+2015-02-18 Eric Abrahamsen <address@hidden>
+
+ * nnimap.el (nnimap-get-groups): Correctly read unquoted group names
+ from the server LIST response.
+
2015-02-14 Lars Ingebrigtsen <address@hidden>
* nnimap.el (nnimap-retrieve-headers): If the server closes connection
@@ -822,7 +837,7 @@
2014-01-30 Lars Ingebrigtsen <address@hidden>
* nnmail.el (nnmail-split-it): Instead of redoing the search to restore
- the match data, just save and restore it explictly (bug#12375).
+ the match data, just save and restore it explicitly (bug#12375).
* gnus-sum.el (gnus-summary-read-group-1): Initialize the spam code if
that's needed.
@@ -24079,7 +24094,7 @@
(spam-ham-copy-or-move-routine): Return the number of processed
ham messages.
(spam-summary-prepare-exit): Use the above values to decide
- whether status messages shouled be displayed.
+ whether status messages should be displayed.
2004-05-20 Katsumi Yamaoka <address@hidden>
diff --git a/lisp/gnus/gnus-art.el b/lisp/gnus/gnus-art.el
index 8503095..83a2f94 100644
--- a/lisp/gnus/gnus-art.el
+++ b/lisp/gnus/gnus-art.el
@@ -6101,7 +6101,7 @@ If nil, don't show those extra buttons."
(gnus-article-insert-newline)
(if (prog1
(= (skip-chars-backward "\n") -1)
- (forward-char 1))
+ (unless (eobp) (forward-char 1)))
(gnus-article-insert-newline)
(put-text-property (point) (point-max) 'gnus-undeletable t))
(goto-char (point-max)))
diff --git a/lisp/gnus/mailcap.el b/lisp/gnus/mailcap.el
index 01d8587..9f84413 100644
--- a/lisp/gnus/mailcap.el
+++ b/lisp/gnus/mailcap.el
@@ -153,6 +153,11 @@ This is a compatibility function for different Emacsen."
(type . "application/zip")
("copiousoutput"))
("pdf"
+ (viewer . pdf-view-mode)
+ (type . "application/pdf")
+ (test . (and (fboundp 'pdf-view-mode)
+ (eq window-system 'x))))
+ ("pdf"
(viewer . doc-view-mode)
(type . "application/pdf")
(test . (eq window-system 'x)))
diff --git a/lisp/gnus/nnimap.el b/lisp/gnus/nnimap.el
index 4a9ca74..369d9d3 100644
--- a/lisp/gnus/nnimap.el
+++ b/lisp/gnus/nnimap.el
@@ -1262,7 +1262,12 @@ If LIMIT, first try to limit the search to the N last
articles."
(while (search-forward "* LIST " nil t)
(let ((flags (read (current-buffer)))
(separator (read (current-buffer)))
- (group (read (current-buffer))))
+ (group (buffer-substring-no-properties
+ (progn (skip-chars-forward " \"")
+ (point))
+ (progn (end-of-line)
+ (skip-chars-backward "
\"")
+ (point)))))
(unless (member '%NoSelect flags)
(push (utf7-decode (if (stringp group)
group
diff --git a/lisp/mail/rmailsum.el b/lisp/mail/rmailsum.el
index 7ac147b..bfcd81c 100644
--- a/lisp/mail/rmailsum.el
+++ b/lisp/mail/rmailsum.el
@@ -791,7 +791,7 @@ the message being processed."
(forward-line 1)
(setq str (buffer-substring pos (1- (point))))
(while (looking-at "[ \t]")
- (setq str (concat str " "
+ (setq str (concat str " "
(buffer-substring (match-end 0)
(line-end-position))))
(forward-line 1))
@@ -804,7 +804,8 @@ the message being processed."
(defun rmail-summary-next-all (&optional number)
(interactive "p")
- (forward-line (if number number 1))
+ (or number (setq number 1))
+ (forward-line number)
;; It doesn't look nice to move forward past the last message line.
(and (eobp) (> number 0)
(forward-line -1))
@@ -812,7 +813,8 @@ the message being processed."
(defun rmail-summary-previous-all (&optional number)
(interactive "p")
- (forward-line (- (if number number 1)))
+ (or number (setq number 1))
+ (forward-line (- number))
;; It doesn't look nice to move forward past the last message line.
(and (eobp) (< number 0)
(forward-line -1))
@@ -823,6 +825,7 @@ the message being processed."
With optional prefix argument NUMBER, moves forward this number of non-deleted
messages, or backward if NUMBER is negative."
(interactive "p")
+ (or number (setq number 1))
(forward-line 0)
(and (> number 0) (end-of-line))
(let ((count (if (< number 0) (- number) number))
diff --git a/lisp/net/sasl-scram-rfc.el b/lisp/net/sasl-scram-rfc.el
index 6c8c009..18d7a6b 100644
--- a/lisp/net/sasl-scram-rfc.el
+++ b/lisp/net/sasl-scram-rfc.el
@@ -39,31 +39,9 @@
(require 'cl-lib)
(require 'sasl)
-
-;;; SCRAM-SHA-1
-
(require 'hex-util)
(require 'rfc2104)
-(defconst sasl-scram-sha-1-steps
- '(sasl-scram-client-first-message
- sasl-scram-sha-1-client-final-message
- sasl-scram-sha-1-authenticate-server))
-
-(defun sasl-scram-sha-1-client-final-message (client step)
- (sasl-scram--client-final-message
- ;; HMAC-SHA1 uses block length 64 and hash length 20; see RFC 2104.
- 'sha1 64 20 client step))
-
-(defun sasl-scram-sha-1-authenticate-server (client step)
- (sasl-scram--authenticate-server
- 'sha1 64 20 client step))
-
-(put 'sasl-scram-sha-1 'sasl-mechanism
- (sasl-make-mechanism "SCRAM-SHA-1" sasl-scram-sha-1-steps))
-
-(provide 'sasl-scram-sha-1)
-
;;; Generic for SCRAM-*
(defun sasl-scram-client-first-message (client _step)
@@ -156,5 +134,30 @@
(t
(sasl-error "Invalid response from server"))))
+;;; SCRAM-SHA-1
+
+(defconst sasl-scram-sha-1-steps
+ '(sasl-scram-client-first-message
+ sasl-scram-sha-1-client-final-message
+ sasl-scram-sha-1-authenticate-server))
+
+(defun sasl-scram-sha-1-client-final-message (client step)
+ (sasl-scram--client-final-message
+ ;; HMAC-SHA1 uses block length 64 and hash length 20; see RFC 2104.
+ 'sha1 64 20 client step))
+
+(defun sasl-scram-sha-1-authenticate-server (client step)
+ (sasl-scram--authenticate-server
+ 'sha1 64 20 client step))
+
+;; This needs to be at the end, because of how `sasl-make-mechanism'
+;; handles step function names.
+(put 'sasl-scram-sha-1 'sasl-mechanism
+ (sasl-make-mechanism "SCRAM-SHA-1" sasl-scram-sha-1-steps))
+
+(put 'sasl-scram-rfc 'sasl-mechanism (get 'sasl-scram-sha-1 'sasl-mechanism))
+
+(provide 'sasl-scram-sha-1)
+
(provide 'sasl-scram-rfc)
;;; sasl-scram-rfc.el ends here
diff --git a/lisp/net/sasl.el b/lisp/net/sasl.el
index e59ed5d..9321efd 100644
--- a/lisp/net/sasl.el
+++ b/lisp/net/sasl.el
@@ -45,7 +45,7 @@
("LOGIN" sasl-login)
("ANONYMOUS" sasl-anonymous)
("NTLM" sasl-ntlm)
- ("SCRAM-SHA-1" sasl-scram-sha-1)))
+ ("SCRAM-SHA-1" sasl-scram-rfc)))
(defvar sasl-unique-id-function #'sasl-unique-id-function)
diff --git a/lisp/org/ChangeLog b/lisp/org/ChangeLog
index 081da5d..ce39bb7 100644
--- a/lisp/org/ChangeLog
+++ b/lisp/org/ChangeLog
@@ -852,7 +852,7 @@
in a table.el table last.
* org.el (org-delete-property): Don't suggest to delete the
- CATEGORY property when the category is not explicitely set in the
+ CATEGORY property when the category is not explicitly set in the
property drawer. Also enforce matching when completing.
(org-insert-heading): Fix regression: with two universal prefixes,
insert heading at the end of the subtree.
diff --git a/lisp/progmodes/f90.el b/lisp/progmodes/f90.el
index aeb4dde..6264d3b 100644
--- a/lisp/progmodes/f90.el
+++ b/lisp/progmodes/f90.el
@@ -342,8 +342,10 @@ The options are 'downcase-word, 'upcase-word,
'capitalize-word and nil."
"final" "generic" "import" "non_intrinsic" "non_overridable"
"nopass" "pass" "protected" "same_type_as" "value" "volatile"
;; F2008.
+ ;; FIXME f90-change-keywords does not work right if
+ ;; there are spaces.
"contiguous" "submodule" "concurrent" "codimension"
- "sync all" "sync memory" "critical" "image_index"
+ "sync all" "sync memory" "critical" "image_index" "error stop"
))
"\\_>")
"Regexp used by the function `f90-change-keywords'.")
@@ -417,6 +419,8 @@ The options are 'downcase-word, 'upcase-word,
'capitalize-word and nil."
"norm2" "parity" "findloc" "is_contiguous"
"sync images" "lock" "unlock" "image_index"
"lcobound" "ucobound" "num_images" "this_image"
+ "acosh" "asinh" "atanh"
+ "atomic_define" "atomic_ref" "execute_command_line"
;; F2008 iso_fortran_env module.
"compiler_options" "compiler_version"
;; F2008 iso_c_binding module.
@@ -649,7 +653,8 @@ logical\\|double[ \t]*precision\\|type[
\t]*(\\(?:\\sw\\|\\s_\\)+)\\|none\\)[ \t
(1 font-lock-keyword-face) (2 font-lock-constant-face nil t))
"\\_<else\\([ \t]*if\\|where\\)?\\_>"
'("\\(&\\)[ \t]*\\(!\\|$\\)" (1 font-lock-keyword-face))
- "\\_<\\(then\\|continue\\|format\\|include\\|stop\\|return\\)\\_>"
+ "\\_<\\(then\\|continue\\|format\\|include\\|\\(?:error[ \t]+\\)?stop\\|\
+return\\)\\_>"
'("\\_<\\(exit\\|cycle\\)[ \t]*\\(\\(?:\\sw\\|\\s_\\)+\\)?\\_>"
(1 font-lock-keyword-face) (2 font-lock-constant-face nil t))
'("\\_<\\(case\\)[ \t]*\\(default\\|(\\)" . 1)
@@ -1629,7 +1634,10 @@ Return (TYPE NAME), or nil if not found."
(re-search-backward f90-program-block-re nil 'move))
(beginning-of-line)
(skip-chars-forward " \t0-9")
- (cond ((setq matching-beg (f90-looking-at-program-block-start))
+ ;; Check if in string in case using non-standard feature where
+ ;; continued strings do not need "&" at start of continuations.
+ (cond ((f90-in-string))
+ ((setq matching-beg (f90-looking-at-program-block-start))
(setq count (1- count)))
((f90-looking-at-program-block-end)
(setq count (1+ count)))))
@@ -1654,7 +1662,8 @@ Return (TYPE NAME), or nil if not found."
(re-search-forward f90-program-block-re nil 'move))
(beginning-of-line)
(skip-chars-forward " \t0-9")
- (cond ((f90-looking-at-program-block-start)
+ (cond ((f90-in-string))
+ ((f90-looking-at-program-block-start)
(setq count (1+ count)))
((setq matching-end (f90-looking-at-program-block-end))
(setq count (1- count))))
@@ -2194,8 +2203,12 @@ Leave point at the end of line."
(end-point (point))
(case-fold-search t)
matching-beg beg-name end-name beg-block end-block end-struct)
+ ;; Check if in string in case using non-standard feature where
+ ;; continued strings do not need "&" at start of continuations.
(when (save-excursion (beginning-of-line) (skip-chars-forward " \t0-9")
- (setq end-struct (f90-looking-at-program-block-end)))
+ (unless (f90-in-string)
+ (setq end-struct
+ (f90-looking-at-program-block-end))))
(setq end-block (car end-struct)
end-name (cadr end-struct))
(save-excursion
@@ -2338,6 +2351,8 @@ CHANGE-WORD should be one of 'upcase-word,
'downcase-word, 'capitalize-word."
(skip-chars-forward " \t0-9")
(looking-at "#"))))
(setq ref-point (point)
+ ;; FIXME this does not work for constructs with
+ ;; embedded space, eg "sync all".
back-point (save-excursion (backward-word 1) (point))
saveword (buffer-substring back-point ref-point))
(funcall change-word -1)
diff --git a/lisp/progmodes/verilog-mode.el b/lisp/progmodes/verilog-mode.el
index 7b6f2d3..5720654 100644
--- a/lisp/progmodes/verilog-mode.el
+++ b/lisp/progmodes/verilog-mode.el
@@ -123,7 +123,7 @@
;;; Code:
;; This variable will always hold the version number of the mode
-(defconst verilog-mode-version "2014-11-12-aa4b777-vpo"
+(defconst verilog-mode-version "2015-02-20-0d6420b-vpo"
"Version of this Verilog mode.")
(defconst verilog-mode-release-emacs t
"If non-nil, this version of Verilog mode was released with Emacs itself.")
@@ -8419,7 +8419,6 @@ Return an array of [outputs inouts inputs wire reg assign
const]."
(defvar sigs-temp)
;; These are known to be from other packages and may not be defined
(defvar diff-command nil)
- (defvar vector-skip-list)
;; There are known to be from newer versions of Emacs
(defvar create-lockfiles))
@@ -10884,7 +10883,7 @@ See the example in `verilog-auto-inout-modport'."
(defvar vl-bits nil "See `verilog-auto-inst'.") ; Prevent compile warning
(defvar vl-mbits nil "See `verilog-auto-inst'.") ; Prevent compile warning
-(defun verilog-auto-inst-port (port-st indent-pt tpl-list tpl-num for-star
par-values)
+(defun verilog-auto-inst-port (port-st indent-pt moddecls tpl-list tpl-num
for-star par-values)
"Print out an instantiation connection for this PORT-ST.
Insert to INDENT-PT, use template TPL-LIST.
@ are instantiation numbers, replaced with TPL-NUM.
@@ -10901,9 +10900,10 @@ If PAR-VALUES replace final strings with these
parameter values."
(vl-mbits (if (verilog-sig-multidim port-st)
(verilog-sig-multidim-string port-st) ""))
(vl-bits (if (or verilog-auto-inst-vector
- (not (assoc port vector-skip-list))
+ (not (assoc port (verilog-decls-get-signals
moddecls)))
(not (equal (verilog-sig-bits port-st)
- (verilog-sig-bits (assoc port
vector-skip-list)))))
+ (verilog-sig-bits
+ (assoc port (verilog-decls-get-signals
moddecls))))))
(or (verilog-sig-bits port-st) "")
""))
(case-fold-search nil)
@@ -10932,7 +10932,12 @@ If PAR-VALUES replace final strings with these
parameter values."
(concat "/*" vl-mbits vl-bits "*/")
(concat vl-bits))
tpl-net (concat port
- (if vl-modport (concat "." vl-modport) "")
+ (if (and vl-modport
+ ;; .modport cannot be added if attachment is
+ ;; already declared as modport, VCS croaks
+ (let ((sig (assoc port
(verilog-decls-get-interfaces moddecls))))
+ (not (and sig (verilog-sig-modport sig)))))
+ (concat "." vl-modport) "")
dflt-bits))
;; Find template
(cond (tpl-ass ; Template of exact port name
@@ -11002,12 +11007,12 @@ If PAR-VALUES replace final strings with these
parameter values."
;;(x "address@hidden"(+ (* 8 @) 7)\":@\"(* 8 @)\"]")
;;(x ".out (address@hidden"(concat (+ (* 8 @) 7) \\\":\\\" ( * 8 @))\"]));")
-(defun verilog-auto-inst-port-list (sig-list indent-pt tpl-list tpl-num
for-star par-values)
+(defun verilog-auto-inst-port-list (sig-list indent-pt moddecls tpl-list
tpl-num for-star par-values)
"For `verilog-auto-inst' print a list of ports using
`verilog-auto-inst-port'."
(when verilog-auto-inst-sort
(setq sig-list (sort (copy-alist sig-list) `verilog-signals-sort-compare)))
(mapc (lambda (port)
- (verilog-auto-inst-port port indent-pt
+ (verilog-auto-inst-port port indent-pt moddecls
tpl-list tpl-num for-star par-values))
sig-list))
@@ -11366,8 +11371,6 @@ For more information see the \\[verilog-faq] and forums
at URL
(+ 16 (* 8 (/ (+ indent-pt 7) 8)))))
(modi (verilog-modi-current))
(moddecls (verilog-modi-get-decls modi))
- (vector-skip-list (unless verilog-auto-inst-vector
- (verilog-decls-get-signals moddecls)))
submod submodi submoddecls
inst skip-pins tpl-list tpl-num did-first par-values)
@@ -11409,7 +11412,7 @@ For more information see the \\[verilog-faq] and forums
at URL
(when (not did-first) (verilog-auto-inst-first) (setq did-first t))
;; Note these are searched for in verilog-read-sub-decls.
(verilog-insert-indent "// Interfaced\n")
- (verilog-auto-inst-port-list sig-list indent-pt
+ (verilog-auto-inst-port-list sig-list indent-pt moddecls
tpl-list tpl-num for-star par-values)))
(let ((sig-list (verilog-signals-not-in
(verilog-decls-get-interfaces submoddecls)
@@ -11419,7 +11422,7 @@ For more information see the \\[verilog-faq] and forums
at URL
(when (not did-first) (verilog-auto-inst-first) (setq did-first t))
;; Note these are searched for in verilog-read-sub-decls.
(verilog-insert-indent "// Interfaces\n")
- (verilog-auto-inst-port-list sig-list indent-pt
+ (verilog-auto-inst-port-list sig-list indent-pt moddecls
tpl-list tpl-num for-star par-values)))
(let ((sig-list (verilog-signals-not-in
(verilog-decls-get-outputs submoddecls)
@@ -11428,7 +11431,7 @@ For more information see the \\[verilog-faq] and forums
at URL
(when sig-list
(when (not did-first) (verilog-auto-inst-first) (setq did-first t))
(verilog-insert-indent "// Outputs\n")
- (verilog-auto-inst-port-list sig-list indent-pt
+ (verilog-auto-inst-port-list sig-list indent-pt moddecls
tpl-list tpl-num for-star par-values)))
(let ((sig-list (verilog-signals-not-in
(verilog-decls-get-inouts submoddecls)
@@ -11437,7 +11440,7 @@ For more information see the \\[verilog-faq] and forums
at URL
(when sig-list
(when (not did-first) (verilog-auto-inst-first) (setq did-first t))
(verilog-insert-indent "// Inouts\n")
- (verilog-auto-inst-port-list sig-list indent-pt
+ (verilog-auto-inst-port-list sig-list indent-pt moddecls
tpl-list tpl-num for-star par-values)))
(let ((sig-list (verilog-signals-not-in
(verilog-decls-get-inputs submoddecls)
@@ -11446,7 +11449,7 @@ For more information see the \\[verilog-faq] and forums
at URL
(when sig-list
(when (not did-first) (verilog-auto-inst-first) (setq did-first t))
(verilog-insert-indent "// Inputs\n")
- (verilog-auto-inst-port-list sig-list indent-pt
+ (verilog-auto-inst-port-list sig-list indent-pt moddecls
tpl-list tpl-num for-star par-values)))
;; Kill extra semi
(save-excursion
@@ -11509,8 +11512,6 @@ Templates:
(+ 16 (* 8 (/ (+ indent-pt 7) 8)))))
(modi (verilog-modi-current))
(moddecls (verilog-modi-get-decls modi))
- (vector-skip-list (unless verilog-auto-inst-vector
- (verilog-decls-get-signals moddecls)))
submod submodi submoddecls
inst skip-pins tpl-list tpl-num did-first)
;; Find module name that is instantiated
@@ -11550,7 +11551,7 @@ Templates:
(when (not did-first) (verilog-auto-inst-first) (setq did-first t))
;; Note these are searched for in verilog-read-sub-decls.
(verilog-insert-indent "// Parameters\n")
- (verilog-auto-inst-port-list sig-list indent-pt
+ (verilog-auto-inst-port-list sig-list indent-pt moddecls
tpl-list tpl-num nil nil)))
;; Kill extra semi
(save-excursion
diff --git a/lisp/progmodes/vhdl-mode.el b/lisp/progmodes/vhdl-mode.el
index 875de3b..8d6d2a2 100644
--- a/lisp/progmodes/vhdl-mode.el
+++ b/lisp/progmodes/vhdl-mode.el
@@ -13,10 +13,10 @@
;; filed in the Emacs bug reporting system against this file, a copy
;; of the bug report be sent to the maintainer's email address.
-(defconst vhdl-version "3.36.1"
+(defconst vhdl-version "3.37.1"
"VHDL Mode version number.")
-(defconst vhdl-time-stamp "2014-11-27"
+(defconst vhdl-time-stamp "2015-01-15"
"VHDL Mode time stamp for last update.")
;; This file is part of GNU Emacs.
@@ -59,7 +59,7 @@
;; - Block commenting
;; - Code fixing/alignment/beautification
;; - PostScript printing
-;; - VHDL'87/'93 and VHDL-AMS supported
+;; - VHDL'87/'93/'02/'08 and VHDL-AMS supported
;; - Comprehensive menu
;; - Fully customizable
;; - Works under GNU Emacs (recommended) and XEmacs
@@ -716,6 +716,7 @@ A project setup file can be obtained by exporting a project
(see menu).
Basic standard:
VHDL'87 : IEEE Std 1076-1987
VHDL'93/02 : IEEE Std 1076-1993/2002
+ VHDL'08 : IEEE Std 1076-2008
Additional standards:
VHDL-AMS : IEEE Std 1076.1 (analog-mixed-signal)
Math packages: IEEE Std 1076.2 (`math_real', `math_complex')
@@ -724,7 +725,8 @@ NOTE: Activate the new setting in a VHDL buffer by using
the menu entry
\"Activate Options\"."
:type '(list (choice :tag "Basic standard"
(const :tag "VHDL'87" 87)
- (const :tag "VHDL'93/02" 93))
+ (const :tag "VHDL'93/02" 93)
+ (const :tag "VHDL'08" 08))
(set :tag "Additional standards" :indent 2
(const :tag "VHDL-AMS" ams)
(const :tag "Math packages" math)))
@@ -942,6 +944,12 @@ If nil, only a list of actual parameters is entered."
:type 'boolean
:group 'vhdl-template)
+(defcustom vhdl-sensitivity-list-all t
+ "Non-nil means use 'all' keyword in sensitivity list."
+ :version "25.1"
+ :type 'boolean
+ :group 'vhdl-template)
+
(defcustom vhdl-zero-string "'0'"
"String to use for a logic zero."
:type 'string
@@ -1728,7 +1736,7 @@ NOTE: Activate the new setting in a VHDL buffer by
re-fontifying it (menu
'vhdl-words-init 'vhdl-font-lock-init))
:group 'vhdl-highlight)
-(defcustom vhdl-directive-keywords '("pragma" "synopsys")
+(defcustom vhdl-directive-keywords '("psl" "pragma" "synopsys")
"List of compiler directive keywords recognized for highlighting.
NOTE: Activate the new setting in a VHDL buffer by re-fontifying it (menu
@@ -2001,6 +2009,8 @@ reported and the syntactic symbol is ignored.")
(package . 0)
(architecture . 0)
(package-body . 0)
+ (context . 0)
+ (directive . 0)
)
"Default settings for offsets of syntactic elements.
Do not change this constant! See the variable `vhdl-offsets-alist' for
@@ -2065,7 +2075,8 @@ Here is the current list of valid syntactic element
symbols:
configuration -- inside a configuration declaration
package -- inside a package declaration
architecture -- inside an architecture body
- package-body -- inside a package body")
+ package-body -- inside a package body
+ context -- inside a context declaration")
(defvar vhdl-comment-only-line-offset 0
"Extra offset for line which contains only the start of a comment.
@@ -2684,6 +2695,7 @@ elements > `vhdl-menu-max-size'."
(define-key vhdl-template-map "Cd" 'vhdl-template-configuration-decl)
(define-key vhdl-template-map "Cs" 'vhdl-template-configuration-spec)
(define-key vhdl-template-map "co" 'vhdl-template-constant)
+ (define-key vhdl-template-map "ct" 'vhdl-template-context)
(define-key vhdl-template-map "di" 'vhdl-template-disconnect)
(define-key vhdl-template-map "el" 'vhdl-template-else)
(define-key vhdl-template-map "ei" 'vhdl-template-elsif)
@@ -2963,7 +2975,7 @@ STRING are replaced by `-' and substrings are converted
to lower case."
(modify-syntax-entry ?\* "." st)
(modify-syntax-entry ?\+ "." st)
(modify-syntax-entry ?\. "." st)
- (modify-syntax-entry ?\/ "." st)
+;;; (modify-syntax-entry ?\/ "." st)
(modify-syntax-entry ?\: "." st)
(modify-syntax-entry ?\; "." st)
(modify-syntax-entry ?\< "." st)
@@ -2975,11 +2987,13 @@ STRING are replaced by `-' and substrings are converted
to lower case."
(modify-syntax-entry ?\" "\"" st)
;; define underscore
(modify-syntax-entry ?\_ (if vhdl-underscore-is-part-of-word "w" "_") st)
- ;; a single hyphen is punctuation, but a double hyphen starts a comment
- (modify-syntax-entry ?\- ". 12" st)
- ;; and \n and \^M end a comment
- (modify-syntax-entry ?\n ">" st)
- (modify-syntax-entry ?\^M ">" st)
+ ;; single-line comments
+ (modify-syntax-entry ?\- ". 12b" st)
+ ;; multi-line comments
+ (modify-syntax-entry ?\/ ". 14b" st)
+ (modify-syntax-entry ?* ". 23" st)
+ (modify-syntax-entry ?\n "> b" st)
+ (modify-syntax-entry ?\^M "> b" st)
;; define parentheses to match
(modify-syntax-entry ?\( "()" st)
(modify-syntax-entry ?\) ")(" st)
@@ -3044,6 +3058,7 @@ STRING are replaced by `-' and substrings are converted
to lower case."
("configuration" . vhdl-template-configuration-hook)
("cons" . vhdl-template-constant-hook)
("constant" . vhdl-template-constant-hook)
+ ("context" . vhdl-template-context-hook)
("disconnect" . vhdl-template-disconnect-hook)
("downto" . vhdl-template-default-hook)
("else" . vhdl-template-else-hook)
@@ -3191,6 +3206,7 @@ STRING are replaced by `-' and substrings are converted
to lower case."
("configuration declaration" vhdl-template-configuration-decl)
("configuration specification" vhdl-template-configuration-spec)
("constant declaration" vhdl-template-constant)
+ ("context declaration" vhdl-template-context)
("disconnection specification" vhdl-template-disconnect)
("entity declaration" vhdl-template-entity)
("exit statement" vhdl-template-exit)
@@ -3367,6 +3383,7 @@ STRING are replaced by `-' and substrings are converted
to lower case."
["Configuration (Decl)" vhdl-template-configuration-decl t]
["Configuration (Spec)" vhdl-template-configuration-spec t]
["Constant" vhdl-template-constant t]
+ ["Context" vhdl-template-context t]
["Disconnect" vhdl-template-disconnect t]
["Else" vhdl-template-else t]
["Elsif" vhdl-template-elsif t]
@@ -3708,6 +3725,11 @@ STRING are replaced by `-' and substrings are converted
to lower case."
(list '93 (cadr vhdl-standard)))
(vhdl-activate-customizations))
:style radio :selected (eq '93 (car vhdl-standard))]
+ ["VHDL'08"
+ (progn (customize-set-variable 'vhdl-standard
+ (list '08 (cadr vhdl-standard)))
+ (vhdl-activate-customizations))
+ :style radio :selected (eq '08 (car vhdl-standard))]
"--"
["VHDL-AMS"
(progn (customize-set-variable
@@ -3830,6 +3852,10 @@ STRING are replaced by `-' and substrings are converted
to lower case."
(customize-set-variable 'vhdl-conditions-in-parenthesis
(not vhdl-conditions-in-parenthesis))
:style toggle :selected vhdl-conditions-in-parenthesis]
+ ["Sensitivity List uses 'all'"
+ (customize-set-variable 'vhdl-sensitivity-list-all
+ (not vhdl-sensitivity-list-all))
+ :style toggle :selected vhdl-sensitivity-list-all]
["Zero String..." (customize-option 'vhdl-zero-string) t]
["One String..." (customize-option 'vhdl-one-string) t]
("File Header"
@@ -4224,6 +4250,9 @@ STRING are replaced by `-' and substrings are converted
to lower case."
("Entity"
"^\\s-*\\(entity\\)\\s-+\\(\\(\\w\\|\\s_\\)+\\)"
2)
+ ("Context"
+ "^\\s-*\\(context\\)\\s-+\\(\\(\\w\\|\\s_\\)+\\)"
+ 2)
)
"Imenu generic expression for VHDL Mode. See `imenu-generic-expression'.")
@@ -4677,7 +4706,7 @@ Usage:
VHDL STANDARDS:
The VHDL standards to be used are specified in option `vhdl-standard'.
- Available standards are: VHDL'87/'93(02), VHDL-AMS, and Math Packages.
+ Available standards are: VHDL'87/'93(02)/'08, VHDL-AMS, and Math Packages.
KEYWORD CASE:
@@ -4987,6 +5016,12 @@ Key bindings:
)
"List of VHDL'02 keywords.")
+(defconst vhdl-08-keywords
+ '(
+ "context" "force" "property" "release" "sequence"
+ )
+ "List of VHDL'08 keywords.")
+
(defconst vhdl-ams-keywords
'(
"across" "break" "limit" "nature" "noise" "procedural" "quantity"
@@ -5028,6 +5063,12 @@ Key bindings:
)
"List of VHDL'02 standardized types.")
+(defconst vhdl-08-types
+ '(
+ "boolean_vector" "integer_vector" "real_vector" "time_vector"
+ )
+ "List of VHDL'08 standardized types.")
+
(defconst vhdl-ams-types
;; standards: IEEE Std 1076.1-2007, IEEE Std 1076.1.1-2004
'(
@@ -5103,6 +5144,12 @@ Key bindings:
)
"List of VHDL'02 standardized attributes.")
+(defconst vhdl-08-attributes
+ '(
+ "instance_name" "path_name"
+ )
+ "List of VHDL'08 standardized attributes.")
+
(defconst vhdl-ams-attributes
'(
"across" "through"
@@ -5174,6 +5221,15 @@ Key bindings:
)
"List of VHDL'02 standardized functions.")
+(defconst vhdl-08-functions
+ '(
+ "finish" "flush" "justify" "maximum" "minimum"
+ "resolution_limit" "rising_edge" "stop" "swrite"
+ "tee" "to_binarystring" "to_bstring" "to_hexstring" "to_hstring"
+ "to_octalstring" "to_ostring" "to_string"
+ )
+ "List of VHDL'08 standardized functions.")
+
(defconst vhdl-ams-functions
'(
;; package `standard'
@@ -5202,6 +5258,13 @@ Key bindings:
)
"List of VHDL'02 standardized packages and libraries.")
+(defconst vhdl-08-packages
+ '(
+ "env" "numeric_std_signed" "numeric_std_unsigned"
+ "ieee_bit_context" "ieee_std_context" ;; contexts
+ )
+ "List of VHDL'08 standardized packages and libraries.")
+
(defconst vhdl-ams-packages
'(
"fundamental_constants" "material_constants" "energy_systems"
@@ -5216,6 +5279,18 @@ Key bindings:
)
"List of Math Packages standardized packages and libraries.")
+(defconst vhdl-08-directives
+ '(
+ "author" "author_info" "begin" "begin_protected" "comment"
+ "data_block" "data_keyname" "data_keyowner" "data_method"
+ "decrypt_license" "digest_block" "digest_key_method" "digest_keyname"
+ "digest_keyowner" "digest_method"
+ "encoding" "encrypt_agent" "encrypt_agent_info" "end" "end_protected"
+ "key_block" "key_keyname" "key_keyowner" "key_method"
+ "runtime_license" "viewport"
+ )
+ "List of VHDL'08 standardized tool directives.")
+
(defvar vhdl-keywords nil
"List of VHDL keywords.")
@@ -5237,6 +5312,9 @@ Key bindings:
(defvar vhdl-packages nil
"List of VHDL standardized packages and libraries.")
+(defvar vhdl-directives nil
+ "List of VHDL standardized packages and libraries.")
+
(defvar vhdl-reserved-words nil
"List of additional reserved words.")
@@ -5282,17 +5360,20 @@ Key bindings:
(vhdl-upcase-list
(and vhdl-highlight-case-sensitive vhdl-upper-case-keywords)
(append vhdl-02-keywords
+ (when (vhdl-standard-p '08) vhdl-08-keywords)
(when (vhdl-standard-p 'ams) vhdl-ams-keywords))))
(setq vhdl-types
(vhdl-upcase-list
(and vhdl-highlight-case-sensitive vhdl-upper-case-types)
(append vhdl-02-types
+ (when (vhdl-standard-p '08) vhdl-08-types)
(when (vhdl-standard-p 'ams) vhdl-ams-types)
(when (vhdl-standard-p 'math) vhdl-math-types))))
(setq vhdl-attributes
(vhdl-upcase-list
(and vhdl-highlight-case-sensitive vhdl-upper-case-attributes)
(append vhdl-02-attributes
+ (when (vhdl-standard-p '08) vhdl-08-attributes)
(when (vhdl-standard-p 'ams) vhdl-ams-attributes))))
(setq vhdl-enum-values
(vhdl-upcase-list
@@ -5307,12 +5388,16 @@ Key bindings:
'(""))))
(setq vhdl-functions
(append vhdl-02-functions
+ (when (vhdl-standard-p '08) vhdl-08-functions)
(when (vhdl-standard-p 'ams) vhdl-ams-functions)
(when (vhdl-standard-p 'math) vhdl-math-functions)))
(setq vhdl-packages
(append vhdl-02-packages
+ (when (vhdl-standard-p '08) vhdl-08-packages)
(when (vhdl-standard-p 'ams) vhdl-ams-packages)
(when (vhdl-standard-p 'math) vhdl-math-packages)))
+ (setq vhdl-directives
+ (append (when (vhdl-standard-p '08) vhdl-08-directives)))
(setq vhdl-reserved-words
(append (when vhdl-highlight-forbidden-words vhdl-forbidden-words)
(when vhdl-highlight-verilog-keywords vhdl-verilog-keywords)
@@ -5357,7 +5442,8 @@ Key bindings:
(list vhdl-upper-case-enum-values) vhdl-enum-values
(list vhdl-upper-case-constants) vhdl-constants
(list nil) vhdl-functions
- (list nil) vhdl-packages)))
+ (list nil) vhdl-packages
+ (list nil) vhdl-directives)))
;; initialize reserved words for VHDL Mode
(vhdl-words-init)
@@ -5598,9 +5684,24 @@ the offset is simply returned."
;; Syntactic support functions:
-(defun vhdl-in-comment-p ()
- "Check if point is in a comment."
- (eq (vhdl-in-literal) 'comment))
+(defun vhdl-in-comment-p (&optional pos)
+ "Check if point is in a comment (include multi-line comments)."
+ (let ((parse (lambda (p)
+ (let ((c (char-after p)))
+ (or (and c (eq (char-syntax c) ?<))
+ (nth 4 (parse-partial-sexp
+ (save-excursion
+ (beginning-of-defun)
+ (point)) p)))))))
+ (save-excursion
+ (goto-char (or pos (point)))
+ (or (funcall parse (point))
+ ;; `parse-partial-sexp's notion of comments doesn't span lines
+ (progn
+ (back-to-indentation)
+ (unless (eolp)
+ (forward-char)
+ (funcall parse (point))))))))
(defun vhdl-in-string-p ()
"Check if point is in a string."
@@ -5625,6 +5726,9 @@ the offset is simply returned."
((nth 3 state) 'string)
((nth 4 state) 'comment)
((vhdl-beginning-of-macro) 'pound)
+ ((vhdl-beginning-of-directive) 'directive)
+ ;; for multi-line comments
+ ((and (vhdl-standard-p '08) (vhdl-in-comment-p)) 'comment)
(t nil)))))
(defun vhdl-in-extended-identifier-p ()
@@ -5675,7 +5779,7 @@ negative, skip forward otherwise."
(goto-char lim )
(while (< (point) here)
(setq match
- (and (re-search-forward "--\\|[\"']"
+ (and (re-search-forward "--\\|[\"']\\|`"
here 'move)
(buffer-substring (match-beginning 0) (match-end 0))))
(setq state
@@ -5685,6 +5789,9 @@ negative, skip forward otherwise."
;; looking at the opening of a VHDL style comment
((string= "--" match)
(if (<= here (progn (end-of-line) (point))) 'comment))
+ ;; looking at a directive
+ ((string= "`" match)
+ (if (<= here (progn (end-of-line) (point))) 'directive))
;; looking at the opening of a double quote string
((string= "\"" match)
(if (not (save-restriction
@@ -5729,7 +5836,7 @@ negative, skip forward otherwise."
(setq here (point))
(vhdl-forward-comment hugenum)
;; skip preprocessor directives
- (when (and (eq (char-after) ?#)
+ (when (and (or (eq (char-after) ?#) (eq (char-after) ?`))
(= (vhdl-point 'boi) (point)))
(while (and (eq (char-before (vhdl-point 'eol)) ?\\)
(= (forward-line 1) 0)))
@@ -5766,6 +5873,19 @@ negative, skip forward otherwise."
(goto-char here)
nil)))
+(defun vhdl-beginning-of-directive (&optional lim)
+ "Go to the beginning of a directive (nicked from `cc-engine')."
+ (let ((here (point)))
+ (beginning-of-line)
+ (while (eq (char-before (1- (point))) ?\\)
+ (forward-line -1))
+ (back-to-indentation)
+ (if (and (<= (point) here)
+ (eq (char-after) ?`))
+ t
+ (goto-char here)
+ nil)))
+
(defun vhdl-backward-syntactic-ws (&optional lim)
"Backward skip over syntactic whitespace."
(let* ((here (point-min))
@@ -5822,7 +5942,7 @@ that point, else nil."
;; Core syntactic evaluation functions:
(defconst vhdl-libunit-re
- "\\b\\(architecture\\|configuration\\|entity\\|package\\)\\b[^_]")
+ "\\b\\(architecture\\|configuration\\|context\\|entity\\|package\\)\\b[^_]")
(defun vhdl-libunit-p ()
(and
@@ -5840,7 +5960,7 @@ that point, else nil."
))
(defconst vhdl-defun-re
-
"\\b\\(architecture\\|block\\|configuration\\|entity\\|package\\|process\\|procedural\\|procedure\\|function\\)\\b[^_]")
+
"\\b\\(architecture\\|block\\|configuration\\|context\\|entity\\|package\\|process\\|procedural\\|procedure\\|function\\)\\b[^_]")
(defun vhdl-defun-p ()
(save-excursion
@@ -5849,7 +5969,7 @@ that point, else nil."
(save-excursion
(backward-sexp)
(not (looking-at "end\\s-+\\w")))
- ;; "architecture", "configuration", "entity",
+ ;; "architecture", "configuration", "context", "entity",
;; "package", "procedure", "function":
t)))
@@ -5863,7 +5983,7 @@ corresponding \"begin\" keyword, else return nil."
(if (looking-at "block\\|process\\|procedural")
;; "block", "process". "procedural:
(buffer-substring (match-beginning 0) (match-end 0))
- ;; "architecture", "configuration", "entity", "package",
+ ;; "architecture", "configuration", "context", "entity", "package",
;; "procedure", "function":
"is"))))
@@ -5884,7 +6004,7 @@ vhdl-begin-fwd-re, and are not inside a literal, and that
we are not in
the middle of an identifier that just happens to contain a \"begin\"
keyword."
(cond
- ;; "[architecture|case|configuration|entity|package|
+ ;; "[architecture|case|configuration|context|entity|package|
;; procedure|function] ... is":
((and (looking-at "i")
(save-excursion
@@ -5897,7 +6017,7 @@ keyword."
(let (foundp)
(while (and (not foundp)
(re-search-backward
-
";\\|\\b\\(architecture\\|case\\|configuration\\|entity\\|package\\|procedure\\|return\\|is\\|begin\\|process\\|procedural\\|block\\)\\b[^_]"
+
";\\|\\b\\(architecture\\|case\\|configuration\\|context\\|entity\\|package\\|procedure\\|return\\|is\\|begin\\|process\\|procedural\\|block\\)\\b[^_]"
lim 'move))
(if (or (= (preceding-char) ?_)
(vhdl-in-literal))
@@ -6092,7 +6212,7 @@ of an identifier that just happens to contain an \"end\"
keyword."
(vector "for" (vhdl-first-word pos) nil nil))
;; "end [id]":
(t
- (vector
"begin\\|architecture\\|configuration\\|entity\\|package\\|procedure\\|function"
+ (vector
"begin\\|architecture\\|configuration\\|context\\|entity\\|package\\|procedure\\|function"
(vhdl-first-word pos)
;; return an alist of (statement . keyword) mappings
'(
@@ -6102,6 +6222,8 @@ of an identifier that just happens to contain an \"end\"
keyword."
("architecture" . "is")
;; "configuration ... is ... end [id]":
("configuration" . "is")
+ ;; "context ... is ... end [id]":
+ ("context" . "is")
;; "entity ... is ... end [id]":
("entity" . "is")
;; "package ... is ... end [id]":
@@ -6716,7 +6838,8 @@ keyword at PLACEHOLDER, then return the library unit
type."
(cond
((looking-at "e") 'entity)
((looking-at "a") 'architecture)
- ((looking-at "c") 'configuration)
+ ((looking-at "conf") 'configuration)
+ ((looking-at "cont") 'context)
((looking-at "p")
(save-excursion
(goto-char bod)
@@ -6992,7 +7115,7 @@ is not moved."
(goto-char (1+ containing-sexp))
(skip-chars-forward " \t")
(not (eolp))
- (not (looking-at "--")))
+ (not (looking-at "--\\|`")))
(save-excursion
(vhdl-beginning-of-statement-1 containing-sexp)
(skip-chars-backward " \t(")
@@ -7141,8 +7264,10 @@ is not moved."
;; now we need to look at any modifiers
(goto-char indent-point)
(skip-chars-forward " \t")
- (if (looking-at "--")
+ (if (or (looking-at "--") (looking-at "/\\*"))
(vhdl-add-syntax 'comment))
+ (if (looking-at "`")
+ (vhdl-add-syntax 'directive))
(if (eq literal 'pound)
(vhdl-add-syntax 'cpp-macro))
;; return the syntax
@@ -7216,8 +7341,12 @@ only-lines."
(vhdl-comment-indent)
;; otherwise, indent as specified by vhdl-comment-only-line-offset
(if (not (bolp))
+ ;; inside multi-line comment
+ (if (looking-at "\\*")
+ 1
+ ;; otherwise
(or (car-safe vhdl-comment-only-line-offset)
- vhdl-comment-only-line-offset)
+ vhdl-comment-only-line-offset))
(or (cdr-safe vhdl-comment-only-line-offset)
(car-safe vhdl-comment-only-line-offset)
-1000 ;jam it against the left side
@@ -7457,7 +7586,7 @@ ENDPOS is encountered."
(mapc
(function
(lambda (elt)
- (if (memq (car elt) '(entity configuration package
+ (if (memq (car elt) '(entity configuration context package
package-body architecture))
nil
(setq expurgated (append expurgated (list elt))))))
@@ -7787,7 +7916,7 @@ the token in MATCH."
(vhdl-prepare-search-2
(save-excursion
;; search for declarative part
- (when (and (re-search-backward
"^\\(architecture\\|begin\\|configuration\\|end\\|entity\\|package\\)\\>" nil t)
+ (when (and (re-search-backward
"^\\(architecture\\|begin\\|configuration\\|context\\|end\\|entity\\|package\\)\\>"
nil t)
(not (member (upcase (match-string 1)) '("BEGIN" "END"))))
(setq beg (point))
(re-search-forward "^\\(begin\\|end\\)\\>" nil t)
@@ -9137,6 +9266,27 @@ a configuration declaration if not within a design unit."
(insert ";")
(vhdl-comment-insert-inline))))))
+(defun vhdl-template-context ()
+ "Insert a context declaration."
+ (interactive)
+ (let ((margin (current-indentation))
+ (start (point))
+ entity-exists string name position)
+ (vhdl-insert-keyword "CONTEXT ")
+ (when (setq name (vhdl-template-field "name" nil t start (point)))
+ (vhdl-insert-keyword " IS\n")
+ (when (memq vhdl-insert-empty-lines '(unit all)) (insert "\n"))
+ (indent-to (+ margin vhdl-basic-offset))
+ (setq position (point))
+ (insert "\n")
+ (when (memq vhdl-insert-empty-lines '(unit all)) (insert "\n"))
+ (indent-to margin)
+ (vhdl-insert-keyword "END ")
+ (unless (vhdl-standard-p '87)
+ (vhdl-insert-keyword "CONTEXT "))
+ (insert name ";")
+ (goto-char position))))
+
(defun vhdl-template-default ()
"Insert nothing."
(interactive)
@@ -9798,8 +9948,10 @@ otherwise."
(forward-char 1))
(insert "(")
(if (not seq)
- (unless (setq input-signals
- (vhdl-template-field "[sensitivity list]" ")" t))
+ (unless (or (and (vhdl-standard-p '08) vhdl-sensitivity-list-all
+ (progn (insert "all)") (setq input-signals "all")))
+ (setq input-signals
+ (vhdl-template-field "[sensitivity list]" ")" t)))
(setq input-signals "")
(delete-char -2))
(setq clock (or (and (not (equal "" vhdl-clock-name))
@@ -10533,7 +10685,8 @@ specification, if not already there."
(while (search-forward "<standard>" end t)
(replace-match
(concat "VHDL" (cond ((vhdl-standard-p '87) "'87")
- ((vhdl-standard-p '93) "'93/02"))
+ ((vhdl-standard-p '93) "'93/02")
+ ((vhdl-standard-p '08) "'08"))
(when (vhdl-standard-p 'ams) ", VHDL-AMS")
(when (vhdl-standard-p 'math) ", Math Packages")) t t))
(goto-char beg)
@@ -11071,7 +11224,7 @@ else insert tab (used for word completion in VHDL
minibuffer)."
(save-excursion
(beginning-of-line)
;; search backward for block beginning or end
- (while (or (while (and (setq pos (re-search-backward
"^\\s-*\\(\\(end\\)\\|\\(\\(impure\\|pure\\)[
\t\n\r\f]+\\)?\\(function\\|procedure\\)\\|\\(for\\)\\|\\(architecture\\|component\\|configuration\\|entity\\|package\\(\\s-+body\\)?\\|type[
\t\n\r\f]+\\w+[ \t\n\r\f]+is[
\t\n\r\f]+\\(record\\|protected\\(\\s-+body\\)?\\)\\|units\\)\\|\\(\\w+[
\t\n\r\f]*:[ \t\n\r\f]*\\)?\\(postponed[
\t\n\r\f]+\\)?\\(block\\|case\\|for\\|if\\|procedural\\|process\\|while\\|loop\\)\\)\\>"
nil t))
+ (while (or (while (and (setq pos (re-search-backward
"^\\s-*\\(\\(end\\)\\|\\(\\(impure\\|pure\\)[
\t\n\r\f]+\\)?\\(function\\|procedure\\)\\|\\(for\\)\\|\\(architecture\\|component\\|configuration\\|context\\|entity\\|package\\(\\s-+body\\)?\\|type[
\t\n\r\f]+\\w+[ \t\n\r\f]+is[
\t\n\r\f]+\\(record\\|protected\\(\\s-+body\\)?\\)\\|units\\)\\|\\(\\w+[
\t\n\r\f]*:[ \t\n\r\f]*\\)?\\(postponed[
\t\n\r\f]+\\)?\\(block\\|case\\|for\\|if\\|procedural\\|process\\|while\\|loop\\)\\)\\>"
nil t))
;; not consider subprogram declarations
(or (and (match-string 5)
(save-match-data
@@ -11102,7 +11255,7 @@ else insert tab (used for word completion in VHDL
minibuffer)."
(save-excursion
(end-of-line)
;; search forward for block beginning or end
- (while (or (while (and (setq pos (re-search-forward
"^\\s-*\\(\\(end\\)\\|\\(\\(impure\\|pure\\)[
\t\n\r\f]+\\)?\\(function\\|procedure\\)\\|\\(for\\)\\|\\(architecture\\|component\\|configuration\\|entity\\|package\\(\\s-+body\\)?\\|type[
\t\n\r\f]+\\w+[ \t\n\r\f]+is[
\t\n\r\f]+\\(record\\|protected\\(\\s-+body\\)?\\)\\|units\\)\\|\\(\\w+[
\t\n\r\f]*:[ \t\n\r\f]*\\)?\\(postponed[
\t\n\r\f]+\\)?\\(block\\|case\\|for\\|if\\|procedural\\|process\\|while\\|loop\\)\\)\\>"
nil t))
+ (while (or (while (and (setq pos (re-search-forward
"^\\s-*\\(\\(end\\)\\|\\(\\(impure\\|pure\\)[
\t\n\r\f]+\\)?\\(function\\|procedure\\)\\|\\(for\\)\\|\\(architecture\\|component\\|configuration\\|context\\|entity\\|package\\(\\s-+body\\)?\\|type[
\t\n\r\f]+\\w+[ \t\n\r\f]+is[
\t\n\r\f]+\\(record\\|protected\\(\\s-+body\\)?\\)\\|units\\)\\|\\(\\w+[
\t\n\r\f]*:[ \t\n\r\f]*\\)?\\(postponed[
\t\n\r\f]+\\)?\\(block\\|case\\|for\\|if\\|procedural\\|process\\|while\\|loop\\)\\)\\>"
nil t))
;; not consider subprogram declarations
(or (and (match-string 5)
(save-match-data
@@ -11203,6 +11356,8 @@ but not if inside a comment or quote."
(vhdl-hooked-abbrev 'vhdl-template-configuration))
(defun vhdl-template-constant-hook ()
(vhdl-hooked-abbrev 'vhdl-template-constant))
+(defun vhdl-template-context-hook ()
+ (vhdl-hooked-abbrev 'vhdl-template-context))
(defun vhdl-template-disconnect-hook ()
(vhdl-hooked-abbrev 'vhdl-template-disconnect))
(defun vhdl-template-display-comment-hook ()
@@ -13190,7 +13345,8 @@ This does highlighting of keywords and standard
identifiers.")
(list
(concat
"^\\s-*\\("
- "architecture\\|configuration\\|entity\\|package\\(\\s-+body\\)?\\|"
+ "architecture\\|configuration\\|context\\|entity\\|package"
+ "\\(\\s-+body\\)?\\|"
"\\(\\(impure\\|pure\\)\\s-+\\)?function\\|procedure\\|component"
"\\)\\s-+\\(\\w+\\)")
5 'font-lock-function-name-face)
@@ -13232,9 +13388,9 @@ This does highlighting of keywords and standard
identifiers.")
(list
(concat
"^\\s-*end\\s-+\\(\\("
- "architecture\\|block\\|case\\|component\\|configuration\\|entity\\|"
- "for\\|function\\|generate\\|if\\|loop\\|package\\(\\s-+body\\)?\\|"
- "procedure\\|\\(postponed\\s-+\\)?process\\|"
+ "architecture\\|block\\|case\\|component\\|configuration\\|context\\|"
+ "entity\\|for\\|function\\|generate\\|if\\|loop\\|package"
+ "\\(\\s-+body\\)?\\|procedure\\|\\(postponed\\s-+\\)?process\\|"
(when (vhdl-standard-p 'ams) "procedural\\|")
"units"
"\\)\\s-+\\)?\\(\\w*\\)")
@@ -13266,10 +13422,10 @@ This does highlighting of keywords and standard
identifiers.")
;; highlight names in use clauses
(list
(concat
- "\\<use\\s-+\\(\\(entity\\|configuration\\)\\s-+\\)?"
+ "\\<\\(context\\|use\\)\\s-+\\(\\(entity\\|configuration\\)\\s-+\\)?"
"\\(\\w+\\)\\(\\.\\(\\w+\\)\\)?\\((\\(\\w+\\))\\)?")
- '(3 font-lock-function-name-face) '(5 font-lock-function-name-face nil t)
- '(7 font-lock-function-name-face nil t))
+ '(4 font-lock-function-name-face) '(6 font-lock-function-name-face nil t)
+ '(8 font-lock-function-name-face nil t))
;; highlight attribute name in attribute declarations/specifications
(list
@@ -13316,6 +13472,12 @@ This does highlighting of keywords and standard
identifiers.")
'(vhdl-font-lock-match-item
(progn (goto-char (match-end 1)) (match-beginning 2))
nil (1 font-lock-variable-name-face)))
+
+ ;; highlight tool directives
+ (list
+ (concat
+ "^\\s-*\\(`\\w+\\)")
+ 1 'font-lock-preprocessor-face)
)
"For consideration as a value of `vhdl-font-lock-keywords'.
This does context sensitive highlighting of names and labels.")
@@ -13661,7 +13823,7 @@ hierarchy otherwise.")
"Return position of end of current unit."
(let ((pos (point)))
(save-excursion
- (while (and (re-search-forward "^[
\t]*\\(architecture\\|configuration\\|entity\\|package\\)\\>" nil 1)
+ (while (and (re-search-forward "^[
\t]*\\(architecture\\|configuration\\|context\\|entity\\|package\\)\\>" nil 1)
(save-excursion
(goto-char (match-beginning 0))
(vhdl-backward-syntactic-ws)
@@ -13682,7 +13844,7 @@ hierarchy otherwise.")
"Scan the context clause that precedes a design unit."
(let (lib-alist)
(save-excursion
- (when (re-search-backward "^[
\t]*\\(architecture\\|configuration\\|entity\\|package\\)\\>" nil t)
+ (when (re-search-backward "^[
\t]*\\(architecture\\|configuration\\|context\\|entity\\|package\\)\\>" nil t)
(while (and (re-search-backward "^[ \t]*\\(end\\|use\\)\\>" nil t)
(equal "USE" (upcase (match-string 1))))
(when (looking-at "^[ \t]*use[
\t\n\r\f]*\\(\\w+\\)\\.\\(\\w+\\)\\.\\w+")
@@ -17502,6 +17664,7 @@ specified by a target."
'vhdl-argument-list-indent
'vhdl-association-list-with-formals
'vhdl-conditions-in-parenthesis
+ 'vhdl-sensitivity-list-all
'vhdl-zero-string
'vhdl-one-string
'vhdl-file-header
@@ -17606,6 +17769,17 @@ specified by a target."
(defconst vhdl-doc-release-notes nil
"\
+Release Notes for VHDL Mode 3.37
+================================
+
+- Added support for VHDL'08:
+ - New keywords, types, functions, attributes, operators, packages
+ - Context declaration
+ - Block comments
+ - Directives
+ - 'all' keyword in sensitivity list
+
+
Release Notes for VHDL Mode 3.34
================================
@@ -17667,6 +17841,13 @@ User Options
Reserved words in VHDL
----------------------
+VHDL'08 (IEEE Std 1076-2008):
+ `vhdl-08-keywords' : keywords
+ `vhdl-08-types' : standardized types
+ `vhdl-08-attributes' : standardized attributes
+ `vhdl-08-functions' : standardized functions
+ `vhdl-08-packages' : standardized packages and libraries
+
VHDL'93/02 (IEEE Std 1076-1993/2002):
`vhdl-02-keywords' : keywords
`vhdl-02-types' : standardized types
diff --git a/lisp/progmodes/xref.el b/lisp/progmodes/xref.el
index 55405b6..fe72b3f 100644
--- a/lisp/progmodes/xref.el
+++ b/lisp/progmodes/xref.el
@@ -628,6 +628,29 @@ The argument has the same meaning as in `apropos'."
;;;###autoload (define-key ctl-x-5-map "." #'xref-find-definitions-other-frame)
+;;; Helper functions
+
+(defvar xref-etags-mode--saved nil)
+
+(define-minor-mode xref-etags-mode
+ "Minor mode to make xref use etags again.
+
+Certain major modes install their own mechanisms for listing
+identifiers and navigation. Turn this on to undo those settings
+and just use etags."
+ :lighter ""
+ (if xref-etags-mode
+ (progn
+ (setq xref-etags-mode--saved
+ (cons xref-find-function
+ xref-identifier-completion-table-function))
+ (kill-local-variable 'xref-find-function)
+ (kill-local-variable 'xref-identifier-completion-table-function))
+ (setq-local xref-find-function (car xref-etags-mode--saved))
+ (setq-local xref-identifier-completion-table-function
+ (cdr xref-etags-mode--saved))))
+
+
(provide 'xref)
;;; xref.el ends here
diff --git a/lisp/url/ChangeLog b/lisp/url/ChangeLog
index 920d692..0f46413 100644
--- a/lisp/url/ChangeLog
+++ b/lisp/url/ChangeLog
@@ -4,6 +4,11 @@
* url-dav.el (url-dav-delete-directory, url-dav-delete-file)
(url-dav-directory-files): Keep diagnostics consistent with system's.
+2015-01-17 Ivan Shmakov <address@hidden>
+
+ * url-cookie.el (url-cookie-write-file): Let-bind print-length
+ and print-level to nil to avoid writing a garbled list. (Bug#16805)
+
2014-12-12 Lars Magne Ingebrigtsen <address@hidden>
* url-http.el (url-http-parse-headers): `gnutls-available-p' is
diff --git a/m4/dup2.m4 b/m4/dup2.m4
index 0354c6a..9aa2ea8 100644
--- a/m4/dup2.m4
+++ b/m4/dup2.m4
@@ -1,4 +1,4 @@
-#serial 20
+#serial 22
dnl Copyright (C) 2002, 2005, 2007, 2009-2015 Free Software Foundation, Inc.
dnl This file is free software; the Free Software Foundation
dnl gives unlimited permission to copy and/or distribute it,
@@ -8,7 +8,6 @@ AC_DEFUN([gl_FUNC_DUP2],
[
AC_REQUIRE([gl_UNISTD_H_DEFAULTS])
AC_REQUIRE([AC_CANONICAL_HOST])
- AC_CHECK_FUNCS_ONCE([getdtablesize])
m4_ifdef([gl_FUNC_DUP2_OBSOLETE], [
AC_CHECK_FUNCS_ONCE([dup2])
if test $ac_cv_func_dup2 = no; then
@@ -20,38 +19,44 @@ AC_DEFUN([gl_FUNC_DUP2],
if test $HAVE_DUP2 = 1; then
AC_CACHE_CHECK([whether dup2 works], [gl_cv_func_dup2_works],
[AC_RUN_IFELSE([
- AC_LANG_PROGRAM([[#include <unistd.h>
-#include <fcntl.h>
-#include <errno.h>]],
- [int result = 0;
-#ifdef HAVE_GETDTABLESIZE
- int bad_fd = getdtablesize ();
-#else
- int bad_fd = 1000000;
-#endif
-#ifdef FD_CLOEXEC
- if (fcntl (1, F_SETFD, FD_CLOEXEC) == -1)
- result |= 1;
-#endif
- if (dup2 (1, 1) == 0)
- result |= 2;
-#ifdef FD_CLOEXEC
- if (fcntl (1, F_GETFD) != FD_CLOEXEC)
- result |= 4;
-#endif
- close (0);
- if (dup2 (0, 0) != -1)
- result |= 8;
- /* Many gnulib modules require POSIX conformance of EBADF. */
- if (dup2 (2, bad_fd) == -1 && errno != EBADF)
- result |= 16;
- /* Flush out some cygwin core dumps. */
- if (dup2 (2, -1) != -1 || errno != EBADF)
- result |= 32;
- dup2 (2, 255);
- dup2 (2, 256);
- return result;
- ])
+ AC_LANG_PROGRAM(
+ [[#include <errno.h>
+ #include <fcntl.h>
+ #include <limits.h>
+ #include <sys/resource.h>
+ #include <unistd.h>
+ ]],
+ [[int result = 0;
+ int bad_fd = INT_MAX;
+ struct rlimit rlim;
+ if (getrlimit (RLIMIT_NOFILE, &rlim) == 0
+ && 0 <= rlim.rlim_cur && rlim.rlim_cur <= INT_MAX
+ && rlim.rlim_cur != RLIM_INFINITY
+ && rlim.rlim_cur != RLIM_SAVED_MAX
+ && rlim.rlim_cur != RLIM_SAVED_CUR)
+ bad_fd = rlim.rlim_cur;
+ #ifdef FD_CLOEXEC
+ if (fcntl (1, F_SETFD, FD_CLOEXEC) == -1)
+ result |= 1;
+ #endif
+ if (dup2 (1, 1) == 0)
+ result |= 2;
+ #ifdef FD_CLOEXEC
+ if (fcntl (1, F_GETFD) != FD_CLOEXEC)
+ result |= 4;
+ #endif
+ close (0);
+ if (dup2 (0, 0) != -1)
+ result |= 8;
+ /* Many gnulib modules require POSIX conformance of EBADF. */
+ if (dup2 (2, bad_fd) == -1 && errno != EBADF)
+ result |= 16;
+ /* Flush out some cygwin core dumps. */
+ if (dup2 (2, -1) != -1 || errno != EBADF)
+ result |= 32;
+ dup2 (2, 255);
+ dup2 (2, 256);
+ return result;]])
],
[gl_cv_func_dup2_works=yes], [gl_cv_func_dup2_works=no],
[case "$host_os" in
@@ -59,9 +64,6 @@ AC_DEFUN([gl_FUNC_DUP2],
gl_cv_func_dup2_works="guessing no" ;;
cygwin*) # on cygwin 1.5.x, dup2(1,1) returns 0
gl_cv_func_dup2_works="guessing no" ;;
- linux*) # On linux between 2008-07-27 and 2009-05-11, dup2 of a
- # closed fd may yield -EBADF instead of -1 / errno=EBADF.
- gl_cv_func_dup2_works="guessing no" ;;
aix* | freebsd*)
# on AIX 7.1 and FreeBSD 6.1, dup2 (1,toobig) gives EMFILE,
# not EBADF.
diff --git a/m4/fcntl.m4 b/m4/fcntl.m4
index 733cd2d..218e786 100644
--- a/m4/fcntl.m4
+++ b/m4/fcntl.m4
@@ -1,4 +1,4 @@
-# fcntl.m4 serial 5
+# fcntl.m4 serial 7
dnl Copyright (C) 2009-2015 Free Software Foundation, Inc.
dnl This file is free software; the Free Software Foundation
dnl gives unlimited permission to copy and/or distribute it,
@@ -19,7 +19,7 @@ AC_DEFUN([gl_FUNC_FCNTL],
AC_REQUIRE([gl_USE_SYSTEM_EXTENSIONS])
AC_REQUIRE([gl_FCNTL_H_DEFAULTS])
AC_REQUIRE([AC_CANONICAL_HOST])
- AC_CHECK_FUNCS_ONCE([fcntl getdtablesize])
+ AC_CHECK_FUNCS_ONCE([fcntl])
if test $ac_cv_func_fcntl = no; then
gl_REPLACE_FCNTL
else
@@ -27,30 +27,34 @@ AC_DEFUN([gl_FUNC_FCNTL],
dnl haiku alpha 2 F_DUPFD has wrong errno
AC_CACHE_CHECK([whether fcntl handles F_DUPFD correctly],
[gl_cv_func_fcntl_f_dupfd_works],
- [AC_RUN_IFELSE([AC_LANG_PROGRAM([[
-#ifdef HAVE_GETDTABLESIZE
-# include <unistd.h>
-#endif
-#include <fcntl.h>
-#include <errno.h>
-]], [[int result = 0;
-#ifdef HAVE_GETDTABLESIZE
- int bad_fd = getdtablesize ();
-#else
- int bad_fd = 1000000;
-#endif
- if (fcntl (0, F_DUPFD, -1) != -1) result |= 1;
- if (errno != EINVAL) result |= 2;
- if (fcntl (0, F_DUPFD, bad_fd) != -1) result |= 4;
- if (errno != EINVAL) result |= 8;
- return result;
- ]])],
+ [AC_RUN_IFELSE(
+ [AC_LANG_PROGRAM(
+ [[#include <errno.h>
+ #include <fcntl.h>
+ #include <limits.h>
+ #include <sys/resource.h>
+ #include <unistd.h>
+ ]],
+ [[int result = 0;
+ int bad_fd = INT_MAX;
+ struct rlimit rlim;
+ if (getrlimit (RLIMIT_NOFILE, &rlim) == 0
+ && 0 <= rlim.rlim_cur && rlim.rlim_cur <= INT_MAX
+ && rlim.rlim_cur != RLIM_INFINITY
+ && rlim.rlim_cur != RLIM_SAVED_MAX
+ && rlim.rlim_cur != RLIM_SAVED_CUR)
+ bad_fd = rlim.rlim_cur;
+ if (fcntl (0, F_DUPFD, -1) != -1) result |= 1;
+ if (errno != EINVAL) result |= 2;
+ if (fcntl (0, F_DUPFD, bad_fd) != -1) result |= 4;
+ if (errno != EINVAL) result |= 8;
+ return result;]])],
[gl_cv_func_fcntl_f_dupfd_works=yes],
[gl_cv_func_fcntl_f_dupfd_works=no],
- [# Guess that it works on glibc systems
- case $host_os in #((
- *-gnu*) gl_cv_func_fcntl_f_dupfd_works="guessing yes";;
- *) gl_cv_func_fcntl_f_dupfd_works="guessing no";;
+ [case $host_os in
+ aix* | cygwin* | haiku*)
+ gl_cv_func_fcntl_f_dupfd_works="guessing no" ;;
+ *) gl_cv_func_fcntl_f_dupfd_works="guessing yes" ;;
esac])])
case $gl_cv_func_fcntl_f_dupfd_works in
*yes) ;;
diff --git a/m4/getdtablesize.m4 b/m4/getdtablesize.m4
index a6b6c1b..25e9968 100644
--- a/m4/getdtablesize.m4
+++ b/m4/getdtablesize.m4
@@ -1,4 +1,4 @@
-# getdtablesize.m4 serial 5
+# getdtablesize.m4 serial 6
dnl Copyright (C) 2008-2015 Free Software Foundation, Inc.
dnl This file is free software; the Free Software Foundation
dnl gives unlimited permission to copy and/or distribute it,
@@ -9,7 +9,9 @@ AC_DEFUN([gl_FUNC_GETDTABLESIZE],
AC_REQUIRE([gl_UNISTD_H_DEFAULTS])
AC_REQUIRE([AC_CANONICAL_HOST])
AC_CHECK_FUNCS_ONCE([getdtablesize])
- if test $ac_cv_func_getdtablesize = yes; then
+ AC_CHECK_DECLS_ONCE([getdtablesize])
+ if test $ac_cv_func_getdtablesize = yes &&
+ test $ac_cv_have_decl_getdtablesize = yes; then
# Cygwin 1.7.25 automatically increases the RLIMIT_NOFILE soft limit
# up to an unchangeable hard limit; all other platforms correctly
# require setrlimit before getdtablesize() can report a larger value.
diff --git a/src/ChangeLog b/src/ChangeLog
index 1c4758f..6ef5746 100644
--- a/src/ChangeLog
+++ b/src/ChangeLog
@@ -1,3 +1,77 @@
+2015-02-22 Jan Djärv <address@hidden>
+
+ * nsfns.m (Fx_frame_geometry): New function.
+ (syms_of_nsfns): Defsubr Sx_frame_geometry.
+
+2015-02-22 Paul Eggert <address@hidden>
+
+ Spelling fixes
+ * lisp.h (DEFINE_NON_NIL_Q_SYMBOL_MACROS):
+ Rename from DEFINE_NONNIL_Q_SYMBOL_MACROS. All uses changed.
+
+2015-02-21 Eli Zaretskii <address@hidden>
+
+ * w32term.c (queue_notifications):
+ * w32inevt.c (handle_file_notifications):
+ * w32font.c (w32_enumfont_pattern_entity): Prefer 'Qfoo' to
+ 'intern ("foo")'.
+
+2015-02-21 Paul Eggert <address@hidden>
+
+ Prefer 'Qfoo' to 'intern ("foo")'
+ * buffer.c (syms_of_buffer):
+ * bytecode.c (exec_byte_code):
+ * callint.c (Fcall_interactively):
+ * callproc.c (create_temp_file):
+ * charset.c (define_charset_internal):
+ * coding.c (syms_of_coding):
+ * editfns.c (syms_of_editfns):
+ * emacs.c (main):
+ * fns.c (syms_of_fns):
+ * frame.c (delete_frame, Fframe_parameters):
+ * keyboard.c (syms_of_keyboard):
+ * keymap.c (syms_of_keymap):
+ * minibuf.c (read_minibuf, syms_of_minibuf):
+ * nsfns.m (ns_cursor_type_to_lisp):
+ * textprop.c (syms_of_textprop):
+ * xdisp.c (Fformat_mode_line, syms_of_xdisp):
+ * xfns.c (x_create_tip_frame, Fx_select_font):
+ * xml.c (parse_region):
+ Prefer constants like 'Qfoo' to calls like 'intern ("foo")'.
+ * buffer.c (syms_of_buffer): OK to do (put 'erase-buffer 'disabled
+ t) here now ...
+ (keys_of_buffer): ... instead of here.
+ * ftfont.c (syms_of_ftfont): Move DEFSYM of Qmono from here ...
+ * xfns.c (syms_of_xfns): ... to here, since ftfont.c is more
+ optional than xfns.c.
+
+2015-02-20 Jan Djärv <address@hidden>
+
+ * emacs.c (terminate_due_to_signal): Move totally_unblock_input after
+ setting fatal_error_in_progress, so gobble_input and *read_socket are
+ not read if there are pending_signals.
+
+2015-02-20 Paul Eggert <address@hidden>
+
+ Simplify binary I/O configuration
+ * lread.c (Fload): Prefer FOPEN_TEXT and FOPEN_BINARY to #ifdef DOS_NT.
+ * sysstdio.h: Add copyright notice. Include <fcntl.h>.
+ (FOPEN_BINARY, FOPEN_TEXT): New macros.
+ * xfaces.c (Fx_load_color_file): Use FOPEN_TEXT, since POSIX
+ doesn't guarantee that "t" will work.
+
+2015-02-19 Eli Zaretskii <address@hidden>
+
+ * keyboard.c (read_char): Make sure this_single_command_key_start
+ is in sync with this_command_key_count, around the call to
+ input-method-function. (Bug#19774)
+
+2015-02-19 Fujii Hironori <address@hidden> (tiny change)
+
+ * w32fns.c (w32_wnd_proc) <WM_IME_STARTCOMPOSITION>: Pass the
+ message to DefWindowProc, after positioning the IME window, to
+ trigger its display. (Bug#11732)
+
2015-02-18 Eli Zaretskii <address@hidden>
* emacs.c (Fkill_emacs): Exit with specified exit code even if
diff --git a/src/buffer.c b/src/buffer.c
index bc06e17..279735c 100644
--- a/src/buffer.c
+++ b/src/buffer.c
@@ -5416,7 +5416,7 @@ syms_of_buffer (void)
DEFSYM (Qoverwrite_mode, "overwrite-mode");
Fput (Qoverwrite_mode, Qchoice,
list3 (Qnil, intern ("overwrite-mode-textual"),
- intern ("overwrite-mode-binary")));
+ Qoverwrite_mode_binary));
Fput (Qprotected_field, Qerror_conditions,
listn (CONSTYPE_PURE, 2, Qprotected_field, Qerror));
@@ -6334,6 +6334,8 @@ Functions running this hook are, `get-buffer-create',
defsubr (&Soverlay_get);
defsubr (&Soverlay_put);
defsubr (&Srestore_buffer_modified_p);
+
+ Fput (intern_c_string ("erase-buffer"), Qdisabled, Qt);
}
void
@@ -6341,8 +6343,4 @@ keys_of_buffer (void)
{
initial_define_key (control_x_map, 'b', "switch-to-buffer");
initial_define_key (control_x_map, 'k', "kill-buffer");
-
- /* This must not be in syms_of_buffer, because Qdisabled is not
- initialized when that function gets called. */
- Fput (intern_c_string ("erase-buffer"), Qdisabled, Qt);
}
diff --git a/src/bytecode.c b/src/bytecode.c
index b458367..55789b4 100644
--- a/src/bytecode.c
+++ b/src/bytecode.c
@@ -1945,10 +1945,10 @@ exec_byte_code (Lisp_Object bytestr, Lisp_Object
vector, Lisp_Object maxdepth,
/* Actually this is Bstack_ref with offset 0, but we use Bdup
for that instead. */
/* CASE (Bstack_ref): */
- call3 (intern ("error"),
- build_string ("Invalid byte opcode: op=%s, ptr=%d"),
- make_number (op),
- make_number ((stack.pc - 1) - stack.byte_string_start));
+ call3 (Qerror,
+ build_string ("Invalid byte opcode: op=%s, ptr=%d"),
+ make_number (op),
+ make_number ((stack.pc - 1) - stack.byte_string_start));
/* Handy byte-codes for lexical binding. */
CASE (Bstack_ref1):
diff --git a/src/callint.c b/src/callint.c
index 60021fd..0c6c030 100644
--- a/src/callint.c
+++ b/src/callint.c
@@ -615,9 +615,9 @@ invoke it. If KEYS is omitted or nil, the return value of
{
Lisp_Object tem2;
- teml = Fget (teml, intern ("event-symbol-elements"));
+ teml = Fget (teml, Qevent_symbol_elements);
/* Ignore first element, which is the base key. */
- tem2 = Fmemq (intern ("down"), Fcdr (teml));
+ tem2 = Fmemq (Qdown, Fcdr (teml));
if (! NILP (tem2))
up_event = Fread_event (Qnil, Qnil, Qnil);
}
@@ -647,9 +647,9 @@ invoke it. If KEYS is omitted or nil, the return value of
{
Lisp_Object tem2;
- teml = Fget (teml, intern ("event-symbol-elements"));
+ teml = Fget (teml, Qevent_symbol_elements);
/* Ignore first element, which is the base key. */
- tem2 = Fmemq (intern ("down"), Fcdr (teml));
+ tem2 = Fmemq (Qdown, Fcdr (teml));
if (! NILP (tem2))
up_event = Fread_event (Qnil, Qnil, Qnil);
}
diff --git a/src/callproc.c b/src/callproc.c
index 63ab9bf..e1fe8ed 100644
--- a/src/callproc.c
+++ b/src/callproc.c
@@ -1020,7 +1020,7 @@ create_temp_file (ptrdiff_t nargs, Lisp_Object *args,
specbind (intern ("coding-system-for-write"), val);
/* POSIX lets mk[s]temp use "."; don't invoke jka-compr if we
happen to get a ".Z" suffix. */
- specbind (intern ("file-name-handler-alist"), Qnil);
+ specbind (Qfile_name_handler_alist, Qnil);
write_region (start, end, filename_string, Qnil, Qlambda, Qnil, Qnil, fd);
unbind_to (count1, Qnil);
diff --git a/src/charset.c b/src/charset.c
index 9080840..f1aa074 100644
--- a/src/charset.c
+++ b/src/charset.c
@@ -1268,7 +1268,7 @@ define_charset_internal (Lisp_Object name,
args[charset_arg_plist] =
listn (CONSTYPE_HEAP, 14,
- intern_c_string (":name"),
+ QCname,
args[charset_arg_name],
intern_c_string (":dimension"),
args[charset_arg_dimension],
@@ -1278,7 +1278,7 @@ define_charset_internal (Lisp_Object name,
args[charset_arg_iso_final],
intern_c_string (":emacs-mule-id"),
args[charset_arg_emacs_mule_id],
- intern_c_string (":ascii-compatible-p"),
+ QCascii_compatible_p,
args[charset_arg_ascii_compatible_p],
intern_c_string (":code-offset"),
args[charset_arg_code_offset]);
diff --git a/src/coding.c b/src/coding.c
index 1a0e1279..4b41355 100644
--- a/src/coding.c
+++ b/src/coding.c
@@ -11281,15 +11281,15 @@ internal character representation. */);
Lisp_Object plist[] =
{
- intern_c_string (":name"),
+ QCname,
args[coding_arg_name] = Qno_conversion,
- intern_c_string (":mnemonic"),
+ QCmnemonic,
args[coding_arg_mnemonic] = make_number ('='),
intern_c_string (":coding-type"),
args[coding_arg_coding_type] = Qraw_text,
- intern_c_string (":ascii-compatible-p"),
+ QCascii_compatible_p,
args[coding_arg_ascii_compatible_p] = Qt,
- intern_c_string (":default-char"),
+ QCdefault_char,
args[coding_arg_default_char] = make_number (0),
intern_c_string (":for-unibyte"),
args[coding_arg_for_unibyte] = Qt,
diff --git a/src/editfns.c b/src/editfns.c
index c205ca3..dbcb316 100644
--- a/src/editfns.c
+++ b/src/editfns.c
@@ -4973,8 +4973,7 @@ of the buffer being accessed. */);
/* Do this here, because init_buffer_once is too early--it won't work. */
Fset_buffer (Vprin1_to_string_buffer);
/* Make sure buffer-access-fontify-functions is nil in this buffer. */
- Fset (Fmake_local_variable (intern_c_string
("buffer-access-fontify-functions")),
- Qnil);
+ Fset (Fmake_local_variable (Qbuffer_access_fontify_functions), Qnil);
Fset_buffer (obuf);
}
diff --git a/src/emacs.c b/src/emacs.c
index 897433d..76ddd5d 100644
--- a/src/emacs.c
+++ b/src/emacs.c
@@ -348,13 +348,13 @@ _Noreturn void
terminate_due_to_signal (int sig, int backtrace_limit)
{
signal (sig, SIG_DFL);
- totally_unblock_input ();
/* If fatal error occurs in code below, avoid infinite recursion. */
if (! fatal_error_in_progress)
{
fatal_error_in_progress = 1;
+ totally_unblock_input ();
if (sig == SIGTERM || sig == SIGHUP || sig == SIGINT)
Fkill_emacs (make_number (sig));
@@ -1576,13 +1576,11 @@ Using an Emacs configured with --with-x-toolkit=lucid
does not have this problem
if (filename_from_ansi (file, file_utf8) == 0)
file = file_utf8;
#endif
- Vtop_level = list2 (intern_c_string ("load"),
- build_unibyte_string (file));
+ Vtop_level = list2 (Qload, build_unibyte_string (file));
}
/* Unless next switch is -nl, load "loadup.el" first thing. */
if (! no_loadup)
- Vtop_level = list2 (intern_c_string ("load"),
- build_string ("loadup.el"));
+ Vtop_level = list2 (Qload, build_string ("loadup.el"));
}
/* Set up for profiling. This is known to work on FreeBSD,
diff --git a/src/fns.c b/src/fns.c
index 4c70951..51f61d2 100644
--- a/src/fns.c
+++ b/src/fns.c
@@ -5093,7 +5093,7 @@ syms_of_fns (void)
DEFVAR_LISP ("features", Vfeatures,
doc: /* A list of symbols which are the features of the executing Emacs.
Used by `featurep' and `require', and altered by `provide'. */);
- Vfeatures = list1 (intern_c_string ("emacs"));
+ Vfeatures = list1 (Qemacs);
DEFSYM (Qsubfeatures, "subfeatures");
DEFSYM (Qfuncall, "funcall");
diff --git a/src/frame.c b/src/frame.c
index 92b6b7c..d82df09 100644
--- a/src/frame.c
+++ b/src/frame.c
@@ -1544,7 +1544,7 @@ delete_frame (Lisp_Object frame, Lisp_Object force)
}
}
- is_tooltip_frame = !NILP (Fframe_parameter (frame, intern ("tooltip")));
+ is_tooltip_frame = !NILP (Fframe_parameter (frame, Qtooltip));
/* Run `delete-frame-functions' unless FORCE is `noelisp' or
frame is a tooltip. FORCE is set to `noelisp' when handling
@@ -2533,7 +2533,7 @@ If FRAME is omitted or nil, return information on the
currently selected frame.
else
store_in_alist (&alist, Qbackground_color,
tty_color_name (f, FRAME_BACKGROUND_PIXEL (f)));
- store_in_alist (&alist, intern ("font"),
+ store_in_alist (&alist, Qfont,
build_string (FRAME_MSDOS_P (f)
? "ms-dos"
: FRAME_W32_P (f) ? "w32term"
diff --git a/src/ftfont.c b/src/ftfont.c
index adf1888..26740c2 100644
--- a/src/ftfont.c
+++ b/src/ftfont.c
@@ -2659,7 +2659,6 @@ syms_of_ftfont (void)
DEFSYM (Qmonospace, "monospace");
DEFSYM (Qsans_serif, "sans-serif");
DEFSYM (Qserif, "serif");
- DEFSYM (Qmono, "mono");
DEFSYM (Qsans, "sans");
DEFSYM (Qsans__serif, "sans serif");
diff --git a/src/keyboard.c b/src/keyboard.c
index 7a458a4..3cd37f9 100644
--- a/src/keyboard.c
+++ b/src/keyboard.c
@@ -3034,6 +3034,7 @@ read_char (int commandflag, Lisp_Object map,
Lisp_Object keys;
ptrdiff_t key_count;
bool key_count_reset;
+ ptrdiff_t command_key_start;
struct gcpro gcpro1;
ptrdiff_t count = SPECPDL_INDEX ();
@@ -3057,6 +3058,7 @@ read_char (int commandflag, Lisp_Object map,
/* Save the this_command_keys status. */
key_count = this_command_key_count;
key_count_reset = this_command_key_count_reset;
+ command_key_start = this_single_command_key_start;
if (key_count > 0)
keys = Fcopy_sequence (this_command_keys);
@@ -3067,6 +3069,7 @@ read_char (int commandflag, Lisp_Object map,
/* Clear out this_command_keys. */
this_command_key_count = 0;
this_command_key_count_reset = 0;
+ this_single_command_key_start = 0;
/* Now wipe the echo area. */
if (!NILP (echo_area_buffer[0]))
@@ -3090,6 +3093,7 @@ read_char (int commandflag, Lisp_Object map,
and this_command_keys state. */
this_command_key_count = key_count;
this_command_key_count_reset = key_count_reset;
+ this_single_command_key_start = command_key_start;
if (key_count > 0)
this_command_keys = keys;
@@ -11613,7 +11617,7 @@ and the minor mode maps regardless of
`overriding-local-map'. */);
DEFVAR_LISP ("special-event-map", Vspecial_event_map,
doc: /* Keymap defining bindings for special events to execute
at low level. */);
- Vspecial_event_map = list1 (intern_c_string ("keymap"));
+ Vspecial_event_map = list1 (Qkeymap);
DEFVAR_LISP ("track-mouse", do_mouse_tracking,
doc: /* Non-nil means generate motion events for mouse motion.
*/);
diff --git a/src/keymap.c b/src/keymap.c
index 34fe1cb..d10c004 100644
--- a/src/keymap.c
+++ b/src/keymap.c
@@ -3730,8 +3730,8 @@ be preferred. */);
staticpro (&Vmouse_events);
Vmouse_events = listn (CONSTYPE_PURE, 9,
Qmenu_bar,
- intern_c_string ("tool-bar"),
- intern_c_string ("header-line"),
+ Qtool_bar,
+ Qheader_line,
Qmode_line,
intern_c_string ("mouse-1"),
intern_c_string ("mouse-2"),
diff --git a/src/lisp.h b/src/lisp.h
index 01295c2..75f0ccf 100644
--- a/src/lisp.h
+++ b/src/lisp.h
@@ -746,10 +746,10 @@ struct Lisp_Symbol
/* By default, define macros for Qt, etc., as this leads to a bit
better performance in the core Emacs interpreter. A plugin can
- define DEFINE_NONNIL_Q_SYMBOL_MACROS to be false, to be portable to
+ define DEFINE_NON_NIL_Q_SYMBOL_MACROS to be false, to be portable to
other Emacs instances that assign different values to Qt, etc. */
-#ifndef DEFINE_NONNIL_Q_SYMBOL_MACROS
-# define DEFINE_NONNIL_Q_SYMBOL_MACROS true
+#ifndef DEFINE_NON_NIL_Q_SYMBOL_MACROS
+# define DEFINE_NON_NIL_Q_SYMBOL_MACROS true
#endif
#include "globals.h"
diff --git a/src/lread.c b/src/lread.c
index b42849f..ae17529 100644
--- a/src/lread.c
+++ b/src/lread.c
@@ -1033,13 +1033,9 @@ Return t if the file exists and loads successfully. */)
bool compiled = 0;
Lisp_Object handler;
bool safe_p = 1;
- const char *fmode = "r";
+ const char *fmode = "r" FOPEN_TEXT;
int version;
-#ifdef DOS_NT
- fmode = "rt";
-#endif /* DOS_NT */
-
CHECK_STRING (file);
/* If file name is magic, call the handler. */
@@ -1223,10 +1219,7 @@ Return t if the file exists and loads successfully. */)
compiled = 1;
efound = ENCODE_FILE (found);
-
-#ifdef DOS_NT
- fmode = "rb";
-#endif /* DOS_NT */
+ fmode = "r" FOPEN_BINARY;
/* openp already checked for newness, no point doing it again.
FIXME would be nice to get a message when openp
diff --git a/src/minibuf.c b/src/minibuf.c
index 3408bb9..2dc5c54 100644
--- a/src/minibuf.c
+++ b/src/minibuf.c
@@ -395,7 +395,7 @@ read_minibuf (Lisp_Object map, Lisp_Object initial,
Lisp_Object prompt,
Lisp_Object dummy, frame;
specbind (Qminibuffer_default, defalt);
- specbind (intern ("inhibit-read-only"), Qnil);
+ specbind (Qinhibit_read_only, Qnil);
/* If Vminibuffer_completing_file_name is `lambda' on entry, it was t
in previous recursive minibuffer, but was not set explicitly
@@ -2070,9 +2070,7 @@ with completion; they always discard text properties.
*/);
doc: /* Text properties that are added to minibuffer prompts.
These are in addition to the basic `field' property, and stickiness
properties. */);
- /* We use `intern' here instead of Qread_only to avoid
- initialization-order problems. */
- Vminibuffer_prompt_properties = list2 (intern_c_string ("read-only"), Qt);
+ Vminibuffer_prompt_properties = list2 (Qread_only, Qt);
DEFVAR_LISP ("read-hide-char", Vread_hide_char,
doc: /* Whether to hide input characters in noninteractive mode.
diff --git a/src/nsfns.m b/src/nsfns.m
index cc2e496..f8863e6 100644
--- a/src/nsfns.m
+++ b/src/nsfns.m
@@ -849,9 +849,9 @@ ns_cursor_type_to_lisp (int arg)
switch (arg)
{
case FILLED_BOX_CURSOR: return Qbox;
- case HOLLOW_BOX_CURSOR: return intern ("hollow");
- case HBAR_CURSOR: return intern ("hbar");
- case BAR_CURSOR: return intern ("bar");
+ case HOLLOW_BOX_CURSOR: return Qhollow;
+ case HBAR_CURSOR: return Qhbar;
+ case BAR_CURSOR: return Qbar;
case NO_CURSOR:
default: return intern ("no");
}
@@ -2806,6 +2806,87 @@ Value is t if tooltip was open, nil otherwise. */)
return Qt;
}
+DEFUN ("x-frame-geometry", Fx_frame_geometry, Sx_frame_geometry, 0, 1, 0,
+ doc: /* Return geometric attributes of frame FRAME.
+
+FRAME must be a live frame and defaults to the selected one.
+
+The return value is an association list containing the following
+elements (all size values are in pixels).
+
+- `frame-outer-size' is a cons of the outer width and height of FRAME.
+ The outer size include the title bar and the external borders as well
+ as any menu and/or tool bar of frame.
+
+- `border' is a cons of the horizontal and vertical width of FRAME's
+ external borders.
+
+- `title-bar-height' is the height of the title bar of FRAME.
+
+- `menu-bar-external' if `t' means the menu bar is external (not
+ included in the inner edges of FRAME).
+
+- `menu-bar-size' is a cons of the width and height of the menu bar of
+ FRAME.
+
+- `tool-bar-external' if `t' means the tool bar is external (not
+ included in the inner edges of FRAME).
+
+- `tool-bar-side' tells tells on which side the tool bar on FRAME is and
+ can be one of `left', `top', `right' or `bottom'.
+
+- `tool-bar-size' is a cons of the width and height of the tool bar of
+ FRAME.
+
+- `frame-inner-size' is a cons of the inner width and height of FRAME.
+ This excludes FRAME's title bar and external border as well as any
+ external menu and/or tool bar. */)
+ (Lisp_Object frame)
+{
+ struct frame *f = decode_live_frame (frame);
+ int inner_width = FRAME_PIXEL_WIDTH (f);
+ int inner_height = FRAME_PIXEL_HEIGHT (f);
+ Lisp_Object fullscreen = Fframe_parameter (frame, Qfullscreen);
+ int border = f->border_width;
+ int title = FRAME_NS_TITLEBAR_HEIGHT (f);
+ int outer_width = FRAME_PIXEL_WIDTH (f) + 2 * border;
+ int outer_height = FRAME_PIXEL_HEIGHT (f) + 2 * border;
+ int tool_bar_height = FRAME_TOOLBAR_HEIGHT (f);
+ int tool_bar_width = tool_bar_height > 0
+ ? outer_width - 2 * FRAME_INTERNAL_BORDER_WIDTH (f)
+ : 0;
+ // Always 0 on NS.
+ int menu_bar_height = 0;
+ int menu_bar_width = 0;
+
+ return
+ listn (CONSTYPE_HEAP, 10,
+ Fcons (Qframe_position,
+ Fcons (make_number (f->left_pos), make_number (f->top_pos))),
+ Fcons (Qframe_outer_size,
+ Fcons (make_number (outer_width), make_number
(outer_height))),
+ Fcons (Qexternal_border_size,
+ ((EQ (fullscreen, Qfullboth) || EQ (fullscreen, Qfullscreen))
+ ? Fcons (make_number (0), make_number (0))
+ : Fcons (make_number (border), make_number (border)))),
+ Fcons (Qtitle_height,
+ ((EQ (fullscreen, Qfullboth) || EQ (fullscreen, Qfullscreen))
+ ? make_number (0)
+ : make_number (title))),
+ Fcons (Qmenu_bar_external, FRAME_EXTERNAL_MENU_BAR (f) ? Qt : Qnil),
+ Fcons (Qmenu_bar_size,
+ Fcons (make_number (menu_bar_width),
+ make_number (menu_bar_height))),
+ Fcons (Qtool_bar_external, FRAME_EXTERNAL_TOOL_BAR (f) ? Qt : Qnil),
+ Fcons (Qtool_bar_position, FRAME_TOOL_BAR_POSITION (f)),
+ Fcons (Qtool_bar_size,
+ Fcons (make_number (tool_bar_width),
+ make_number (tool_bar_height))),
+ Fcons (Qframe_inner_size,
+ Fcons (make_number (inner_width),
+ make_number (inner_height))));
+}
+
/* ==========================================================================
@@ -2989,6 +3070,7 @@ be used as the image of the icon representing the frame.
*/);
defsubr (&Sx_display_pixel_width);
defsubr (&Sx_display_pixel_height);
defsubr (&Sns_display_monitor_attributes_list);
+ defsubr (&Sx_frame_geometry);
defsubr (&Sx_display_mm_width);
defsubr (&Sx_display_mm_height);
defsubr (&Sx_display_screens);
diff --git a/src/sysstdio.h b/src/sysstdio.h
index e9dfb69..c97c4f8 100644
--- a/src/sysstdio.h
+++ b/src/sysstdio.h
@@ -1,2 +1,31 @@
+/* Standard I/O for Emacs.
+
+Copyright 2013-2015 Free Software Foundation, Inc.
+
+This file is part of GNU Emacs.
+
+GNU Emacs is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 3 of the License, or
+(at your option) any later version.
+
+GNU Emacs is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. */
+
+#include <fcntl.h>
#include <stdio.h>
+
extern FILE *emacs_fopen (char const *, char const *);
+
+#if O_BINARY
+# define FOPEN_BINARY "b"
+# define FOPEN_TEXT "t"
+#else
+# define FOPEN_BINARY ""
+# define FOPEN_TEXT ""
+#endif
diff --git a/src/textprop.c b/src/textprop.c
index 35f22bf..740b962 100644
--- a/src/textprop.c
+++ b/src/textprop.c
@@ -2356,8 +2356,7 @@ inherits it if NONSTICKINESS is nil. The `front-sticky'
and
/* Text properties `syntax-table'and `display' should be nonsticky
by default. */
Vtext_property_default_nonsticky
- = list2 (Fcons (intern_c_string ("syntax-table"), Qt),
- Fcons (intern_c_string ("display"), Qt));
+ = list2 (Fcons (Qsyntax_table, Qt), Fcons (Qdisplay, Qt));
staticpro (&interval_insert_behind_hooks);
staticpro (&interval_insert_in_front_hooks);
diff --git a/src/w32fns.c b/src/w32fns.c
index 08000d8..1e685ad 100644
--- a/src/w32fns.c
+++ b/src/w32fns.c
@@ -3295,12 +3295,12 @@ w32_wnd_proc (HWND hwnd, UINT msg, WPARAM wParam,
LPARAM lParam)
field being reset to nil. */
f = x_window_to_frame (dpyinfo, hwnd);
if (!(f && FRAME_LIVE_P (f)))
- break;
+ goto dflt;
w = XWINDOW (FRAME_SELECTED_WINDOW (f));
/* Punt if someone changed the frame's selected window
behind our back. */
if (w != w32_system_caret_window)
- break;
+ goto dflt;
form.dwStyle = CFS_RECT;
form.ptCurrentPos.x = w32_system_caret_x;
@@ -3318,17 +3318,19 @@ w32_wnd_proc (HWND hwnd, UINT msg, WPARAM wParam,
LPARAM lParam)
/* Punt if the window was deleted behind our back. */
if (!BUFFERP (w->contents))
- break;
+ goto dflt;
context = get_ime_context_fn (hwnd);
if (!context)
- break;
+ goto dflt;
set_ime_composition_window_fn (context, &form);
release_ime_context_fn (hwnd, context);
}
- break;
+ /* Pass WM_IME_STARTCOMPOSITION to DefWindowProc, so that the
+ composition window will actually be displayed. */
+ goto dflt;
case WM_IME_ENDCOMPOSITION:
ignore_ime_char = 0;
diff --git a/src/w32font.c b/src/w32font.c
index 360ad3f..422f082 100644
--- a/src/w32font.c
+++ b/src/w32font.c
@@ -1072,11 +1072,11 @@ w32_enumfont_pattern_entity (Lisp_Object frame,
truetype so that this information is not any worse than we could
have obtained later. */
if (EQ (backend, Quniscribe) && (full_type & NTMFLAGS_OPENTYPE))
- tem = intern ("opentype");
+ tem = Qopentype;
else if (font_type & TRUETYPE_FONTTYPE)
tem = intern ("truetype");
else if (full_type & NTM_PS_OPENTYPE)
- tem = intern ("postscript");
+ tem = Qpostscript;
else if (full_type & NTM_TYPE1)
tem = intern ("type1");
else if (font_type & RASTER_FONTTYPE)
@@ -1875,10 +1875,10 @@ static Lisp_Object
w32_to_fc_weight (int n)
{
if (n >= FW_EXTRABOLD) return intern ("black");
- if (n >= FW_BOLD) return intern ("bold");
+ if (n >= FW_BOLD) return Qbold;
if (n >= FW_SEMIBOLD) return intern ("demibold");
if (n >= FW_NORMAL) return intern ("medium");
- return intern ("light");
+ return Qlight;
}
/* Fill in all the available details of LOGFONT from FONT_SPEC. */
diff --git a/src/w32inevt.c b/src/w32inevt.c
index e09903f..ea2db26 100644
--- a/src/w32inevt.c
+++ b/src/w32inevt.c
@@ -631,7 +631,7 @@ handle_file_notifications (struct input_event *hold_quit)
if (notification_buffer_in_use)
{
DWORD info_size = notifications_size;
- Lisp_Object cs = intern ("utf-16le");
+ Lisp_Object cs = Qutf_16le;
Lisp_Object obj = w32_get_watch_object (notifications_desc);
/* notifications_size could be zero when the buffer of
diff --git a/src/w32term.c b/src/w32term.c
index a9ed2a8..d415b13 100644
--- a/src/w32term.c
+++ b/src/w32term.c
@@ -3223,7 +3223,7 @@ queue_notifications (struct input_event *event, W32Msg
*msg, struct frame *f,
if (notification_buffer_in_use)
{
DWORD info_size = notifications_size;
- Lisp_Object cs = intern ("utf-16le");
+ Lisp_Object cs = Qutf_16le;
Lisp_Object obj = w32_get_watch_object (notifications_desc);
/* notifications_size could be zero when the buffer of
diff --git a/src/xdisp.c b/src/xdisp.c
index 0808b02..0aa20b3 100644
--- a/src/xdisp.c
+++ b/src/xdisp.c
@@ -22729,7 +22729,7 @@ are the selected window and the WINDOW's buffer). */)
else
{
mode_line_string_list = Fnreverse (mode_line_string_list);
- str = Fmapconcat (intern ("identity"), mode_line_string_list,
+ str = Fmapconcat (Qidentity, mode_line_string_list,
empty_unibyte_string);
}
@@ -30729,8 +30729,7 @@ syms_of_xdisp (void)
DEFSYM (Qinhibit_free_realized_faces, "inhibit-free-realized-faces");
- list_of_error = list1 (list2 (intern_c_string ("error"),
- intern_c_string ("void-variable")));
+ list_of_error = list1 (list2 (Qerror, Qvoid_variable));
staticpro (&list_of_error);
/* Values of those variables at last redisplay are stored as
diff --git a/src/xfaces.c b/src/xfaces.c
index d0fe872..fcfdbc0 100644
--- a/src/xfaces.c
+++ b/src/xfaces.c
@@ -6187,7 +6187,7 @@ where R,G,B are numbers between 0 and 255 and name is an
arbitrary string. */)
abspath = Fexpand_file_name (filename, Qnil);
block_input ();
- fp = emacs_fopen (SSDATA (abspath), "rt");
+ fp = emacs_fopen (SSDATA (abspath), "r" FOPEN_TEXT);
if (fp)
{
char buf[512];
diff --git a/src/xfns.c b/src/xfns.c
index 629ac4b..80be6ac 100644
--- a/src/xfns.c
+++ b/src/xfns.c
@@ -5185,7 +5185,7 @@ x_create_tip_frame (struct x_display_info *dpyinfo,
Lisp_Object disptype;
if (FRAME_DISPLAY_INFO (f)->n_planes == 1)
- disptype = intern ("mono");
+ disptype = Qmono;
else if (FRAME_DISPLAY_INFO (f)->visual->class == GrayScale
|| FRAME_DISPLAY_INFO (f)->visual->class == StaticGray)
disptype = intern ("grayscale");
@@ -6007,7 +6007,7 @@ nil, it defaults to the selected frame. */)
GCPRO2 (font_param, font);
XSETFONT (font, FRAME_FONT (f));
- font_param = Ffont_get (font, intern (":name"));
+ font_param = Ffont_get (font, QCname);
if (STRINGP (font_param))
default_name = xlispstrdup (font_param);
else
@@ -6194,6 +6194,7 @@ syms_of_xfns (void)
DEFSYM (Qcompound_text, "compound-text");
DEFSYM (Qcancel_timer, "cancel-timer");
DEFSYM (Qfont_param, "font-parameter");
+ DEFSYM (Qmono, "mono");
Fput (Qundefined_color, Qerror_conditions,
listn (CONSTYPE_PURE, 2, Qundefined_color, Qerror));
diff --git a/src/xml.c b/src/xml.c
index e324177..a3f9239 100644
--- a/src/xml.c
+++ b/src/xml.c
@@ -237,8 +237,7 @@ parse_region (Lisp_Object start, Lisp_Object end,
Lisp_Object base_url,
if (node != NULL)
result = make_dom (node);
} else
- result = Fcons (intern ("top"),
- Fcons (Qnil, Fnreverse (Fcons (r, result))));
+ result = Fcons (Qtop, Fcons (Qnil, Fnreverse (Fcons (r, result))));
xmlFreeDoc (doc);
}
diff --git a/test/ChangeLog b/test/ChangeLog
index 87425a6..7ba1496 100644
--- a/test/ChangeLog
+++ b/test/ChangeLog
@@ -1,3 +1,13 @@
+2015-02-24 Glenn Morris <address@hidden>
+
+ * automated/f90.el (f90-test-bug-19809): New test.
+
+2015-02-22 Michael Albinus <address@hidden>
+
+ * automated/tramp-tests.el (tramp-test17-insert-directory):
+ Suppress localized settings in order to have a proper check for
+ the summary line.
+
2015-02-16 Stefan Monnier <address@hidden>
* automated/eieio-test-methodinvoke.el (make-instance): Add methods
diff --git a/test/automated/f90.el b/test/automated/f90.el
index c6bc41f..1cb2f03 100644
--- a/test/automated/f90.el
+++ b/test/automated/f90.el
@@ -173,4 +173,20 @@ end program prog")
(f90-indent-subprogram)
(should (= 0 (current-indentation)))))
+(ert-deftest f90-test-bug-19809 ()
+ "Test for http://debbugs.gnu.org/19809 ."
+ (with-temp-buffer
+ (f90-mode)
+ ;; The Fortran standard says that continued strings should have
+ ;; '&' at the start of continuation lines, but it seems gfortran
+ ;; allows them to be absent (albeit with a warning).
+ (insert "program prog
+ write (*,*), '&
+end program prog'
+end program prog")
+ (goto-char (point-min))
+ (f90-end-of-subprogram)
+ (should (= (point) (point-max)))))
+
+
;;; f90.el ends here
diff --git a/test/automated/tramp-tests.el b/test/automated/tramp-tests.el
index 2c4610c..3b72da8 100644
--- a/test/automated/tramp-tests.el
+++ b/test/automated/tramp-tests.el
@@ -927,7 +927,10 @@ This tests also `file-directory-p' and
`file-accessible-directory-p'."
(skip-unless (tramp--test-enabled))
(let* ((tmp-name1 (tramp--test-make-temp-name))
- (tmp-name2 (expand-file-name "foo" tmp-name1)))
+ (tmp-name2 (expand-file-name "foo" tmp-name1))
+ ;; We test for the summary line. Keyword "total" could be localized.
+ (process-environment
+ (append '("LANG=C" "LANGUAGE=C" "LC_ALL=C") process-environment)))
(unwind-protect
(progn
(make-directory tmp-name1)
diff --git a/test/automated/vc-tests.el b/test/automated/vc-tests.el
index e83eb85..4d9aefa 100644
--- a/test/automated/vc-tests.el
+++ b/test/automated/vc-tests.el
@@ -331,8 +331,8 @@ For backends which dont support it, `vc-not-supported' is
signalled."
(let ((tmp-name (expand-file-name "foo" default-directory)))
;; Check for initial state, should be nil until it's registered.
- ;; Don't pass the backend explictly, otherwise some implementations
- ;; return non-nil.
+ ;; Don't pass the backend explicitly, otherwise some
+ ;; implementations return non-nil.
(should (null (vc-working-revision tmp-name)))
;; Write a new file. Check state.
diff --git a/test/cedet/srecode-tests.el b/test/cedet/srecode-tests.el
index 423df72..f7529ec 100644
--- a/test/cedet/srecode-tests.el
+++ b/test/cedet/srecode-tests.el
@@ -272,7 +272,7 @@ Dump out the extracted dictionary."
(not (semantic-tag-of-class-p fcn-in 'function)))
(error "No tag of class 'function to insert comment for"))
- (let ((lextok (semantic-documentation-comment-preceeding-tag fcn-in 'lex))
+ (let ((lextok (semantic-documentation-comment-preceding-tag fcn-in 'lex))
)
(when (not lextok)