Merge branch 'master' of git.sv.gnu.org:/srv/git/emacs into feature/pgtk
This commit is contained in:
commit
7a7bc15242
227 changed files with 2569 additions and 2035 deletions
|
@ -948,6 +948,10 @@ extraclean: $(extraclean_dirs:=_extraclean)
|
|||
# I removed it because it causes `make tags` to build Emacs.
|
||||
TAGS tags: lib lib-src # src
|
||||
$(MAKE) -C src tags
|
||||
$(MAKE) -C doc/emacs tags
|
||||
$(MAKE) -C doc/lispintro tags
|
||||
$(MAKE) -C doc/lispref tags
|
||||
$(MAKE) -C doc/misc tags
|
||||
|
||||
CHECK_TARGETS = check check-maybe check-expensive check-all
|
||||
.PHONY: $(CHECK_TARGETS)
|
||||
|
|
|
@ -63,8 +63,8 @@ to "JIS X 0213:2004".
|
|||
|
||||
* MULE-*.map
|
||||
|
||||
Created by using ../mule-charsets.el in Emacs 22 as this:
|
||||
% emacs-22 -batch -l ../mule-charsets.el
|
||||
Created by using ../mule-charsets.el in Emacs as this:
|
||||
% emacs -batch -l ../mule-charsets.el
|
||||
|
||||
|
||||
This file is part of GNU Emacs.
|
||||
|
|
|
@ -91,6 +91,7 @@
|
|||
%expectedconflicts 5
|
||||
|
||||
%{
|
||||
(require 'semantic/tag)
|
||||
(declare-function wisent-python-reconstitute-function-tag
|
||||
"semantic/wisent/python" (tag suite))
|
||||
(declare-function wisent-python-reconstitute-class-tag "semantic/wisent/python"
|
||||
|
|
|
@ -220,7 +220,7 @@ infoclean:
|
|||
$(buildinfodir)/emacs.info-[1-9][0-9]
|
||||
|
||||
bootstrap-clean maintainer-clean: distclean infoclean
|
||||
rm -f ${srcdir}/emacsver.texi
|
||||
rm -f ${srcdir}/emacsver.texi TAGS
|
||||
|
||||
.PHONY: install-dvi install-html install-pdf install-ps install-doc
|
||||
|
||||
|
@ -269,4 +269,20 @@ uninstall-pdf:
|
|||
uninstall-doc: uninstall-dvi uninstall-html uninstall-pdf uninstall-ps
|
||||
|
||||
|
||||
ETAGS = ../../lib-src/etags${EXEEXT}
|
||||
|
||||
${ETAGS}: FORCE
|
||||
$(MAKE) -C $(dir $@) $(notdir $@)
|
||||
|
||||
texifiles = $(wildcard ${srcdir}/*.texi)
|
||||
|
||||
TAGS: ${ETAGS} $(texifiles)
|
||||
$(AM_V_GEN)${ETAGS} --include=../lispref/TAGS --include=../misc/TAGS $(texifiles)
|
||||
|
||||
tags: TAGS
|
||||
.PHONY: tags
|
||||
|
||||
FORCE:
|
||||
.PHONY: FORCE
|
||||
|
||||
### Makefile ends here
|
||||
|
|
|
@ -388,15 +388,15 @@ file. For example:
|
|||
Emacs versions, like this:
|
||||
|
||||
@example
|
||||
(cond ((< emacs-major-version 22)
|
||||
;; @r{Emacs 21 customization.}
|
||||
(setq custom-file "~/.config/custom-21.el"))
|
||||
((and (= emacs-major-version 22)
|
||||
(cond ((< emacs-major-version 28)
|
||||
;; @r{Emacs 27 customization.}
|
||||
(setq custom-file "~/.config/custom-27.el"))
|
||||
((and (= emacs-major-version 26)
|
||||
(< emacs-minor-version 3))
|
||||
;; @r{Emacs 22 customization, before version 22.3.}
|
||||
(setq custom-file "~/.config/custom-22.el"))
|
||||
;; @r{Emacs 26 customization, before version 26.3.}
|
||||
(setq custom-file "~/.config/custom-26.el"))
|
||||
(t
|
||||
;; @r{Emacs version 22.3 or later.}
|
||||
;; @r{Emacs version 28.1 or later.}
|
||||
(setq custom-file "~/.config/emacs-custom.el")))
|
||||
|
||||
(load custom-file)
|
||||
|
|
|
@ -1611,6 +1611,10 @@ branch ID for a branch starting at the current revision. For example,
|
|||
if the current revision is 2.5, the branch ID should be 2.5.1, 2.5.2,
|
||||
and so on, depending on the number of existing branches at that point.
|
||||
|
||||
This procedure will not work for distributed version control systems
|
||||
like git or Mercurial. For those systems you should use the prefix
|
||||
argument to @code{vc-create-tag} (@kbd{C-u C-x v s}) instead.
|
||||
|
||||
To create a new branch at an older revision (one that is no longer
|
||||
the head of a branch), first select that revision (@pxref{Switching
|
||||
Branches}). Your procedure will then differ depending on whether you
|
||||
|
|
|
@ -800,6 +800,7 @@ can re-execute a command by calling @code{eval} with the
|
|||
|
||||
@node Passwords
|
||||
@section Entering passwords
|
||||
@cindex entering passwords
|
||||
|
||||
Sometimes, you may need to enter a password into Emacs. For instance,
|
||||
when you tell Emacs to visit a file on another machine via a network
|
||||
|
@ -810,7 +811,7 @@ access to the machine (@pxref{Remote Files}).
|
|||
displays a prompt in the echo area (such as @samp{Password: }); after
|
||||
you type the required password, press @key{RET} to submit it. To
|
||||
prevent others from seeing your password, every character you type is
|
||||
displayed as a dot (@samp{.}) instead of its usual form.
|
||||
displayed as an asterisk (@samp{*}) instead of its usual form.
|
||||
|
||||
Most of the features and commands associated with the minibuffer
|
||||
@emph{cannot} be used when entering a password. There is no history
|
||||
|
|
|
@ -119,6 +119,7 @@ infoclean:
|
|||
$(buildinfodir)/eintr.info-[1-9]
|
||||
|
||||
bootstrap-clean maintainer-clean: distclean infoclean
|
||||
rm -f TAGS
|
||||
|
||||
.PHONY: install-dvi install-html install-pdf install-ps install-doc
|
||||
|
||||
|
@ -166,5 +167,20 @@ uninstall-pdf:
|
|||
|
||||
uninstall-doc: uninstall-dvi uninstall-html uninstall-pdf uninstall-ps
|
||||
|
||||
ETAGS = ../../lib-src/etags${EXEEXT}
|
||||
|
||||
${ETAGS}: FORCE
|
||||
$(MAKE) -C $(dir $@) $(notdir $@)
|
||||
|
||||
texifiles = $(wildcard ${srcdir}/*.texi)
|
||||
|
||||
TAGS: ${ETAGS} $(texifiles)
|
||||
$(AM_V_GEN)${ETAGS} $(texifiles)
|
||||
|
||||
tags: TAGS
|
||||
.PHONY: tags
|
||||
|
||||
FORCE:
|
||||
.PHONY: FORCE
|
||||
|
||||
### Makefile ends here
|
||||
|
|
|
@ -17532,10 +17532,9 @@ Here is the definition:
|
|||
@need 1250
|
||||
Now for the keybinding.
|
||||
|
||||
Nowadays, function keys as well as mouse button events and
|
||||
non-@sc{ascii} characters are written within square brackets, without
|
||||
quotation marks. (In Emacs version 18 and before, you had to write
|
||||
different function key bindings for each different make of terminal.)
|
||||
Function keys as well as mouse button events and non-@sc{ascii}
|
||||
characters are written within square brackets, without quotation
|
||||
marks.
|
||||
|
||||
I bind @code{line-to-top-of-window} to my @key{F6} function key like
|
||||
this:
|
||||
|
@ -17550,18 +17549,18 @@ Your Init File, emacs, The GNU Emacs Manual}.
|
|||
@cindex Conditional 'twixt two versions of Emacs
|
||||
@cindex Version of Emacs, choosing
|
||||
@cindex Emacs version, choosing
|
||||
If you run two versions of GNU Emacs, such as versions 22 and 23, and
|
||||
If you run two versions of GNU Emacs, such as versions 27 and 28, and
|
||||
use one @file{.emacs} file, you can select which code to evaluate with
|
||||
the following conditional:
|
||||
|
||||
@smallexample
|
||||
@group
|
||||
(cond
|
||||
((= 22 emacs-major-version)
|
||||
;; evaluate version 22 code
|
||||
((= 27 emacs-major-version)
|
||||
;; evaluate version 27 code
|
||||
( @dots{} ))
|
||||
((= 23 emacs-major-version)
|
||||
;; evaluate version 23 code
|
||||
((= 28 emacs-major-version)
|
||||
;; evaluate version 28 code
|
||||
( @dots{} )))
|
||||
@end group
|
||||
@end smallexample
|
||||
|
|
|
@ -180,6 +180,7 @@ infoclean:
|
|||
$(buildinfodir)/elisp.info-[1-9][0-9]
|
||||
|
||||
bootstrap-clean maintainer-clean: distclean infoclean
|
||||
rm -f TAGS
|
||||
|
||||
.PHONY: install-dvi install-html install-pdf install-ps install-doc
|
||||
|
||||
|
@ -227,5 +228,20 @@ uninstall-pdf:
|
|||
|
||||
uninstall-doc: uninstall-dvi uninstall-html uninstall-pdf uninstall-ps
|
||||
|
||||
ETAGS = ../../lib-src/etags${EXEEXT}
|
||||
|
||||
${ETAGS}: FORCE
|
||||
$(MAKE) -C $(dir $@) $(notdir $@)
|
||||
|
||||
texifiles = $(wildcard ${srcdir}/*.texi)
|
||||
|
||||
TAGS: ${ETAGS} $(texifiles)
|
||||
$(AM_V_GEN)${ETAGS} $(texifiles)
|
||||
|
||||
tags: TAGS
|
||||
.PHONY: tags
|
||||
|
||||
FORCE:
|
||||
.PHONY: FORCE
|
||||
|
||||
### Makefile ends here
|
||||
|
|
|
@ -309,7 +309,6 @@ foo
|
|||
This function renames the current buffer to @var{newname}. An error
|
||||
is signaled if @var{newname} is not a string.
|
||||
|
||||
@c Emacs 19 feature
|
||||
Ordinarily, @code{rename-buffer} signals an error if @var{newname} is
|
||||
already in use. However, if @var{unique} is non-@code{nil}, it modifies
|
||||
@var{newname} to make a name that is not in use. Interactively, you can
|
||||
|
@ -344,7 +343,6 @@ a name. For example:
|
|||
See also the function @code{get-buffer-create} in @ref{Creating Buffers}.
|
||||
@end defun
|
||||
|
||||
@c Emacs 19 feature
|
||||
@defun generate-new-buffer-name starting-name &optional ignore
|
||||
This function returns a name that would be unique for a new buffer---but
|
||||
does not create the buffer. It starts with @var{starting-name}, and
|
||||
|
@ -879,7 +877,6 @@ then @code{other-buffer} uses that predicate to decide which buffers to
|
|||
consider. It calls the predicate once for each buffer, and if the value
|
||||
is @code{nil}, that buffer is ignored. @xref{Buffer Parameters}.
|
||||
|
||||
@c Emacs 19 feature
|
||||
If @var{visible-ok} is @code{nil}, @code{other-buffer} avoids returning
|
||||
a buffer visible in any window on any visible frame, except as a last
|
||||
resort. If @var{visible-ok} is non-@code{nil}, then it does not matter
|
||||
|
|
|
@ -5392,6 +5392,21 @@ are supported, unless the image type is @code{imagemagick}. Positive
|
|||
values rotate clockwise, negative values counter-clockwise. Rotation
|
||||
is performed after scaling and cropping.
|
||||
|
||||
@item :transform-smoothing @var{smooth}
|
||||
If this is @code{t}, any image transform will have smoothing applied;
|
||||
if @code{nil}, no smoothing will be applied. The exact algorithm used
|
||||
is platform dependent, but should be equivalent to bilinear
|
||||
filtering. Disabling smoothing will use the nearest neighbor
|
||||
algorithm.
|
||||
|
||||
If this property is not specified, @code{create-image} will use the
|
||||
@code{image-transform-smoothing} user option to say whether scaling
|
||||
should be done or not. This option can be @code{nil} (no smoothing),
|
||||
@code{t} (use smoothing) or a predicate function that's called with
|
||||
the image object as the only parameter, and should return either
|
||||
@code{nil} or @code{t}. The default is for down-scaling to apply
|
||||
smoothing, and for large up-scaling to not apply smoothing.
|
||||
|
||||
@item :index @var{frame}
|
||||
@xref{Multi-Frame Images}.
|
||||
|
||||
|
|
|
@ -332,7 +332,6 @@ or just
|
|||
The built-in function @code{indirect-function} provides an easy way to
|
||||
perform symbol function indirection explicitly.
|
||||
|
||||
@c Emacs 19 feature
|
||||
@defun indirect-function function &optional noerror
|
||||
@anchor{Definition of indirect-function}
|
||||
This function returns the meaning of @var{function} as a function. If
|
||||
|
|
|
@ -455,7 +455,6 @@ Even though this is not a normal hook, you can use @code{add-hook} and
|
|||
@code{remove-hook} to manipulate the list. @xref{Hooks}.
|
||||
@end defvar
|
||||
|
||||
@c Emacs 19 feature
|
||||
@defvar write-contents-functions
|
||||
This works just like @code{write-file-functions}, but it is intended
|
||||
for hooks that pertain to the buffer's contents, not to the particular
|
||||
|
@ -486,7 +485,6 @@ this hook to make sure the file you are saving has the current year in
|
|||
its copyright notice.
|
||||
@end defopt
|
||||
|
||||
@c Emacs 19 feature
|
||||
@defopt after-save-hook
|
||||
This normal hook runs after a buffer has been saved in its visited file.
|
||||
@end defopt
|
||||
|
@ -622,7 +620,6 @@ If @var{start} is @code{nil}, then the command writes the entire buffer
|
|||
contents (@emph{not} just the accessible portion) to the file and
|
||||
ignores @var{end}.
|
||||
|
||||
@c Emacs 19 feature
|
||||
If @var{start} is a string, then @code{write-region} writes or appends
|
||||
that string, rather than text from the buffer. @var{end} is ignored in
|
||||
this case.
|
||||
|
@ -653,7 +650,6 @@ It also sets the last file modification time for the current buffer to
|
|||
feature is used by @code{save-buffer}, but you probably should not use
|
||||
it yourself.
|
||||
|
||||
@c Emacs 19 feature
|
||||
If @var{visit} is a string, it specifies the file name to visit. This
|
||||
way, you can write the data to one file (@var{filename}) while recording
|
||||
the buffer as visiting another file (@var{visit}). The argument
|
||||
|
@ -3094,7 +3090,6 @@ which generate the listing with Lisp code.
|
|||
@node Create/Delete Dirs
|
||||
@section Creating, Copying and Deleting Directories
|
||||
@cindex creating, copying and deleting directories
|
||||
@c Emacs 19 features
|
||||
|
||||
Most Emacs Lisp file-manipulation functions get errors when used on
|
||||
files that are directories. For example, you cannot delete a directory
|
||||
|
|
|
@ -369,7 +369,6 @@ appear directly as bindings in @var{keymap} are also copied recursively,
|
|||
and so on to any number of levels. However, recursive copying does not
|
||||
take place when the definition of a character is a symbol whose function
|
||||
definition is a keymap; the same symbol appears in the new copy.
|
||||
@c Emacs 19 feature
|
||||
|
||||
@example
|
||||
@group
|
||||
|
@ -1140,7 +1139,6 @@ and have extra events at the end that do not fit into a single key
|
|||
sequence. Then the value is a number, the number of events at the front
|
||||
of @var{key} that compose a complete key.
|
||||
|
||||
@c Emacs 19 feature
|
||||
If @var{accept-defaults} is non-@code{nil}, then @code{lookup-key}
|
||||
considers default bindings as well as bindings for the specific events
|
||||
in @var{key}. Otherwise, @code{lookup-key} reports only bindings for
|
||||
|
@ -1182,7 +1180,6 @@ not cause an error.
|
|||
This function returns the binding for @var{key} in the current
|
||||
local keymap, or @code{nil} if it is undefined there.
|
||||
|
||||
@c Emacs 19 feature
|
||||
The argument @var{accept-defaults} controls checking for default bindings,
|
||||
as in @code{lookup-key} (above).
|
||||
@end defun
|
||||
|
@ -1191,12 +1188,10 @@ as in @code{lookup-key} (above).
|
|||
This function returns the binding for command @var{key} in the
|
||||
current global keymap, or @code{nil} if it is undefined there.
|
||||
|
||||
@c Emacs 19 feature
|
||||
The argument @var{accept-defaults} controls checking for default bindings,
|
||||
as in @code{lookup-key} (above).
|
||||
@end defun
|
||||
|
||||
@c Emacs 19 feature
|
||||
@defun minor-mode-key-binding key &optional accept-defaults
|
||||
This function returns a list of all the active minor mode bindings of
|
||||
@var{key}. More precisely, it returns an alist of pairs
|
||||
|
@ -1414,7 +1409,6 @@ standard bindings:
|
|||
@end group
|
||||
@end smallexample
|
||||
|
||||
@c Emacs 19 feature
|
||||
If @var{oldmap} is non-@code{nil}, that changes the behavior of
|
||||
@code{substitute-key-definition}: the bindings in @var{oldmap} determine
|
||||
which keys to rebind. The rebindings still happen in @var{keymap}, not
|
||||
|
|
|
@ -1052,7 +1052,6 @@ rather than replacing that element. @xref{Eval}.
|
|||
@section Unloading
|
||||
@cindex unloading packages
|
||||
|
||||
@c Emacs 19 feature
|
||||
You can discard the functions and variables loaded by a library to
|
||||
reclaim memory for other Lisp objects. To do this, use the function
|
||||
@code{unload-feature}:
|
||||
|
|
|
@ -379,8 +379,6 @@ default, it makes the following bindings:
|
|||
@end table
|
||||
@end defvar
|
||||
|
||||
@c In version 18, initial is required
|
||||
@c Emacs 19 feature
|
||||
@defun read-no-blanks-input prompt &optional initial inherit-input-method
|
||||
This function reads a string from the minibuffer, but does not allow
|
||||
whitespace characters as part of the input: instead, those characters
|
||||
|
@ -2475,7 +2473,6 @@ usual minibuffer input functions because they all start by choosing the
|
|||
minibuffer window according to the selected frame.
|
||||
@end defun
|
||||
|
||||
@c Emacs 19 feature
|
||||
@defun window-minibuffer-p &optional window
|
||||
This function returns @code{t} if @var{window} is a minibuffer window.
|
||||
@var{window} defaults to the selected window.
|
||||
|
@ -2619,7 +2616,6 @@ when the minibuffer is active, not even if you switch to another window
|
|||
to do it.
|
||||
@end defopt
|
||||
|
||||
@c Emacs 19 feature
|
||||
If a command name has a property @code{enable-recursive-minibuffers}
|
||||
that is non-@code{nil}, then the command can use the minibuffer to read
|
||||
arguments even if it is invoked from the minibuffer. A command can
|
||||
|
|
|
@ -232,7 +232,6 @@ backward until encountering the front of a word, rather than forward.
|
|||
@end deffn
|
||||
|
||||
@defopt words-include-escapes
|
||||
@c Emacs 19 feature
|
||||
This variable affects the behavior of @code{forward-word} and
|
||||
@code{backward-word}, and everything that uses them. If it is
|
||||
non-@code{nil}, then characters in the escape and character-quote
|
||||
|
|
|
@ -1696,7 +1696,6 @@ buffer has a buffer-local binding. For example, you could use
|
|||
you are in a C or Lisp mode buffer that has a buffer-local value for
|
||||
this variable.
|
||||
|
||||
@c Emacs 19 feature
|
||||
The special forms @code{defvar} and @code{defconst} also set the
|
||||
default value (if they set the variable at all), rather than any
|
||||
buffer-local value.
|
||||
|
@ -1708,7 +1707,6 @@ this variable. If @var{symbol} is not buffer-local, this is equivalent
|
|||
to @code{symbol-value} (@pxref{Accessing Variables}).
|
||||
@end defun
|
||||
|
||||
@c Emacs 19 feature
|
||||
@defun default-boundp symbol
|
||||
The function @code{default-boundp} tells you whether @var{symbol}'s
|
||||
default value is nonvoid. If @code{(default-boundp 'foo)} returns
|
||||
|
|
|
@ -287,6 +287,7 @@ orgclean:
|
|||
rm -f ${TEXI_FROM_ORG}
|
||||
|
||||
bootstrap-clean maintainer-clean: distclean infoclean orgclean
|
||||
rm -f TAGS
|
||||
|
||||
.PHONY: install-dvi install-html install-pdf install-ps install-doc
|
||||
|
||||
|
@ -336,4 +337,20 @@ uninstall-pdf:
|
|||
uninstall-doc: uninstall-dvi uninstall-html uninstall-pdf uninstall-ps
|
||||
|
||||
|
||||
ETAGS = ../../lib-src/etags${EXEEXT}
|
||||
|
||||
${ETAGS}: FORCE
|
||||
$(MAKE) -C $(dir $@) $(notdir $@)
|
||||
|
||||
texifiles = $(wildcard ${srcdir}/*.texi)
|
||||
|
||||
TAGS: ${ETAGS} $(texifiles)
|
||||
$(AM_V_GEN)${ETAGS} $(texifiles)
|
||||
|
||||
tags: TAGS
|
||||
.PHONY: tags
|
||||
|
||||
FORCE:
|
||||
.PHONY: FORCE
|
||||
|
||||
### Makefile ends here
|
||||
|
|
|
@ -370,11 +370,10 @@ On Windows, the @file{.emacs} file may be called @file{_emacs} for
|
|||
backward compatibility with DOS and FAT filesystems where filenames
|
||||
could not start with a dot. Some users prefer to continue using such
|
||||
a name due to historical problems various Windows tools had in the
|
||||
past with file names that begin with a dot. In Emacs 22 and later,
|
||||
the init file may also be called @file{.emacs.d/init.el}. Many of the
|
||||
other files that are created by lisp packages are now stored in the
|
||||
@file{.emacs.d} directory too, so this keeps all your Emacs related
|
||||
files in one place.
|
||||
past with file names that begin with a dot. The init file may also be
|
||||
called @file{.emacs.d/init.el}. Many of the other files that are
|
||||
created by Lisp packages are stored in the @file{.emacs.d} directory
|
||||
too, which keeps all your Emacs related files in one place.
|
||||
|
||||
All the files mentioned above should go in your @env{HOME} directory.
|
||||
The @env{HOME} directory is determined by following the steps below:
|
||||
|
|
|
@ -160,13 +160,7 @@ Where and how to get Gnus?
|
|||
|
||||
@subsubheading Answer
|
||||
|
||||
Gnus is released independent from releases of Emacs. Therefore, the
|
||||
version bundled with Emacs might not be up to date (e.g., Gnus 5.9
|
||||
bundled with Emacs 21 is outdated).
|
||||
You can get the latest released version of Gnus from
|
||||
@uref{https://www.gnus.org/dist/gnus.tar.gz}
|
||||
or from
|
||||
@uref{https://ftp.gnus.org/pub/gnus/gnus.tar.gz}.
|
||||
Gnus is bundled with Emacs.
|
||||
|
||||
@node FAQ 1-4
|
||||
@subsubheading Question 1.4
|
||||
|
|
|
@ -815,7 +815,7 @@ Various
|
|||
* Undo:: Some actions can be undone.
|
||||
* Predicate Specifiers:: Specifying predicates.
|
||||
* Moderation:: What to do if you're a moderator.
|
||||
* Image Enhancements:: Modern versions of Emacs can display images.
|
||||
* Image Enhancements:: Emacs can display images.
|
||||
* Fuzzy Matching:: What's the big fuzz?
|
||||
* Thwarting Email Spam:: Simple ways to avoid unsolicited commercial email.
|
||||
* Spam Package:: A package for filtering and processing spam.
|
||||
|
@ -22505,7 +22505,7 @@ to you, using @kbd{G b u} and updating the group will usually fix this.
|
|||
* Predicate Specifiers:: Specifying predicates.
|
||||
* Moderation:: What to do if you're a moderator.
|
||||
* Fetching a Group:: Starting Gnus just to read a group.
|
||||
* Image Enhancements:: Modern versions of Emacs can display images.
|
||||
* Image Enhancements:: Emacs can display images.
|
||||
* Fuzzy Matching:: What's the big fuzz?
|
||||
* Thwarting Email Spam:: Simple ways to avoid unsolicited commercial email.
|
||||
* Spam Package:: A package for filtering and processing spam.
|
||||
|
@ -23668,9 +23668,8 @@ It takes the group name as a parameter.
|
|||
@node Image Enhancements
|
||||
@section Image Enhancements
|
||||
|
||||
Emacs 21@footnote{Emacs 21 on MS Windows doesn't
|
||||
support images, Emacs 22 does.} and up are able to display pictures and
|
||||
stuff, so Gnus has taken advantage of that.
|
||||
Emacs is able to display pictures and stuff, so Gnus has taken
|
||||
advantage of that.
|
||||
|
||||
@menu
|
||||
* X-Face:: Display a funky, teensy black-and-white image.
|
||||
|
|
|
@ -2648,11 +2648,14 @@ visibility of files.
|
|||
@subsection @option{sshfs} setup
|
||||
@cindex sshfs setup
|
||||
|
||||
The method @option{sshfs} declares only the mount arguments, passed to
|
||||
the @command{sshfs} command. This is a list of list of strings, and
|
||||
can be overwritten by the connection property @t{"mount-args"},
|
||||
@xref{Predefined connection information}.
|
||||
The method @option{sshfs} declares the mount arguments in the variable
|
||||
@code{tramp-methods}, passed to the @command{sshfs} command. This is
|
||||
a list of list of strings, and can be overwritten by the connection
|
||||
property @t{"mount-args"}, @xref{Predefined connection information}.
|
||||
|
||||
Additionally, it declares also the arguments for running remote
|
||||
processes, using the @command{ssh} command. These don't need to be
|
||||
changed.
|
||||
|
||||
@node Android shell setup
|
||||
@section Android shell setup hints
|
||||
|
|
33
etc/NEWS
33
etc/NEWS
|
@ -24,7 +24,7 @@ applies, and please also update docstrings as needed.
|
|||
|
||||
* Installation Changes in Emacs 28.1
|
||||
|
||||
--
|
||||
---
|
||||
** Support for building with Motif has been removed.
|
||||
|
||||
** Cairo graphics library is now used by default if found.
|
||||
|
@ -69,8 +69,7 @@ It was declared obsolete in Emacs 27.1.
|
|||
---
|
||||
** The configure option '--without-makeinfo' has been removed.
|
||||
This was only ever relevant when building from a repository checkout.
|
||||
Please install makeinfo, or if all else fails run 'make lisp' instead
|
||||
of 'make [all]'.
|
||||
This now requires makeinfo, which is part of the texinfo package.
|
||||
|
||||
---
|
||||
** Support for building with '-fcheck-pointer-bounds' has been removed.
|
||||
|
@ -520,11 +519,13 @@ It can be used to enable/disable the tab bar individually on each frame
|
|||
independently from the value of 'tab-bar-mode' and 'tab-bar-show'.
|
||||
|
||||
---
|
||||
*** New variable 'tab-bar-format' defines a list of tab bar items.
|
||||
*** New option 'tab-bar-format' defines a list of tab bar items.
|
||||
When it contains 'tab-bar-format-global' (possibly appended after
|
||||
'tab-bar-format-align-right'), then after enabling 'display-time-mode'
|
||||
(or any other mode that uses 'global-mode-string') it displays time
|
||||
aligned to the right on the tab bar instead of the mode line.
|
||||
When 'tab-bar-format-tabs' is replaced with 'tab-bar-format-tabs-groups',
|
||||
then the tab bar displays tab groups.
|
||||
|
||||
---
|
||||
*** 'Mod-9' bound to 'tab-last' now switches to the last tab.
|
||||
|
@ -541,6 +542,10 @@ It also supports a negative argument.
|
|||
*** 'C-x t M' moves the current tab to the specified absolute position.
|
||||
It also supports a negative argument.
|
||||
|
||||
---
|
||||
*** 'C-x t G' assigns a group name to the tab.
|
||||
'tab-close-group' can close all tabs that belong to the selected group.
|
||||
|
||||
---
|
||||
*** New user option 'tab-bar-tab-name-format-function'.
|
||||
|
||||
|
@ -1438,9 +1443,9 @@ decaying average of delays, and if this number gets too high, the
|
|||
animation is stopped.
|
||||
|
||||
+++
|
||||
*** The 'n' and 'p' commands (next/previous image) now respects dired order.
|
||||
*** The 'n' and 'p' commands (next/previous image) now respect Dired order.
|
||||
These commands would previously display the next/previous image in
|
||||
alphabetical order, but will now find the "parent" dired buffer and
|
||||
lexicographic order, but will now find the "parent" Dired buffer and
|
||||
select the next/previous image file according to how the files are
|
||||
sorted there. The commands have also been extended to work when the
|
||||
"parent" buffer is an archive mode (i.e., zip file or the like) or tar
|
||||
|
@ -1470,6 +1475,22 @@ To load images with the default frame colors use the ':foreground' and
|
|||
This change only affects image types that support foreground and
|
||||
background colors or transparency, such as xbm, pbm, svg, png and gif.
|
||||
|
||||
+++
|
||||
*** Image smoothing can now be explicitly enabled or disabled.
|
||||
Smoothing applies a bilinear filter while scaling or rotating an image
|
||||
to prevent aliasing and other unwanted effects. The new image
|
||||
property ':transform-smoothing' can be set to t to force smoothing
|
||||
and nil to disable smoothing.
|
||||
|
||||
The default behaviour of smoothing on down-scaling and not smoothing
|
||||
on up-scaling remains unchanged.
|
||||
|
||||
+++
|
||||
*** New user option 'image-transform-smoothing'.
|
||||
This controls whether to use smoothing or not for an image. Values
|
||||
include nil (no smoothing), t (do smoothing) or a predicate function
|
||||
that's called with the image object and should return nil/t.
|
||||
|
||||
** EWW
|
||||
|
||||
+++
|
||||
|
|
|
@ -57,6 +57,8 @@ are included.")
|
|||
`(font-lock-type-face ((,class (:foreground "#92a65e" :weight bold))))
|
||||
`(font-lock-variable-name-face ((,class (:foreground "#cae682"))))
|
||||
`(font-lock-warning-face ((,class (:foreground "#ccaa8f"))))
|
||||
;; Help faces
|
||||
`(help-key-binding ((,class (:background "#333333" :foreground "#f6f3e8"))))
|
||||
;; Button and link faces
|
||||
`(link ((,class (:foreground "#8ac6f2" :underline t))))
|
||||
`(link-visited ((,class (:foreground "#e5786d" :underline t))))
|
||||
|
|
|
@ -1310,7 +1310,7 @@ aligner would have dealt with are."
|
|||
(thissep (if rulesep (cdr rulesep) separate))
|
||||
same (eol 0)
|
||||
search-start
|
||||
groups group-c
|
||||
groups ;; group-c
|
||||
spacing spacing-c
|
||||
tab-stop tab-stop-c
|
||||
repeat repeat-c
|
||||
|
@ -1434,7 +1434,7 @@ aligner would have dealt with are."
|
|||
|
||||
;; lookup the `group' attribute the first time
|
||||
;; that we need it
|
||||
(unless group-c
|
||||
(unless nil ;; group-c
|
||||
(setq groups (or (cdr (assq 'group rule)) 1))
|
||||
(unless (listp groups)
|
||||
(setq groups (list groups)))
|
||||
|
|
|
@ -660,11 +660,11 @@ Does not signal an error if optional argument NOERROR is non-nil."
|
|||
(defun archive-mode (&optional force)
|
||||
"Major mode for viewing an archive file in a dired-like way.
|
||||
You can move around using the usual cursor motion commands.
|
||||
Letters no longer insert themselves.
|
||||
Type `e' to pull a file out of the archive and into its own buffer;
|
||||
Letters no longer insert themselves.\\<archive-mode-map>
|
||||
Type \\[archive-extract] to pull a file out of the archive and into its own buffer;
|
||||
or click mouse-2 on the file's line in the archive mode buffer.
|
||||
|
||||
If you edit a sub-file of this archive (as with the `e' command) and
|
||||
If you edit a sub-file of this archive (as with the \\[archive-extract] command) and
|
||||
save it, the contents of that buffer will be saved back into the
|
||||
archive.
|
||||
|
||||
|
|
|
@ -472,8 +472,8 @@ mouse event is used.
|
|||
If there's no button at POS, do nothing and return nil, otherwise
|
||||
return t.
|
||||
|
||||
To get a description of what function will called when pushing a
|
||||
butting, use the `button-describe' command."
|
||||
To get a description of the function that will be invoked when
|
||||
pushing a button, use the `button-describe' command."
|
||||
(interactive
|
||||
(list (if (integerp last-command-event) (point) last-command-event)))
|
||||
(if (and (not (integerp pos)) (eventp pos))
|
||||
|
|
|
@ -639,7 +639,7 @@ Interactively, reads the register using `register-read-with-preview'."
|
|||
(calc-slow-wrapper
|
||||
(when (eq n 0)
|
||||
(setq n (calc-stack-size)))
|
||||
(let* ((flag nil)
|
||||
(let* (;; (flag nil)
|
||||
(allow-ret (> n 1))
|
||||
(list (math-showing-full-precision
|
||||
(mapcar (if (> n 1)
|
||||
|
@ -651,7 +651,8 @@ Interactively, reads the register using `register-read-with-preview'."
|
|||
(if (> n 0)
|
||||
(calc-top-list n)
|
||||
(calc-top-list 1 (- n)))))))
|
||||
(calc--edit-mode (lambda () (calc-finish-stack-edit (or flag n))) allow-ret)
|
||||
(calc--edit-mode (lambda () (calc-finish-stack-edit n)) ;; (or flag n)
|
||||
allow-ret)
|
||||
(while list
|
||||
(insert (car list) "\n")
|
||||
(setq list (cdr list)))))
|
||||
|
|
|
@ -291,7 +291,7 @@ user-defined operators, use `calculator-user-operators' instead.")
|
|||
5. The function's precedence -- should be in the range of 1 (lowest) to
|
||||
9 (highest) (optional, defaults to 1);
|
||||
|
||||
It it possible have a unary prefix version of a binary operator if it
|
||||
It is possible have a unary prefix version of a binary operator if it
|
||||
comes later in this list. If the list begins with the symbol `nobind',
|
||||
then no key binding will take place -- this is only used for predefined
|
||||
keys.
|
||||
|
|
|
@ -2279,7 +2279,7 @@ made in the number or names of categories."
|
|||
(inc (prefix-numeric-value inc))
|
||||
(buffer-read-only nil)
|
||||
ndate ntime
|
||||
year monthname month day dayname)
|
||||
year monthname month day) ;; dayname
|
||||
(when marked (todo--user-error-if-marked-done-item))
|
||||
(save-excursion
|
||||
(or (and marked (goto-char (point-min))) (todo-item-start))
|
||||
|
@ -2437,7 +2437,7 @@ made in the number or names of categories."
|
|||
(monthname monthname)
|
||||
(month month)
|
||||
(day day)
|
||||
(dayname dayname))
|
||||
(dayname nil)) ;; dayname
|
||||
(mapconcat #'eval calendar-date-display-form "")))))
|
||||
(when ndate (replace-match ndate nil nil nil 1))
|
||||
;; Add new time string to the header, if it was supplied.
|
||||
|
@ -3450,8 +3450,8 @@ containing only archived items, provided user option
|
|||
are shown in `todo-archived-only' face."
|
||||
(interactive)
|
||||
(todo-display-categories)
|
||||
(let (sortkey)
|
||||
(todo-update-categories-display sortkey)))
|
||||
;; (let (sortkey)
|
||||
(todo-update-categories-display nil)) ;; sortkey
|
||||
|
||||
(defun todo-next-button (n)
|
||||
"Move point to the Nth next button in the table of categories."
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
;;; cedet-cscope.el --- CScope support for CEDET
|
||||
;;; cedet-cscope.el --- CScope support for CEDET -*- lexical-binding: t; -*-
|
||||
|
||||
;;; Copyright (C) 2009-2021 Free Software Foundation, Inc.
|
||||
|
||||
|
@ -34,7 +34,7 @@
|
|||
:type 'string
|
||||
:group 'cedet)
|
||||
|
||||
(defun cedet-cscope-search (searchtext texttype type scope)
|
||||
(defun cedet-cscope-search (searchtext texttype type _scope)
|
||||
"Perform a search with CScope, return the created buffer.
|
||||
SEARCHTEXT is text to find.
|
||||
TEXTTYPE is the type of text, such as `regexp', `string', `tagname',
|
||||
|
@ -85,7 +85,7 @@ options -cR."
|
|||
(with-current-buffer b
|
||||
(setq default-directory cd)
|
||||
(erase-buffer))
|
||||
(apply 'call-process cedet-cscope-command
|
||||
(apply #'call-process cedet-cscope-command
|
||||
nil b nil
|
||||
flags)
|
||||
b))
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
;;; cedet-files.el --- Common routines dealing with file names.
|
||||
;;; cedet-files.el --- Common routines dealing with file names. -*- lexical-binding: t; -*-
|
||||
|
||||
;; Copyright (C) 2007-2021 Free Software Foundation, Inc.
|
||||
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
;;; cedet-global.el --- GNU Global support for CEDET.
|
||||
;;; cedet-global.el --- GNU Global support for CEDET. -*- lexical-binding: t; -*-
|
||||
|
||||
;; Copyright (C) 2008-2021 Free Software Foundation, Inc.
|
||||
|
||||
|
@ -75,7 +75,7 @@ SCOPE is the scope of the search, such as `project' or `subdirs'."
|
|||
(with-current-buffer b
|
||||
(setq default-directory cd)
|
||||
(erase-buffer))
|
||||
(apply 'call-process cedet-global-command
|
||||
(apply #'call-process cedet-global-command
|
||||
nil b nil
|
||||
flags)
|
||||
b))
|
||||
|
@ -88,7 +88,7 @@ SCOPE is the scope of the search, such as `project' or `subdirs'."
|
|||
(with-current-buffer b
|
||||
(setq default-directory cd)
|
||||
(erase-buffer))
|
||||
(apply 'call-process cedet-global-gtags-command
|
||||
(apply #'call-process cedet-global-gtags-command
|
||||
nil b nil
|
||||
flags)
|
||||
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
;;; cedet-idutils.el --- ID Utils support for CEDET.
|
||||
;;; cedet-idutils.el --- ID Utils support for CEDET. -*- lexical-binding: t; -*-
|
||||
|
||||
;; Copyright (C) 2009-2021 Free Software Foundation, Inc.
|
||||
|
||||
|
@ -47,7 +47,7 @@
|
|||
:type 'string
|
||||
:group 'cedet)
|
||||
|
||||
(defun cedet-idutils-search (searchtext texttype type scope)
|
||||
(defun cedet-idutils-search (searchtext texttype type _scope)
|
||||
"Perform a search with ID Utils, return the created buffer.
|
||||
SEARCHTEXT is text to find.
|
||||
TEXTTYPE is the type of text, such as `regexp', `string', `tagname',
|
||||
|
@ -64,7 +64,7 @@ Note: Scope is not yet supported."
|
|||
(let* ((resultflg (if (eq texttype 'tagcompletions)
|
||||
(list "--key=token")
|
||||
(list "--result=grep")))
|
||||
(scopeflgs nil) ; (cond ((eq scope 'project) "" ) ((eq scope 'target) "l")))
|
||||
;; (scopeflgs (cond ((eq scope 'project) "" ) ((eq scope 'target) "l")))
|
||||
(stflag (cond ((or (eq texttype 'tagname)
|
||||
(eq texttype 'tagregexp))
|
||||
(list "-r" "-w"))
|
||||
|
@ -77,7 +77,7 @@ Note: Scope is not yet supported."
|
|||
;; t means 'symbol
|
||||
(t (list "-l" "-w"))))
|
||||
)
|
||||
(cedet-idutils-lid-call (append resultflg scopeflgs stflag
|
||||
(cedet-idutils-lid-call (append resultflg nil stflag ;; scopeflgs
|
||||
(list searchtext))))))
|
||||
|
||||
(defun cedet-idutils-fnid-call (flags)
|
||||
|
@ -89,7 +89,7 @@ Return the created buffer with program output."
|
|||
(with-current-buffer b
|
||||
(setq default-directory cd)
|
||||
(erase-buffer))
|
||||
(apply 'call-process cedet-idutils-file-command
|
||||
(apply #'call-process cedet-idutils-file-command
|
||||
nil b nil
|
||||
flags)
|
||||
b))
|
||||
|
@ -103,7 +103,7 @@ Return the created buffer with program output."
|
|||
(with-current-buffer b
|
||||
(setq default-directory cd)
|
||||
(erase-buffer))
|
||||
(apply 'call-process cedet-idutils-token-command
|
||||
(apply #'call-process cedet-idutils-token-command
|
||||
nil b nil
|
||||
flags)
|
||||
b))
|
||||
|
@ -117,7 +117,7 @@ Return the created buffer with program output."
|
|||
(with-current-buffer b
|
||||
(setq default-directory cd)
|
||||
(erase-buffer))
|
||||
(apply 'call-process cedet-idutils-make-command
|
||||
(apply #'call-process cedet-idutils-make-command
|
||||
nil b nil
|
||||
flags)
|
||||
b))
|
||||
|
@ -133,7 +133,7 @@ Return a filename relative to the default directory."
|
|||
(if (looking-at "[^ \n]*fnid: ")
|
||||
(error "ID Utils not available")
|
||||
(split-string (buffer-string) "\n" t)))))
|
||||
(setq ans (mapcar 'expand-file-name ans))
|
||||
(setq ans (mapcar #'expand-file-name ans))
|
||||
(when (called-interactively-p 'interactive)
|
||||
(if ans
|
||||
(if (= (length ans) 1)
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
;;; cedet.el --- Setup CEDET environment
|
||||
;;; cedet.el --- Setup CEDET environment -*- lexical-binding: t; -*-
|
||||
|
||||
;; Copyright (C) 2002-2021 Free Software Foundation, Inc.
|
||||
|
||||
|
@ -48,25 +48,25 @@
|
|||
|
||||
(defvar cedet-menu-map ;(make-sparse-keymap "CEDET menu")
|
||||
(let ((map (make-sparse-keymap "CEDET menu")))
|
||||
(define-key map [semantic-force-refresh] 'undefined)
|
||||
(define-key map [semantic-edit-menu] 'undefined)
|
||||
(define-key map [navigate-menu] 'undefined)
|
||||
(define-key map [semantic-options-separator] 'undefined)
|
||||
(define-key map [global-semantic-highlight-func-mode] 'undefined)
|
||||
(define-key map [global-semantic-stickyfunc-mode] 'undefined)
|
||||
(define-key map [global-semantic-decoration-mode] 'undefined)
|
||||
(define-key map [global-semantic-idle-completions-mode] 'undefined)
|
||||
(define-key map [global-semantic-idle-summary-mode] 'undefined)
|
||||
(define-key map [global-semantic-idle-scheduler-mode] 'undefined)
|
||||
(define-key map [global-semanticdb-minor-mode] 'undefined)
|
||||
(define-key map [cedet-menu-separator] 'undefined)
|
||||
(define-key map [ede-find-file] 'undefined)
|
||||
(define-key map [ede-speedbar] 'undefined)
|
||||
(define-key map [ede] 'undefined)
|
||||
(define-key map [ede-new] 'undefined)
|
||||
(define-key map [ede-target-options] 'undefined)
|
||||
(define-key map [ede-project-options] 'undefined)
|
||||
(define-key map [ede-build-forms-menu] 'undefined)
|
||||
(define-key map [semantic-force-refresh] #'undefined)
|
||||
(define-key map [semantic-edit-menu] #'undefined)
|
||||
(define-key map [navigate-menu] #'undefined)
|
||||
(define-key map [semantic-options-separator] #'undefined)
|
||||
(define-key map [global-semantic-highlight-func-mode] #'undefined)
|
||||
(define-key map [global-semantic-stickyfunc-mode] #'undefined)
|
||||
(define-key map [global-semantic-decoration-mode] #'undefined)
|
||||
(define-key map [global-semantic-idle-completions-mode] #'undefined)
|
||||
(define-key map [global-semantic-idle-summary-mode] #'undefined)
|
||||
(define-key map [global-semantic-idle-scheduler-mode] #'undefined)
|
||||
(define-key map [global-semanticdb-minor-mode] #'undefined)
|
||||
(define-key map [cedet-menu-separator] #'undefined)
|
||||
(define-key map [ede-find-file] #'undefined)
|
||||
(define-key map [ede-speedbar] #'undefined)
|
||||
(define-key map [ede] #'undefined)
|
||||
(define-key map [ede-new] #'undefined)
|
||||
(define-key map [ede-target-options] #'undefined)
|
||||
(define-key map [ede-project-options] #'undefined)
|
||||
(define-key map [ede-build-forms-menu] #'undefined)
|
||||
map)
|
||||
"Menu keymap for the CEDET package.
|
||||
This is used by `semantic-mode' and `global-ede-mode'.")
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
;;; data-debug.el --- Data structure debugger
|
||||
;;; data-debug.el --- Data structure debugger -*- lexical-binding: t; -*-
|
||||
|
||||
;; Copyright (C) 2007-2021 Free Software Foundation, Inc.
|
||||
|
||||
|
@ -48,9 +48,9 @@
|
|||
|
||||
;;; Compatibility
|
||||
;;
|
||||
(define-obsolete-function-alias 'data-debug-overlay-properties 'overlay-properties "28.1")
|
||||
(define-obsolete-function-alias 'data-debug-overlay-p 'overlayp "28.1")
|
||||
(define-obsolete-function-alias 'dd-propertize 'propertize "28.1")
|
||||
(define-obsolete-function-alias 'data-debug-overlay-properties #'overlay-properties "28.1")
|
||||
(define-obsolete-function-alias 'data-debug-overlay-p #'overlayp "28.1")
|
||||
(define-obsolete-function-alias 'dd-propertize #'propertize "28.1")
|
||||
|
||||
;;; GENERIC STUFF
|
||||
;;
|
||||
|
@ -100,14 +100,14 @@ PREBUTTONTEXT is some text between prefix and the overlay button."
|
|||
(let ((start (point))
|
||||
(end nil)
|
||||
(str (format "%s" overlay))
|
||||
(tip nil))
|
||||
) ;; (tip nil)
|
||||
(insert prefix prebuttontext str)
|
||||
(setq end (point))
|
||||
(put-text-property (- end (length str)) end 'face 'font-lock-comment-face)
|
||||
(put-text-property start end 'ddebug overlay)
|
||||
(put-text-property start end 'ddebug-indent(length prefix))
|
||||
(put-text-property start end 'ddebug-prefix prefix)
|
||||
(put-text-property start end 'help-echo tip)
|
||||
;; (put-text-property start end 'help-echo tip)
|
||||
(put-text-property start end 'ddebug-function
|
||||
'data-debug-insert-overlay-from-point)
|
||||
(insert "\n")
|
||||
|
@ -149,14 +149,14 @@ PREBUTTONTEXT is some text between prefix and the overlay list button."
|
|||
(let ((start (point))
|
||||
(end nil)
|
||||
(str (format "#<overlay list: %d entries>" (length overlaylist)))
|
||||
(tip nil))
|
||||
) ;; (tip nil)
|
||||
(insert prefix prebuttontext str)
|
||||
(setq end (point))
|
||||
(put-text-property (- end (length str)) end 'face 'font-lock-comment-face)
|
||||
(put-text-property start end 'ddebug overlaylist)
|
||||
(put-text-property start end 'ddebug-indent(length prefix))
|
||||
(put-text-property start end 'ddebug-prefix prefix)
|
||||
(put-text-property start end 'help-echo tip)
|
||||
;; (put-text-property start end 'help-echo tip)
|
||||
(put-text-property start end 'ddebug-function
|
||||
'data-debug-insert-overlay-list-from-point)
|
||||
(insert "\n")
|
||||
|
@ -204,14 +204,14 @@ PREBUTTONTEXT is some text between prefix and the buffer button."
|
|||
(let ((start (point))
|
||||
(end nil)
|
||||
(str (format "%S" buffer))
|
||||
(tip nil))
|
||||
) ;; (tip nil)
|
||||
(insert prefix prebuttontext str)
|
||||
(setq end (point))
|
||||
(put-text-property (- end (length str)) end 'face 'font-lock-comment-face)
|
||||
(put-text-property start end 'ddebug buffer)
|
||||
(put-text-property start end 'ddebug-indent(length prefix))
|
||||
(put-text-property start end 'ddebug-prefix prefix)
|
||||
(put-text-property start end 'help-echo tip)
|
||||
;; (put-text-property start end 'help-echo tip)
|
||||
(put-text-property start end 'ddebug-function
|
||||
'data-debug-insert-buffer-from-point)
|
||||
(insert "\n")
|
||||
|
@ -253,14 +253,14 @@ PREBUTTONTEXT is some text between prefix and the buffer list button."
|
|||
(let ((start (point))
|
||||
(end nil)
|
||||
(str (format "#<buffer list: %d entries>" (length bufferlist)))
|
||||
(tip nil))
|
||||
) ;; (tip nil)
|
||||
(insert prefix prebuttontext str)
|
||||
(setq end (point))
|
||||
(put-text-property (- end (length str)) end 'face 'font-lock-comment-face)
|
||||
(put-text-property start end 'ddebug bufferlist)
|
||||
(put-text-property start end 'ddebug-indent(length prefix))
|
||||
(put-text-property start end 'ddebug-prefix prefix)
|
||||
(put-text-property start end 'help-echo tip)
|
||||
;; (put-text-property start end 'help-echo tip)
|
||||
(put-text-property start end 'ddebug-function
|
||||
'data-debug-insert-buffer-list-from-point)
|
||||
(insert "\n")
|
||||
|
@ -309,14 +309,14 @@ PREBUTTONTEXT is some text between prefix and the process button."
|
|||
(let ((start (point))
|
||||
(end nil)
|
||||
(str (format "%S : %s" process (process-status process)))
|
||||
(tip nil))
|
||||
) ;; (tip nil)
|
||||
(insert prefix prebuttontext str)
|
||||
(setq end (point))
|
||||
(put-text-property (- end (length str)) end 'face 'font-lock-comment-face)
|
||||
(put-text-property start end 'ddebug process)
|
||||
(put-text-property start end 'ddebug-indent(length prefix))
|
||||
(put-text-property start end 'ddebug-prefix prefix)
|
||||
(put-text-property start end 'help-echo tip)
|
||||
;; (put-text-property start end 'help-echo tip)
|
||||
(put-text-property start end 'ddebug-function
|
||||
'data-debug-insert-process-from-point)
|
||||
(insert "\n")
|
||||
|
@ -363,8 +363,8 @@ PREBUTTONTEXT is some text between prefix and the stuff list button."
|
|||
(str (format "#<RING: %d, %d max>"
|
||||
(ring-length ring)
|
||||
(ring-size ring)))
|
||||
(ringthing
|
||||
(if (= (ring-length ring) 0) nil (ring-ref ring 0)))
|
||||
;; (ringthing
|
||||
;; (if (= (ring-length ring) 0) nil (ring-ref ring 0)))
|
||||
(tip (format "Ring max-size %d, length %d."
|
||||
(ring-size ring)
|
||||
(ring-length ring)))
|
||||
|
@ -437,7 +437,7 @@ PREBUTTONTEXT is some text between prefix and the stuff list button."
|
|||
;; Widgets have a long list of properties
|
||||
(defun data-debug-insert-widget-properties (widget prefix)
|
||||
"Insert the contents of WIDGET inserting PREFIX before each element."
|
||||
(let ((type (car widget))
|
||||
(let (;; (type (car widget))
|
||||
(rest (cdr widget)))
|
||||
(while rest
|
||||
(data-debug-insert-thing (car (cdr rest))
|
||||
|
@ -683,7 +683,7 @@ PREBUTTONTEXT is some text between prefix and the thing."
|
|||
)
|
||||
|
||||
;;; nil thing
|
||||
(defun data-debug-insert-nil (thing prefix prebuttontext)
|
||||
(defun data-debug-insert-nil (_thing prefix prebuttontext)
|
||||
"Insert one simple THING with a face.
|
||||
PREFIX is the text that precedes the button.
|
||||
PREBUTTONTEXT is some text between prefix and the thing.
|
||||
|
@ -856,19 +856,18 @@ If PARENT is non-nil, it is somehow related as a parent to thing."
|
|||
(defvar data-debug-mode-map
|
||||
(let ((km (make-sparse-keymap)))
|
||||
(suppress-keymap km)
|
||||
(define-key km [mouse-2] 'data-debug-expand-or-contract-mouse)
|
||||
(define-key km " " 'data-debug-expand-or-contract)
|
||||
(define-key km "\C-m" 'data-debug-expand-or-contract)
|
||||
(define-key km "n" 'data-debug-next)
|
||||
(define-key km "p" 'data-debug-prev)
|
||||
(define-key km "N" 'data-debug-next-expando)
|
||||
(define-key km "P" 'data-debug-prev-expando)
|
||||
(define-key km [mouse-2] #'data-debug-expand-or-contract-mouse)
|
||||
(define-key km " " #'data-debug-expand-or-contract)
|
||||
(define-key km "\C-m" #'data-debug-expand-or-contract)
|
||||
(define-key km "n" #'data-debug-next)
|
||||
(define-key km "p" #'data-debug-prev)
|
||||
(define-key km "N" #'data-debug-next-expando)
|
||||
(define-key km "P" #'data-debug-prev-expando)
|
||||
km)
|
||||
"Keymap used in data-debug.")
|
||||
|
||||
(defcustom data-debug-mode-hook nil
|
||||
"Hook run when data-debug starts."
|
||||
:group 'data-debug
|
||||
:type 'hook)
|
||||
|
||||
(define-derived-mode data-debug-mode fundamental-mode "DATA-DEBUG"
|
||||
|
@ -1032,7 +1031,7 @@ Do nothing if already contracted."
|
|||
nil read-expression-map t
|
||||
'read-expression-history))
|
||||
))
|
||||
(let ((v (eval expr)))
|
||||
(let ((v (eval expr t)))
|
||||
(if (not v)
|
||||
(message "Expression %s is nil." expr)
|
||||
(data-debug-show-stuff v "expression"))))
|
||||
|
@ -1049,12 +1048,12 @@ If the result is a list or vector, then use the data debugger to display it."
|
|||
|
||||
(let (result)
|
||||
(if (null eval-expression-debug-on-error)
|
||||
(setq result (values--store-value (eval expr)))
|
||||
(setq result (values--store-value (eval expr t)))
|
||||
(let ((old-value (make-symbol "t")) new-value)
|
||||
;; Bind debug-on-error to something unique so that we can
|
||||
;; detect when evalled code changes it.
|
||||
(let ((debug-on-error old-value))
|
||||
(setq result (values--store-value (eval expr)))
|
||||
(setq result (values--store-value (eval expr t)))
|
||||
(setq new-value debug-on-error))
|
||||
;; If evalled code has changed the value of debug-on-error,
|
||||
;; propagate that change to the global binding.
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
;;; ede.el --- Emacs Development Environment gloss
|
||||
;;; ede.el --- Emacs Development Environment gloss -*- lexical-binding: t; -*-
|
||||
|
||||
;; Copyright (C) 1998-2005, 2007-2021 Free Software Foundation, Inc.
|
||||
|
||||
|
@ -87,7 +87,6 @@ target wants the file, the user is asked. If only one target wants
|
|||
the file, then it is automatically added to that target. If the
|
||||
value is `ask', then the user is always asked, unless there is no
|
||||
target willing to take the file. `never' means never perform the check."
|
||||
:group 'ede
|
||||
:type '(choice (const always)
|
||||
(const multi-ask)
|
||||
(const ask)
|
||||
|
@ -95,7 +94,6 @@ target willing to take the file. `never' means never perform the check."
|
|||
|
||||
(defcustom ede-debug-program-function 'gdb
|
||||
"Default Emacs command used to debug a target."
|
||||
:group 'ede
|
||||
:type 'function) ; make this be a list of options some day
|
||||
|
||||
(defcustom ede-project-directories nil
|
||||
|
@ -112,7 +110,6 @@ If you invoke the commands \\[ede] or \\[ede-new] on a directory
|
|||
that is not listed, Emacs will offer to add it to the list.
|
||||
|
||||
Any other value disables searching for EDE project files."
|
||||
:group 'ede
|
||||
:type '(choice (const :tag "Any directory" t)
|
||||
(repeat :tag "List of directories"
|
||||
(directory))
|
||||
|
@ -186,21 +183,23 @@ Argument LIST-O-O is the list of objects to choose from."
|
|||
|
||||
;;; Menu and Keymap
|
||||
|
||||
(declare-function ede-speedbar "ede/speedbar" ())
|
||||
|
||||
(defvar ede-minor-mode-map
|
||||
(let ((map (make-sparse-keymap))
|
||||
(pmap (make-sparse-keymap)))
|
||||
(define-key pmap "e" 'ede-edit-file-target)
|
||||
(define-key pmap "a" 'ede-add-file)
|
||||
(define-key pmap "d" 'ede-remove-file)
|
||||
(define-key pmap "t" 'ede-new-target)
|
||||
(define-key pmap "g" 'ede-rescan-toplevel)
|
||||
(define-key pmap "s" 'ede-speedbar)
|
||||
(define-key pmap "f" 'ede-find-file)
|
||||
(define-key pmap "C" 'ede-compile-project)
|
||||
(define-key pmap "c" 'ede-compile-target)
|
||||
(define-key pmap "\C-c" 'ede-compile-selected)
|
||||
(define-key pmap "D" 'ede-debug-target)
|
||||
(define-key pmap "R" 'ede-run-target)
|
||||
(define-key pmap "e" #'ede-edit-file-target)
|
||||
(define-key pmap "a" #'ede-add-file)
|
||||
(define-key pmap "d" #'ede-remove-file)
|
||||
(define-key pmap "t" #'ede-new-target)
|
||||
(define-key pmap "g" #'ede-rescan-toplevel)
|
||||
(define-key pmap "s" #'ede-speedbar)
|
||||
(define-key pmap "f" #'ede-find-file)
|
||||
(define-key pmap "C" #'ede-compile-project)
|
||||
(define-key pmap "c" #'ede-compile-target)
|
||||
(define-key pmap "\C-c" #'ede-compile-selected)
|
||||
(define-key pmap "D" #'ede-debug-target)
|
||||
(define-key pmap "R" #'ede-run-target)
|
||||
;; bind our submap into map
|
||||
(define-key map "\C-c." pmap)
|
||||
map)
|
||||
|
@ -476,7 +475,7 @@ To be used in hook functions."
|
|||
If this file is contained, or could be contained in an EDE
|
||||
controlled project, then this mode is activated automatically
|
||||
provided `global-ede-mode' is enabled."
|
||||
:group 'ede
|
||||
:global nil
|
||||
(cond ((or (eq major-mode 'dired-mode)
|
||||
(eq major-mode 'vc-dir-mode))
|
||||
(ede-dired-minor-mode (if ede-minor-mode 1 -1)))
|
||||
|
@ -486,6 +485,9 @@ provided `global-ede-mode' is enabled."
|
|||
;; If we fail to have a project here, turn it back off.
|
||||
(ede-minor-mode -1)))))
|
||||
|
||||
(declare-function ede-directory-project-cons "ede/files" (dir &optional force))
|
||||
(declare-function ede-toplevel-project-or-nil "ede/files" (dir))
|
||||
|
||||
(defun ede-initialize-state-current-buffer ()
|
||||
"Initialize the current buffer's state for EDE.
|
||||
Sets buffer local variables for EDE."
|
||||
|
@ -496,7 +498,7 @@ Sets buffer local variables for EDE."
|
|||
;; Init the buffer.
|
||||
(let* ((ROOT nil)
|
||||
(proj (ede-directory-get-open-project default-directory
|
||||
'ROOT)))
|
||||
(gv-ref ROOT))))
|
||||
|
||||
(when (not proj)
|
||||
;; If there is no open project, look up the project
|
||||
|
@ -517,7 +519,8 @@ Sets buffer local variables for EDE."
|
|||
(ede-directory-safe-p top)))
|
||||
|
||||
;; The project is safe, so load it in.
|
||||
(setq proj (ede-load-project-file default-directory projdetect 'ROOT))))))
|
||||
(setq proj (ede-load-project-file default-directory projdetect
|
||||
(gv-ref ROOT)))))))
|
||||
|
||||
;; If PROJ is now loaded in, we can initialize our buffer to it.
|
||||
(when proj
|
||||
|
@ -561,30 +564,29 @@ Sets buffer local variables for EDE."
|
|||
This global minor mode enables `ede-minor-mode' in all buffers in
|
||||
an EDE controlled project."
|
||||
:global t
|
||||
:group 'ede
|
||||
(if global-ede-mode
|
||||
;; Turn on global-ede-mode
|
||||
(progn
|
||||
(if semantic-mode
|
||||
(define-key cedet-menu-map [cedet-menu-separator] '("--")))
|
||||
(add-hook 'semanticdb-project-predicate-functions 'ede-directory-project-p)
|
||||
(add-hook 'semanticdb-project-root-functions 'ede-toplevel-project-or-nil)
|
||||
(add-hook 'ecb-source-path-functions 'ede-ecb-project-paths)
|
||||
(add-hook 'semanticdb-project-predicate-functions #'ede-directory-project-p)
|
||||
(add-hook 'semanticdb-project-root-functions #'ede-toplevel-project-or-nil)
|
||||
(add-hook 'ecb-source-path-functions #'ede-ecb-project-paths)
|
||||
;; Append our hook to the end. This allows mode-local to finish
|
||||
;; it's stuff before we start doing misc file loads, etc.
|
||||
(add-hook 'find-file-hook 'ede-turn-on-hook t)
|
||||
(add-hook 'dired-mode-hook 'ede-turn-on-hook)
|
||||
(add-hook 'kill-emacs-hook 'ede-save-cache)
|
||||
(add-hook 'find-file-hook #'ede-turn-on-hook t)
|
||||
(add-hook 'dired-mode-hook #'ede-turn-on-hook)
|
||||
(add-hook 'kill-emacs-hook #'ede-save-cache)
|
||||
(ede-load-cache)
|
||||
(ede-reset-all-buffers))
|
||||
;; Turn off global-ede-mode
|
||||
(define-key cedet-menu-map [cedet-menu-separator] nil)
|
||||
(remove-hook 'semanticdb-project-predicate-functions 'ede-directory-project-p)
|
||||
(remove-hook 'semanticdb-project-root-functions 'ede-toplevel-project-or-nil)
|
||||
(remove-hook 'ecb-source-path-functions 'ede-ecb-project-paths)
|
||||
(remove-hook 'find-file-hook 'ede-turn-on-hook)
|
||||
(remove-hook 'dired-mode-hook 'ede-turn-on-hook)
|
||||
(remove-hook 'kill-emacs-hook 'ede-save-cache)
|
||||
(remove-hook 'semanticdb-project-predicate-functions #'ede-directory-project-p)
|
||||
(remove-hook 'semanticdb-project-root-functions #'ede-toplevel-project-or-nil)
|
||||
(remove-hook 'ecb-source-path-functions #'ede-ecb-project-paths)
|
||||
(remove-hook 'find-file-hook #'ede-turn-on-hook)
|
||||
(remove-hook 'dired-mode-hook #'ede-turn-on-hook)
|
||||
(remove-hook 'kill-emacs-hook #'ede-save-cache)
|
||||
(ede-save-cache)
|
||||
(ede-reset-all-buffers)))
|
||||
|
||||
|
@ -1080,7 +1082,7 @@ Flush the dead projects from the project cache."
|
|||
(let ((dead nil))
|
||||
(dolist (P ede-projects)
|
||||
(when (not (file-exists-p (oref P file)))
|
||||
(add-to-list 'dead P)))
|
||||
(cl-pushnew P dead :test #'equal)))
|
||||
(dolist (D dead)
|
||||
(ede-delete-project-from-global-list D))
|
||||
))
|
||||
|
@ -1108,7 +1110,7 @@ Flush the dead projects from the project cache."
|
|||
"Project file independent way to read a project in from DIR.
|
||||
Optional DETECTIN is an autoload cons from `ede-detect-directory-for-project'
|
||||
which can be passed in to save time.
|
||||
Optional ROOTRETURN will return the root project for DIR."
|
||||
Optional ROOTRETURN reference will return the root project for DIR."
|
||||
;; Don't do anything if we are in the process of
|
||||
;; constructing an EDE object.
|
||||
;;
|
||||
|
@ -1147,7 +1149,8 @@ Optional ROOTRETURN will return the root project for DIR."
|
|||
(setq o (ede-auto-load-project autoloader toppath))))
|
||||
|
||||
;; Return the found root project.
|
||||
(when rootreturn (set rootreturn o))
|
||||
(when rootreturn (if (symbolp rootreturn) (set rootreturn o)
|
||||
(setf (gv-deref rootreturn) o)))
|
||||
|
||||
;; The project has been found (in the global list) or loaded from
|
||||
;; disk (via autoloader.) We can now search for the project asked
|
||||
|
@ -1504,6 +1507,8 @@ It does not apply the value to buffers."
|
|||
;;; Integration with project.el
|
||||
|
||||
(defun project-try-ede (dir)
|
||||
;; FIXME: This passes the `ROOT' dynbound variable, but I don't know
|
||||
;; where it comes from!
|
||||
(let ((project-dir
|
||||
(locate-dominating-file
|
||||
dir
|
||||
|
@ -1523,7 +1528,7 @@ It does not apply the value to buffers."
|
|||
(provide 'ede)
|
||||
|
||||
;; Include this last because it depends on ede.
|
||||
(require 'ede/files)
|
||||
(if t (require 'ede/files)) ;; Don't bother loading it at compile-time.
|
||||
|
||||
;; If this does not occur after the provide, we can get a recursive
|
||||
;; load. Yuck!
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
;;; ede/auto.el --- Autoload features for EDE
|
||||
;;; ede/auto.el --- Autoload features for EDE -*- lexical-binding: t; -*-
|
||||
|
||||
;; Copyright (C) 2010-2021 Free Software Foundation, Inc.
|
||||
|
||||
|
@ -325,13 +325,13 @@ NOTE: Do not call this - it should only be called from `ede-load-project-file'."
|
|||
;; See if we can do without them.
|
||||
|
||||
;; @FIXME - delete from loaddefs to remove this.
|
||||
(cl-defmethod ede-project-root ((this ede-project-autoload))
|
||||
(cl-defmethod ede-project-root ((_this ede-project-autoload))
|
||||
"If a project knows its root, return it here.
|
||||
Allows for one-project-object-for-a-tree type systems."
|
||||
nil)
|
||||
|
||||
;; @FIXME - delete from loaddefs to remove this.
|
||||
(cl-defmethod ede-project-root-directory ((this ede-project-autoload) &optional file)
|
||||
(cl-defmethod ede-project-root-directory ((_this ede-project-autoload) &optional _file)
|
||||
"" nil)
|
||||
|
||||
(provide 'ede/auto)
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
;;; ede/autoconf-edit.el --- Keymap for autoconf
|
||||
;;; ede/autoconf-edit.el --- Keymap for autoconf -*- lexical-binding: t; -*-
|
||||
|
||||
;; Copyright (C) 1998-2000, 2009-2021 Free Software Foundation, Inc.
|
||||
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
;;; ede/config.el --- Configuration Handler baseclass
|
||||
;;; ede/config.el --- Configuration Handler baseclass -*- lexical-binding: t; -*-
|
||||
|
||||
;; Copyright (C) 2014-2021 Free Software Foundation, Inc.
|
||||
|
||||
|
@ -171,7 +171,7 @@ the directory isn't on the `safe' list, ask to add it to the safe list."
|
|||
(oset config project proj)))
|
||||
config))
|
||||
|
||||
(cl-defmethod ede-config-setup-configuration ((proj ede-project-with-config) config)
|
||||
(cl-defmethod ede-config-setup-configuration ((_proj ede-project-with-config) _config)
|
||||
"Default configuration setup method."
|
||||
nil)
|
||||
|
||||
|
@ -187,7 +187,7 @@ the directory isn't on the `safe' list, ask to add it to the safe list."
|
|||
(let ((config (ede-config-get-configuration proj t)))
|
||||
(eieio-customize-object config)))
|
||||
|
||||
(cl-defmethod ede-customize ((target ede-target-with-config))
|
||||
(cl-defmethod ede-customize ((_target ede-target-with-config))
|
||||
"Customize the EDE TARGET by actually configuring the config object."
|
||||
;; Nothing unique for the targets, use the project.
|
||||
(ede-customize-project))
|
||||
|
@ -302,14 +302,14 @@ This class brings in method overloads for building.")
|
|||
"Class to mix into a project with configuration for builds.
|
||||
This class brings in method overloads for building.")
|
||||
|
||||
(cl-defmethod project-compile-project ((proj ede-project-with-config-build) &optional command)
|
||||
(cl-defmethod project-compile-project ((proj ede-project-with-config-build) &optional _command)
|
||||
"Compile the entire current project PROJ.
|
||||
Argument COMMAND is the command to use when compiling."
|
||||
(let* ((config (ede-config-get-configuration proj t))
|
||||
(comp (oref config build-command)))
|
||||
(compile comp)))
|
||||
|
||||
(cl-defmethod project-compile-target ((obj ede-target-with-config-build) &optional command)
|
||||
(cl-defmethod project-compile-target ((_obj ede-target-with-config-build) &optional command)
|
||||
"Compile the current target OBJ.
|
||||
Argument COMMAND is the command to use for compiling the target."
|
||||
(project-compile-project (ede-current-project) command))
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
;;; ede/cpp-root.el --- A simple way to wrap a C++ project with a single root
|
||||
;;; ede/cpp-root.el --- A simple way to wrap a C++ project with a single root -*- lexical-binding: t; -*-
|
||||
|
||||
;; Copyright (C) 2007-2021 Free Software Foundation, Inc.
|
||||
|
||||
|
@ -275,7 +275,7 @@ Each directory needs a project file to control it.")
|
|||
;; objects is deleted.
|
||||
|
||||
(cl-defmethod initialize-instance ((this ede-cpp-root-project)
|
||||
&rest fields)
|
||||
&rest _fields)
|
||||
"Make sure the :file is fully expanded."
|
||||
;; Add ourselves to the master list
|
||||
(cl-call-next-method)
|
||||
|
@ -310,7 +310,7 @@ Each directory needs a project file to control it.")
|
|||
;; project, simplifying authoring new single-point projects.
|
||||
|
||||
(cl-defmethod ede-find-subproject-for-directory ((proj ede-cpp-root-project)
|
||||
dir)
|
||||
_dir)
|
||||
"Return PROJ, for handling all subdirs below DIR."
|
||||
proj)
|
||||
|
||||
|
@ -319,7 +319,7 @@ Each directory needs a project file to control it.")
|
|||
;; Creating new targets on a per directory basis is a good way to keep
|
||||
;; files organized. See ede-emacs for an example with multiple file
|
||||
;; types.
|
||||
(cl-defmethod ede-find-target ((proj ede-cpp-root-project) buffer)
|
||||
(cl-defmethod ede-find-target ((proj ede-cpp-root-project) _buffer)
|
||||
"Find an EDE target in PROJ for BUFFER.
|
||||
If one doesn't exist, create a new one for this directory."
|
||||
(let* ((targets (oref proj targets))
|
||||
|
@ -451,7 +451,7 @@ This is for project include paths and spp source files."
|
|||
"Get the pre-processor map for project THIS."
|
||||
(ede-preprocessor-map (ede-target-parent this)))
|
||||
|
||||
(cl-defmethod project-compile-project ((proj ede-cpp-root-project) &optional command)
|
||||
(cl-defmethod project-compile-project ((proj ede-cpp-root-project) &optional _command)
|
||||
"Compile the entire current project PROJ.
|
||||
Argument COMMAND is the command to use when compiling."
|
||||
;; we need to be in the proj root dir for this to work
|
||||
|
@ -474,7 +474,7 @@ Argument COMMAND is the command to use for compiling the target."
|
|||
(project-compile-project (oref obj project) command)))
|
||||
|
||||
|
||||
(cl-defmethod project-rescan ((this ede-cpp-root-project))
|
||||
(cl-defmethod project-rescan ((_this ede-cpp-root-project))
|
||||
"Don't rescan this project from the sources."
|
||||
(message "cpp-root has nothing to rescan."))
|
||||
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
;;; ede/custom.el --- customization of EDE projects.
|
||||
;;; ede/custom.el --- customization of EDE projects. -*- lexical-binding: t; -*-
|
||||
|
||||
;; Copyright (C) 2010-2021 Free Software Foundation, Inc.
|
||||
|
||||
|
@ -97,13 +97,13 @@ OBJ is the target object to customize."
|
|||
"Create a custom-like buffer for sorting targets of current project."
|
||||
(interactive)
|
||||
(let ((proj (ede-current-project))
|
||||
(count 1)
|
||||
current order)
|
||||
;; (count 1)
|
||||
) ;; current order
|
||||
(switch-to-buffer (get-buffer-create "*EDE sort targets*"))
|
||||
(erase-buffer)
|
||||
(setq ede-object-project proj)
|
||||
(widget-create 'push-button
|
||||
:notify (lambda (&rest ignore)
|
||||
:notify (lambda (&rest _ignore)
|
||||
(let ((targets (oref ede-object-project targets))
|
||||
cur newtargets)
|
||||
(while (setq cur (pop ede-project-sort-targets-order))
|
||||
|
@ -115,7 +115,7 @@ OBJ is the target object to customize."
|
|||
" Accept ")
|
||||
(widget-insert " ")
|
||||
(widget-create 'push-button
|
||||
:notify (lambda (&rest ignore)
|
||||
:notify (lambda (&rest _ignore)
|
||||
(kill-buffer))
|
||||
" Cancel ")
|
||||
(widget-insert "\n\n")
|
||||
|
@ -170,7 +170,9 @@ OBJ is the target object to customize."
|
|||
(widget-insert " "))
|
||||
(widget-insert (concat " " (number-to-string (1+ count)) ".: "
|
||||
(oref (nth (nth count ede-project-sort-targets-order)
|
||||
targets) name) "\n"))
|
||||
targets)
|
||||
name)
|
||||
"\n"))
|
||||
(setq count (1+ count))))))
|
||||
|
||||
;;; Customization hooks
|
||||
|
@ -195,11 +197,11 @@ OBJ is the target object to customize."
|
|||
;; These two methods should be implemented by subclasses of
|
||||
;; project and targets in order to account for user specified
|
||||
;; changes.
|
||||
(cl-defmethod eieio-done-customizing ((target ede-target))
|
||||
(cl-defmethod eieio-done-customizing ((_target ede-target))
|
||||
"Call this when a user finishes customizing TARGET."
|
||||
nil)
|
||||
|
||||
(cl-defmethod ede-commit-project ((proj ede-project))
|
||||
(cl-defmethod ede-commit-project ((_proj ede-project))
|
||||
"Commit any change to PROJ to its file."
|
||||
nil
|
||||
)
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
;;; ede/detect.el --- EDE project detection and file associations
|
||||
;;; ede/detect.el --- EDE project detection and file associations -*- lexical-binding: t; -*-
|
||||
|
||||
;; Copyright (C) 2014-2021 Free Software Foundation, Inc.
|
||||
|
||||
|
|
|
@ -35,11 +35,11 @@
|
|||
|
||||
(defvar ede-dired-keymap
|
||||
(let ((map (make-sparse-keymap)))
|
||||
(define-key map ".a" 'ede-dired-add-to-target)
|
||||
(define-key map ".t" 'ede-new-target)
|
||||
(define-key map ".s" 'ede-speedbar)
|
||||
(define-key map ".C" 'ede-compile-project)
|
||||
(define-key map ".d" 'ede-make-dist)
|
||||
(define-key map ".a" #'ede-dired-add-to-target)
|
||||
(define-key map ".t" #'ede-new-target)
|
||||
(define-key map ".s" #'ede-speedbar)
|
||||
(define-key map ".C" #'ede-compile-project)
|
||||
(define-key map ".d" #'ede-make-dist)
|
||||
|
||||
(easy-menu-define
|
||||
ede-dired-menu map "EDE Dired Minor Mode Menu"
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
;;; ede/files.el --- Associate projects with files and directories.
|
||||
;;; ede/files.el --- Associate projects with files and directories. -*- lexical-binding: t; -*-
|
||||
|
||||
;; Copyright (C) 2008-2021 Free Software Foundation, Inc.
|
||||
|
||||
|
@ -33,6 +33,7 @@
|
|||
;; till no ede-project-autoload structure matches.
|
||||
;;
|
||||
|
||||
(require 'eieio)
|
||||
(require 'ede)
|
||||
|
||||
(declare-function ede-locate-file-in-hash "ede/locate")
|
||||
|
@ -75,13 +76,13 @@ Allows for one-project-object-for-a-tree type systems."
|
|||
(oref this rootproject))
|
||||
|
||||
(cl-defmethod ede-project-root-directory ((this ede-project-placeholder)
|
||||
&optional file)
|
||||
&optional _file)
|
||||
"If a project knows its root, return it here.
|
||||
Allows for one-project-object-for-a-tree type systems.
|
||||
Optional FILE is the file to test. It is ignored in preference
|
||||
of the anchor file for the project."
|
||||
(let ((root (or (ede-project-root this) this)))
|
||||
(file-name-directory (expand-file-name (oref this file)))))
|
||||
;; (let ((root (or (ede-project-root this) this)))
|
||||
(file-name-directory (expand-file-name (oref this file)))) ;; )
|
||||
|
||||
|
||||
;; Why INODEs?
|
||||
|
@ -141,7 +142,7 @@ Does not check subprojects."
|
|||
|
||||
(defun ede-directory-get-open-project (dir &optional rootreturn)
|
||||
"Return an already open project that is managing DIR.
|
||||
Optional ROOTRETURN specifies a symbol to set to the root project.
|
||||
Optional ROOTRETURN specifies a `gv-ref' to set to the root project.
|
||||
If DIR is the root project, then it is the same."
|
||||
(let* ((inode (ede--inode-for-dir dir))
|
||||
(ft (file-name-as-directory (expand-file-name dir)))
|
||||
|
@ -153,7 +154,8 @@ If DIR is the root project, then it is the same."
|
|||
;; Default answer is this project
|
||||
(setq ans proj)
|
||||
;; Save.
|
||||
(when rootreturn (set rootreturn proj))
|
||||
(when rootreturn (if (symbolp rootreturn) (set rootreturn proj)
|
||||
(setf (gv-deref rootreturn) proj)))
|
||||
;; Find subprojects.
|
||||
(when (and proj (if ede--disable-inode
|
||||
(not (string= ft (expand-file-name
|
||||
|
@ -272,7 +274,7 @@ Do this whenever a new project is created, as opposed to loaded."
|
|||
(remhash (file-name-as-directory dir) ede-project-directory-hash)
|
||||
;; Look for all subdirs of D, and remove them.
|
||||
(let ((match (concat "^" (regexp-quote dir))))
|
||||
(maphash (lambda (K O)
|
||||
(maphash (lambda (K _O)
|
||||
(when (string-match match K)
|
||||
(remhash K ede-project-directory-hash)))
|
||||
ede-project-directory-hash)))
|
||||
|
@ -363,7 +365,7 @@ If DIR is not part of a project, return nil."
|
|||
|
||||
(t nil))))
|
||||
|
||||
(defalias 'ede-toplevel-project-or-nil 'ede-toplevel-project)
|
||||
(defalias 'ede-toplevel-project-or-nil #'ede-toplevel-project)
|
||||
|
||||
;;; DIRECTORY CONVERSION STUFF
|
||||
;;
|
||||
|
@ -469,15 +471,15 @@ is returned."
|
|||
|
||||
ans))
|
||||
|
||||
(cl-defmethod ede-expand-filename-impl ((this ede-project) filename &optional force)
|
||||
(cl-defmethod ede-expand-filename-impl ((this ede-project) filename &optional _force)
|
||||
"Return a fully qualified file name based on project THIS.
|
||||
FILENAME should be just a filename which occurs in a directory controlled
|
||||
by this project.
|
||||
Optional argument FORCE forces the default filename to be provided even if it
|
||||
doesn't exist."
|
||||
(let ((loc (ede-get-locator-object this))
|
||||
(path (ede-project-root-directory this))
|
||||
(proj (oref this subproj))
|
||||
;; (path (ede-project-root-directory this))
|
||||
;; (proj (oref this subproj))
|
||||
(found nil))
|
||||
;; find it Locally.
|
||||
(setq found (or (ede-expand-filename-local this filename)
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
;;; ede/generic.el --- Base Support for generic build systems
|
||||
;;; ede/generic.el --- Base Support for generic build systems -*- lexical-binding: t; -*-
|
||||
|
||||
;; Copyright (C) 2010-2021 Free Software Foundation, Inc.
|
||||
|
||||
|
@ -93,7 +93,7 @@
|
|||
)
|
||||
"User Configuration object for a generic project.")
|
||||
|
||||
(defun ede-generic-load (dir &optional rootproj)
|
||||
(defun ede-generic-load (dir &optional _rootproj)
|
||||
"Return a Generic Project object if there is a match.
|
||||
Return nil if there isn't one.
|
||||
Argument DIR is the directory it is created for.
|
||||
|
@ -149,7 +149,7 @@ The class allocated value is replace by different sub classes.")
|
|||
:abstract t)
|
||||
|
||||
(cl-defmethod initialize-instance ((this ede-generic-project)
|
||||
&rest fields)
|
||||
&rest _fields)
|
||||
"Make sure the targets slot is bound."
|
||||
(cl-call-next-method)
|
||||
(unless (slot-boundp this 'targets)
|
||||
|
@ -161,7 +161,7 @@ The class allocated value is replace by different sub classes.")
|
|||
this)
|
||||
|
||||
(cl-defmethod ede-find-subproject-for-directory ((proj ede-generic-project)
|
||||
dir)
|
||||
_dir)
|
||||
"Return PROJ, for handling all subdirs below DIR."
|
||||
proj)
|
||||
|
||||
|
@ -324,7 +324,7 @@ CLASS is the EIEIO class that is used to track this project. It should subclass
|
|||
)
|
||||
"Generic Project for makefiles.")
|
||||
|
||||
(cl-defmethod ede-generic-setup-configuration ((proj ede-generic-makefile-project) config)
|
||||
(cl-defmethod ede-generic-setup-configuration ((_proj ede-generic-makefile-project) config)
|
||||
"Setup a configuration for Make."
|
||||
(oset config build-command "make -k")
|
||||
(oset config debug-command "gdb ")
|
||||
|
@ -337,7 +337,7 @@ CLASS is the EIEIO class that is used to track this project. It should subclass
|
|||
)
|
||||
"Generic Project for scons.")
|
||||
|
||||
(cl-defmethod ede-generic-setup-configuration ((proj ede-generic-scons-project) config)
|
||||
(cl-defmethod ede-generic-setup-configuration ((_proj ede-generic-scons-project) config)
|
||||
"Setup a configuration for SCONS."
|
||||
(oset config build-command "scons")
|
||||
(oset config debug-command "gdb ")
|
||||
|
@ -350,7 +350,7 @@ CLASS is the EIEIO class that is used to track this project. It should subclass
|
|||
)
|
||||
"Generic Project for cmake.")
|
||||
|
||||
(cl-defmethod ede-generic-setup-configuration ((proj ede-generic-cmake-project) config)
|
||||
(cl-defmethod ede-generic-setup-configuration ((_proj ede-generic-cmake-project) config)
|
||||
"Setup a configuration for CMake."
|
||||
(oset config build-command "cmake")
|
||||
(oset config debug-command "gdb ")
|
||||
|
@ -361,9 +361,9 @@ CLASS is the EIEIO class that is used to track this project. It should subclass
|
|||
()
|
||||
"Generic project found via Version Control files.")
|
||||
|
||||
(cl-defmethod ede-generic-setup-configuration ((proj ede-generic-vc-project) config)
|
||||
(cl-defmethod ede-generic-setup-configuration ((_proj ede-generic-vc-project) _config)
|
||||
"Setup a configuration for projects identified by revision control."
|
||||
)
|
||||
nil)
|
||||
|
||||
(provide 'ede/generic)
|
||||
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
;;; ede/linux.el --- Special project for Linux
|
||||
;;; ede/linux.el --- Special project for Linux -*- lexical-binding: t; -*-
|
||||
|
||||
;; Copyright (C) 2008-2021 Free Software Foundation, Inc.
|
||||
|
||||
|
@ -47,26 +47,22 @@
|
|||
(defcustom project-linux-build-directory-default 'ask
|
||||
"Build directory."
|
||||
:version "24.4"
|
||||
:group 'project-linux
|
||||
:type '(choice (const :tag "Same as source directory" same)
|
||||
(const :tag "Ask the user" ask)))
|
||||
|
||||
(defcustom project-linux-architecture-default 'ask
|
||||
"Target architecture to assume when not auto-detected."
|
||||
:version "24.4"
|
||||
:group 'project-linux
|
||||
:type '(choice (string :tag "Architecture name")
|
||||
(const :tag "Ask the user" ask)))
|
||||
|
||||
|
||||
(defcustom project-linux-compile-target-command (concat ede-make-command " -k -C %s SUBDIRS=%s")
|
||||
"Default command used to compile a target."
|
||||
:group 'project-linux
|
||||
:type 'string)
|
||||
|
||||
(defcustom project-linux-compile-project-command (concat ede-make-command " -k -C %s")
|
||||
"Default command used to compile a project."
|
||||
:group 'project-linux
|
||||
:type 'string)
|
||||
|
||||
(defun ede-linux-version (dir)
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
;;; ede/locate.el --- Locate support
|
||||
;;; ede/locate.el --- Locate support -*- lexical-binding: t; -*-
|
||||
|
||||
;; Copyright (C) 2008-2021 Free Software Foundation, Inc.
|
||||
|
||||
|
@ -110,7 +110,7 @@ based on `ede-locate-setup-options'."
|
|||
)
|
||||
"Baseclass for LOCATE feature in EDE.")
|
||||
|
||||
(cl-defmethod initialize-instance ((loc ede-locate-base) &rest fields)
|
||||
(cl-defmethod initialize-instance ((loc ede-locate-base) &rest _fields)
|
||||
"Make sure we have a hash table."
|
||||
;; Basic setup.
|
||||
(cl-call-next-method)
|
||||
|
@ -118,8 +118,8 @@ based on `ede-locate-setup-options'."
|
|||
(ede-locate-flush-hash loc)
|
||||
)
|
||||
|
||||
(cl-defmethod ede-locate-ok-in-project ((loc (subclass ede-locate-base))
|
||||
root)
|
||||
(cl-defmethod ede-locate-ok-in-project ((_loc (subclass ede-locate-base))
|
||||
_root)
|
||||
"Is it ok to use this project type under ROOT."
|
||||
t)
|
||||
|
||||
|
@ -149,17 +149,15 @@ that created this EDE locate object."
|
|||
(oset loc lastanswer ans)
|
||||
ans))
|
||||
|
||||
(cl-defmethod ede-locate-file-in-project-impl ((loc ede-locate-base)
|
||||
filesubstring
|
||||
)
|
||||
(cl-defmethod ede-locate-file-in-project-impl ((_loc ede-locate-base)
|
||||
_filesubstring)
|
||||
"Locate with LOC occurrences of FILESUBSTRING.
|
||||
Searches are done under the current root of the EDE project
|
||||
that created this EDE locate object."
|
||||
nil
|
||||
)
|
||||
nil)
|
||||
|
||||
(cl-defmethod ede-locate-create/update-root-database
|
||||
((loc (subclass ede-locate-base)) root)
|
||||
((loc (subclass ede-locate-base)) _root)
|
||||
"Create or update the database for the current project.
|
||||
You cannot create projects for the baseclass."
|
||||
(error "Cannot create/update a database of type %S"
|
||||
|
@ -177,8 +175,8 @@ You cannot create projects for the baseclass."
|
|||
Configure the Emacs `locate-program' variable to also
|
||||
configure the use of EDE locate.")
|
||||
|
||||
(cl-defmethod ede-locate-ok-in-project ((loc (subclass ede-locate-locate))
|
||||
root)
|
||||
(cl-defmethod ede-locate-ok-in-project ((_loc (subclass ede-locate-locate))
|
||||
_root)
|
||||
"Is it ok to use this project type under ROOT."
|
||||
(or (featurep 'locate) (locate-library "locate"))
|
||||
)
|
||||
|
@ -198,7 +196,7 @@ that created this EDE locate object."
|
|||
(with-current-buffer b
|
||||
(setq default-directory cd)
|
||||
(erase-buffer))
|
||||
(apply 'call-process locate-command
|
||||
(apply #'call-process locate-command
|
||||
nil b nil
|
||||
searchstr nil)
|
||||
(with-current-buffer b
|
||||
|
@ -221,7 +219,7 @@ Configure EDE's use of GNU Global through the cedet-global.el
|
|||
variable `cedet-global-command'.")
|
||||
|
||||
(cl-defmethod initialize-instance ((loc ede-locate-global)
|
||||
&rest slots)
|
||||
&rest _slots)
|
||||
"Make sure that we can use GNU Global."
|
||||
(require 'cedet-global)
|
||||
;; Get ourselves initialized.
|
||||
|
@ -235,8 +233,8 @@ variable `cedet-global-command'.")
|
|||
(oref loc root))))
|
||||
)
|
||||
|
||||
(cl-defmethod ede-locate-ok-in-project ((loc (subclass ede-locate-global))
|
||||
root)
|
||||
(cl-defmethod ede-locate-ok-in-project ((_loc (subclass ede-locate-global))
|
||||
root)
|
||||
"Is it ok to use this project type under ROOT."
|
||||
(require 'cedet-global)
|
||||
(cedet-gnu-global-version-check)
|
||||
|
@ -252,7 +250,7 @@ variable `cedet-global-command'.")
|
|||
(cedet-gnu-global-expand-filename filesubstring)))
|
||||
|
||||
(cl-defmethod ede-locate-create/update-root-database
|
||||
((loc (subclass ede-locate-global)) root)
|
||||
((_loc (subclass ede-locate-global)) root)
|
||||
"Create or update the GNU Global database for the current project."
|
||||
(cedet-gnu-global-create/update-database root))
|
||||
|
||||
|
@ -271,7 +269,7 @@ Configure EDE's use of IDUtils through the cedet-idutils.el
|
|||
file name searching variable `cedet-idutils-file-command'.")
|
||||
|
||||
(cl-defmethod initialize-instance ((loc ede-locate-idutils)
|
||||
&rest slots)
|
||||
&rest _slots)
|
||||
"Make sure that we can use IDUtils."
|
||||
;; Get ourselves initialized.
|
||||
(cl-call-next-method)
|
||||
|
@ -283,8 +281,8 @@ file name searching variable `cedet-idutils-file-command'.")
|
|||
(oref loc root)))
|
||||
)
|
||||
|
||||
(cl-defmethod ede-locate-ok-in-project ((loc (subclass ede-locate-idutils))
|
||||
root)
|
||||
(cl-defmethod ede-locate-ok-in-project ((_loc (subclass ede-locate-idutils))
|
||||
root)
|
||||
"Is it ok to use this project type under ROOT."
|
||||
(require 'cedet-idutils)
|
||||
(cedet-idutils-version-check)
|
||||
|
@ -301,7 +299,7 @@ that created this EDE locate object."
|
|||
(cedet-idutils-expand-filename filesubstring)))
|
||||
|
||||
(cl-defmethod ede-locate-create/update-root-database
|
||||
((loc (subclass ede-locate-idutils)) root)
|
||||
((_loc (subclass ede-locate-idutils)) root)
|
||||
"Create or update the GNU Global database for the current project."
|
||||
(cedet-idutils-create/update-database root))
|
||||
|
||||
|
@ -320,7 +318,7 @@ Configure EDE's use of Cscope through the cedet-cscope.el
|
|||
file name searching variable `cedet-cscope-file-command'.")
|
||||
|
||||
(cl-defmethod initialize-instance ((loc ede-locate-cscope)
|
||||
&rest slots)
|
||||
&rest _slots)
|
||||
"Make sure that we can use Cscope."
|
||||
;; Get ourselves initialized.
|
||||
(cl-call-next-method)
|
||||
|
@ -332,8 +330,8 @@ file name searching variable `cedet-cscope-file-command'.")
|
|||
(oref loc root)))
|
||||
)
|
||||
|
||||
(cl-defmethod ede-locate-ok-in-project ((loc (subclass ede-locate-cscope))
|
||||
root)
|
||||
(cl-defmethod ede-locate-ok-in-project ((_loc (subclass ede-locate-cscope))
|
||||
root)
|
||||
"Is it ok to use this project type under ROOT."
|
||||
(require 'cedet-cscope)
|
||||
(cedet-cscope-version-check)
|
||||
|
@ -350,7 +348,7 @@ that created this EDE locate object."
|
|||
(cedet-cscope-expand-filename filesubstring)))
|
||||
|
||||
(cl-defmethod ede-locate-create/update-root-database
|
||||
((loc (subclass ede-locate-cscope)) root)
|
||||
((_loc (subclass ede-locate-cscope)) root)
|
||||
"Create or update the Cscope database for the current project."
|
||||
(require 'cedet-cscope)
|
||||
(cedet-cscope-create/update-database root))
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
;;; makefile-edit.el --- Makefile editing/scanning commands.
|
||||
;;; makefile-edit.el --- Makefile editing/scanning commands. -*- lexical-binding: t; -*-
|
||||
|
||||
;; Copyright (C) 2009-2021 Free Software Foundation, Inc.
|
||||
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
;;; ede/pconf.el --- configure.ac maintenance for EDE
|
||||
;;; ede/pconf.el --- configure.ac maintenance for EDE -*- lexical-binding: t; -*-
|
||||
|
||||
;;; Copyright (C) 1998-2000, 2005, 2008-2021 Free Software Foundation,
|
||||
;;; Inc.
|
||||
|
@ -67,7 +67,7 @@ don't do it. A value of nil means to just do it.")
|
|||
;;(td (file-name-directory (ede-proj-configure-file this)))
|
||||
(targs (oref this targets))
|
||||
(postcmd "")
|
||||
(add-missing nil))
|
||||
) ;; (add-missing nil)
|
||||
;; First, make sure we have a file.
|
||||
(if (not (file-exists-p (ede-proj-configure-file this)))
|
||||
(autoconf-new-program b (oref this name) "Project.ede"))
|
||||
|
@ -97,7 +97,7 @@ don't do it. A value of nil means to just do it.")
|
|||
(ede-map-targets sp #'ede-proj-flush-autoconf)))
|
||||
(ede-map-all-subprojects
|
||||
this
|
||||
(lambda (sp)
|
||||
(lambda (_sp)
|
||||
(ede-map-targets this #'ede-proj-tweak-autoconf)))
|
||||
;; Now save
|
||||
(save-buffer)
|
||||
|
@ -109,14 +109,15 @@ don't do it. A value of nil means to just do it.")
|
|||
(ede-proj-configure-test-required-file this "README")
|
||||
(ede-proj-configure-test-required-file this "ChangeLog")
|
||||
;; Let specific targets get missing files.
|
||||
(mapc 'ede-proj-configure-create-missing targs)
|
||||
(mapc #'ede-proj-configure-create-missing targs)
|
||||
;; Verify that we have a make system.
|
||||
(if (or (not (ede-expand-filename (ede-toplevel this) "Makefile"))
|
||||
;; Now is this one of our old Makefiles?
|
||||
(with-current-buffer
|
||||
(find-file-noselect
|
||||
(ede-expand-filename (ede-toplevel this)
|
||||
"Makefile" t) t)
|
||||
"Makefile" t)
|
||||
t)
|
||||
(goto-char (point-min))
|
||||
;; Here is the unique piece for our makefiles.
|
||||
(re-search-forward "For use with: make" nil t)))
|
||||
|
@ -166,11 +167,11 @@ don't do it. A value of nil means to just do it.")
|
|||
"Tweak the configure file (current buffer) to accommodate THIS."
|
||||
;; Check the compilers belonging to THIS, and call the autoconf
|
||||
;; setup for those compilers.
|
||||
(mapc 'ede-proj-tweak-autoconf (ede-proj-compilers this))
|
||||
(mapc 'ede-proj-tweak-autoconf (ede-proj-linkers this))
|
||||
(mapc #'ede-proj-tweak-autoconf (ede-proj-compilers this))
|
||||
(mapc #'ede-proj-tweak-autoconf (ede-proj-linkers this))
|
||||
)
|
||||
|
||||
(cl-defmethod ede-proj-flush-autoconf ((this ede-proj-target))
|
||||
(cl-defmethod ede-proj-flush-autoconf ((_this ede-proj-target))
|
||||
"Flush the configure file (current buffer) to accommodate THIS.
|
||||
By flushing, remove any cruft that may be in the file. Subsequent
|
||||
calls to `ede-proj-tweak-autoconf' can restore items removed by flush."
|
||||
|
@ -178,13 +179,13 @@ calls to `ede-proj-tweak-autoconf' can restore items removed by flush."
|
|||
|
||||
|
||||
;; @TODO - No-one calls this ???
|
||||
(cl-defmethod ede-proj-configure-add-missing ((this ede-proj-target))
|
||||
(cl-defmethod ede-proj-configure-add-missing ((_this ede-proj-target))
|
||||
"Query if any files needed by THIS provided by automake are missing.
|
||||
Results in --add-missing being passed to automake."
|
||||
nil)
|
||||
|
||||
;; @TODO - No-one implements this yet.
|
||||
(cl-defmethod ede-proj-configure-create-missing ((this ede-proj-target))
|
||||
(cl-defmethod ede-proj-configure-create-missing ((_this ede-proj-target))
|
||||
"Add any missing files for THIS by creating them."
|
||||
nil)
|
||||
|
||||
|
|
|
@ -46,6 +46,7 @@
|
|||
(require 'ede/proj)
|
||||
(require 'ede/proj-obj)
|
||||
(require 'ede/proj-comp)
|
||||
(require 'seq)
|
||||
|
||||
(declare-function ede-srecode-setup "ede/srecode")
|
||||
(declare-function ede-srecode-insert "ede/srecode")
|
||||
|
@ -111,13 +112,13 @@ MFILENAME is the makefile to generate."
|
|||
|
||||
(let* ((targ (if isdist (oref this targets) mt))
|
||||
(sp (oref this subproj))
|
||||
(df (apply 'append
|
||||
(df (apply #'append
|
||||
(mapcar (lambda (tg)
|
||||
(ede-proj-makefile-dependency-files tg))
|
||||
targ))))
|
||||
;; Distribution variables
|
||||
(ede-compiler-begin-unique
|
||||
(mapc 'ede-proj-makefile-insert-variables targ))
|
||||
(mapc #'ede-proj-makefile-insert-variables targ))
|
||||
;; Only add the distribution stuff in when depth != 0
|
||||
(let ((top (ede-toplevel this))
|
||||
(tmp this)
|
||||
|
@ -153,7 +154,8 @@ MFILENAME is the makefile to generate."
|
|||
(concat ".deps/"
|
||||
(file-name-nondirectory
|
||||
(file-name-sans-extension
|
||||
f)) ".P"))
|
||||
f))
|
||||
".P"))
|
||||
df " "))))
|
||||
;;
|
||||
;; Insert ALL Rule
|
||||
|
@ -188,11 +190,11 @@ MFILENAME is the makefile to generate."
|
|||
;;
|
||||
(ede-compiler-begin-unique
|
||||
(ede-proj-makefile-insert-rules this)
|
||||
(mapc 'ede-proj-makefile-insert-rules targ))
|
||||
(mapc #'ede-proj-makefile-insert-rules targ))
|
||||
;;
|
||||
;; phony targets for sub projects
|
||||
;;
|
||||
(mapc 'ede-proj-makefile-insert-subproj-rules sp)
|
||||
(mapc #'ede-proj-makefile-insert-subproj-rules sp)
|
||||
;;
|
||||
;; Distribution rules such as CLEAN and DIST
|
||||
;;
|
||||
|
@ -210,11 +212,11 @@ MFILENAME is the makefile to generate."
|
|||
;; Distribution variables
|
||||
(let ((targ (if isdist (oref this targets) mt)))
|
||||
(ede-compiler-begin-unique
|
||||
(mapc 'ede-proj-makefile-insert-automake-pre-variables targ))
|
||||
(mapc #'ede-proj-makefile-insert-automake-pre-variables targ))
|
||||
(ede-compiler-begin-unique
|
||||
(mapc 'ede-proj-makefile-insert-source-variables targ))
|
||||
(mapc #'ede-proj-makefile-insert-source-variables targ))
|
||||
(ede-compiler-begin-unique
|
||||
(mapc 'ede-proj-makefile-insert-automake-post-variables targ))
|
||||
(mapc #'ede-proj-makefile-insert-automake-post-variables targ))
|
||||
(ede-compiler-begin-unique
|
||||
(ede-proj-makefile-insert-user-rules this))
|
||||
(insert "\n# End of Makefile.am\n")
|
||||
|
@ -428,11 +430,11 @@ sources variable."
|
|||
(let* ((proj (ede-target-parent this))
|
||||
(conf-table (ede-proj-makefile-configuration-variables
|
||||
this (oref proj configuration-default)))
|
||||
(conf-done nil)
|
||||
;; (conf-done nil)
|
||||
)
|
||||
;; Add in all variables from the configuration not already covered.
|
||||
(mapc (lambda (c)
|
||||
(if (member (car c) conf-done)
|
||||
(if nil ;; (member (car c) conf-done)
|
||||
nil
|
||||
(insert (car c) "=" (cdr c) "\n")))
|
||||
conf-table))
|
||||
|
@ -464,9 +466,9 @@ sources variable."
|
|||
"Return a list of patterns that are considered garbage to THIS.
|
||||
These are removed with make clean."
|
||||
(let ((mc (ede-map-targets
|
||||
this (lambda (c) (ede-proj-makefile-garbage-patterns c))))
|
||||
this #'ede-proj-makefile-garbage-patterns))
|
||||
(uniq nil))
|
||||
(setq mc (sort (apply 'append mc) 'string<))
|
||||
(setq mc (sort (apply #'append mc) #'string<))
|
||||
;; Filter out duplicates from the targets.
|
||||
(while mc
|
||||
(if (and (car uniq) (string= (car uniq) (car mc)))
|
||||
|
@ -502,13 +504,13 @@ These are removed with make clean."
|
|||
|
||||
(cl-defmethod ede-proj-makefile-insert-rules ((this ede-proj-project))
|
||||
"Insert rules needed by THIS target."
|
||||
(mapc 'ede-proj-makefile-insert-rules (oref this inference-rules))
|
||||
(mapc #'ede-proj-makefile-insert-rules (oref this inference-rules))
|
||||
)
|
||||
|
||||
(cl-defmethod ede-proj-makefile-insert-dist-dependencies ((this ede-proj-project))
|
||||
"Insert any symbols that the DIST rule should depend on.
|
||||
Argument THIS is the project that should insert stuff."
|
||||
(mapc 'ede-proj-makefile-insert-dist-dependencies (oref this targets))
|
||||
(mapc #'ede-proj-makefile-insert-dist-dependencies (oref this targets))
|
||||
)
|
||||
|
||||
(cl-defmethod ede-proj-makefile-insert-dist-dependencies ((_this ede-proj-target))
|
||||
|
@ -608,10 +610,10 @@ Argument THIS is the target that should insert stuff."
|
|||
|
||||
(cl-defmethod ede-proj-makefile-insert-rules ((this ede-proj-target-makefile))
|
||||
"Insert rules needed by THIS target."
|
||||
(mapc 'ede-proj-makefile-insert-rules (oref this rules))
|
||||
(mapc #'ede-proj-makefile-insert-rules (oref this rules))
|
||||
(let ((c (ede-proj-compilers this)))
|
||||
(when c
|
||||
(mapc 'ede-proj-makefile-insert-rules c)
|
||||
(mapc #'ede-proj-makefile-insert-rules c)
|
||||
(if (oref this phony)
|
||||
(insert ".PHONY: " (ede-proj-makefile-target-name this) "\n"))
|
||||
(insert (ede-proj-makefile-target-name this) ": "
|
||||
|
@ -622,9 +624,9 @@ Argument THIS is the target that should insert stuff."
|
|||
(cl-defmethod ede-proj-makefile-insert-commands ((this ede-proj-target-makefile))
|
||||
"Insert the commands needed by target THIS.
|
||||
For targets, insert the commands needed by the chosen compiler."
|
||||
(mapc 'ede-proj-makefile-insert-commands (ede-proj-compilers this))
|
||||
(mapc #'ede-proj-makefile-insert-commands (ede-proj-compilers this))
|
||||
(when (object-assoc t :uselinker (ede-proj-compilers this))
|
||||
(mapc 'ede-proj-makefile-insert-commands (ede-proj-linkers this))))
|
||||
(mapc #'ede-proj-makefile-insert-commands (ede-proj-linkers this))))
|
||||
|
||||
|
||||
(cl-defmethod ede-proj-makefile-insert-user-rules ((this ede-proj-project))
|
||||
|
@ -632,11 +634,11 @@ For targets, insert the commands needed by the chosen compiler."
|
|||
This is different from `ede-proj-makefile-insert-rules' in that this
|
||||
function won't create the building rules which are auto created with
|
||||
automake."
|
||||
(mapc 'ede-proj-makefile-insert-user-rules (oref this inference-rules)))
|
||||
(mapc #'ede-proj-makefile-insert-user-rules (oref this inference-rules)))
|
||||
|
||||
(cl-defmethod ede-proj-makefile-insert-user-rules ((this ede-proj-target))
|
||||
"Insert user specified rules needed by THIS target."
|
||||
(mapc 'ede-proj-makefile-insert-rules (oref this rules)))
|
||||
(mapc #'ede-proj-makefile-insert-rules (oref this rules)))
|
||||
|
||||
(cl-defmethod ede-proj-makefile-dependencies ((this ede-proj-target-makefile))
|
||||
"Return a string representing the dependencies for THIS.
|
||||
|
@ -644,7 +646,7 @@ Some compilers only use the first element in the dependencies, others
|
|||
have a list of intermediates (object files), and others don't care.
|
||||
This allows customization of how these elements appear."
|
||||
(let* ((c (ede-proj-compilers this))
|
||||
(io (eval (cons 'or (mapcar 'ede-compiler-intermediate-objects-p c))))
|
||||
(io (seq-some #'ede-compiler-intermediate-objects-p c))
|
||||
(out nil))
|
||||
(if io
|
||||
(progn
|
||||
|
@ -652,7 +654,8 @@ This allows customization of how these elements appear."
|
|||
(setq out
|
||||
(concat out "$(" (ede-compiler-intermediate-object-variable
|
||||
(car c)
|
||||
(ede-proj-makefile-target-name this)) ")")
|
||||
(ede-proj-makefile-target-name this))
|
||||
")")
|
||||
c (cdr c)))
|
||||
out)
|
||||
(let ((sv (ede-proj-makefile-sourcevar this))
|
||||
|
|
|
@ -309,7 +309,7 @@ Not all compilers do this."
|
|||
(cl-defmethod ede-proj-makefile-insert-rules ((this ede-compilation-program))
|
||||
"Insert rules needed for THIS compiler object."
|
||||
(ede-compiler-only-once this
|
||||
(mapc 'ede-proj-makefile-insert-rules (oref this rules))))
|
||||
(mapc #'ede-proj-makefile-insert-rules (oref this rules))))
|
||||
|
||||
(cl-defmethod ede-proj-makefile-insert-rules ((this ede-makefile-rule))
|
||||
"Insert rules needed for THIS rule object."
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
;;; ede-proj-elisp.el --- EDE Generic Project Emacs Lisp support
|
||||
;;; ede-proj-elisp.el --- EDE Generic Project Emacs Lisp support -*- lexical-binding: t; -*-
|
||||
|
||||
;; Copyright (C) 1998-2005, 2007-2021 Free Software Foundation, Inc.
|
||||
|
||||
|
@ -64,7 +64,7 @@ This inserts the PRELOADS target-local variable."
|
|||
(when preloads
|
||||
(insert (format "%s: PRELOADS=%s\n"
|
||||
(oref this name)
|
||||
(mapconcat 'identity preloads " ")))))
|
||||
(mapconcat #'identity preloads " ")))))
|
||||
(insert "\n"))
|
||||
|
||||
(cl-defmethod ede-proj-makefile-dependencies ((this ede-proj-target-elisp))
|
||||
|
@ -152,7 +152,7 @@ Bonus: Return a cons cell: (COMPILED . UPTODATE)."
|
|||
(utd 0))
|
||||
(mapc (lambda (src)
|
||||
(let* ((fsrc (expand-file-name src dir))
|
||||
(elc (concat (file-name-sans-extension fsrc) ".elc")))
|
||||
) ;; (elc (concat (file-name-sans-extension fsrc) ".elc"))
|
||||
(with-no-warnings
|
||||
(if (eq (byte-recompile-file fsrc nil 0) t)
|
||||
(setq comp (1+ comp))
|
||||
|
@ -169,7 +169,7 @@ is found, such as a `-version' variable, or the standard header."
|
|||
(if (and (slot-boundp this 'versionsource)
|
||||
(oref this versionsource))
|
||||
(let ((vs (oref this versionsource))
|
||||
(match nil))
|
||||
) ;; (match nil)
|
||||
(while vs
|
||||
(with-current-buffer (find-file-noselect
|
||||
(ede-expand-filename this (car vs)))
|
||||
|
@ -177,7 +177,7 @@ is found, such as a `-version' variable, or the standard header."
|
|||
(let ((case-fold-search t))
|
||||
(if (re-search-forward "-version\\s-+\"\\([^\"]+\\)\"" nil t)
|
||||
(progn
|
||||
(setq match t)
|
||||
;; (setq match t)
|
||||
(delete-region (match-beginning 1)
|
||||
(match-end 1))
|
||||
(goto-char (match-beginning 1))
|
||||
|
@ -331,27 +331,27 @@ Lays claim to all .elc files that match .el files in this target."
|
|||
If the `compiler' slot is empty, get the car of the compilers list."
|
||||
(let ((comp (oref obj compiler)))
|
||||
(if comp
|
||||
(if (listp comp)
|
||||
(setq comp (mapcar 'symbol-value comp))
|
||||
(setq comp (list (symbol-value comp))))
|
||||
(setq comp (if (listp comp)
|
||||
(mapcar #'symbol-value comp)
|
||||
(list (symbol-value comp))))
|
||||
;; Get the first element from our list of compilers.
|
||||
(let ((avail (mapcar 'symbol-value (oref obj availablecompilers))))
|
||||
(let ((avail (mapcar #'symbol-value (oref obj availablecompilers))))
|
||||
(setq comp (list (car avail)))))
|
||||
comp))
|
||||
|
||||
(cl-defmethod ede-proj-makefile-insert-source-variables ((this ede-proj-target-elisp-autoloads)
|
||||
&optional
|
||||
moresource)
|
||||
(cl-defmethod ede-proj-makefile-insert-source-variables ((_this ede-proj-target-elisp-autoloads)
|
||||
&optional
|
||||
_moresource)
|
||||
"Insert the source variables needed by THIS.
|
||||
Optional argument MORESOURCE is a list of additional sources to add to the
|
||||
sources variable."
|
||||
nil)
|
||||
|
||||
(cl-defmethod ede-proj-makefile-sourcevar ((this ede-proj-target-elisp-autoloads))
|
||||
(cl-defmethod ede-proj-makefile-sourcevar ((_this ede-proj-target-elisp-autoloads))
|
||||
"Return the variable name for THIS's sources."
|
||||
nil) ; "LOADDEFS")
|
||||
|
||||
(cl-defmethod ede-proj-makefile-dependencies ((this ede-proj-target-elisp-autoloads))
|
||||
(cl-defmethod ede-proj-makefile-dependencies ((_this ede-proj-target-elisp-autoloads))
|
||||
"Return a string representing the dependencies for THIS.
|
||||
Always return an empty string for an autoloads generator."
|
||||
"")
|
||||
|
@ -361,21 +361,22 @@ Always return an empty string for an autoloads generator."
|
|||
(ede-pmake-insert-variable-shared "LOADDEFS"
|
||||
(insert (oref this autoload-file)))
|
||||
(ede-pmake-insert-variable-shared "LOADDIRS"
|
||||
(insert (mapconcat 'identity
|
||||
(insert (mapconcat #'identity
|
||||
(or (oref this autoload-dirs) '("."))
|
||||
" ")))
|
||||
)
|
||||
|
||||
(cl-defmethod project-compile-target ((obj ede-proj-target-elisp-autoloads))
|
||||
"Create or update the autoload target."
|
||||
(require 'cedet-autogen)
|
||||
(require 'cedet-autogen) ;FIXME: We don't have this file!
|
||||
(declare-function cedet-update-autoloads "cedet-autogen")
|
||||
(let ((default-directory (ede-expand-filename obj ".")))
|
||||
(apply 'cedet-update-autoloads
|
||||
(apply #'cedet-update-autoloads
|
||||
(oref obj autoload-file)
|
||||
(oref obj autoload-dirs))
|
||||
))
|
||||
|
||||
(cl-defmethod ede-update-version-in-source ((this ede-proj-target-elisp-autoloads) version)
|
||||
(cl-defmethod ede-update-version-in-source ((_this ede-proj-target-elisp-autoloads) _version)
|
||||
"In a Lisp file, updated a version string for THIS to VERSION.
|
||||
There are standards in Elisp files specifying how the version string
|
||||
is found, such as a `-version' variable, or the standard header."
|
||||
|
@ -397,11 +398,11 @@ Argument THIS is the target which needs to insert an info file."
|
|||
(insert " " (oref this autoload-file))
|
||||
)
|
||||
|
||||
(cl-defmethod ede-proj-tweak-autoconf ((this ede-proj-target-elisp-autoloads))
|
||||
(cl-defmethod ede-proj-tweak-autoconf ((_this ede-proj-target-elisp-autoloads))
|
||||
"Tweak the configure file (current buffer) to accommodate THIS."
|
||||
(error "Autoloads not supported in autoconf yet"))
|
||||
|
||||
(cl-defmethod ede-proj-flush-autoconf ((this ede-proj-target-elisp-autoloads))
|
||||
(cl-defmethod ede-proj-flush-autoconf ((_this ede-proj-target-elisp-autoloads))
|
||||
"Flush the configure file (current buffer) to accommodate THIS."
|
||||
nil)
|
||||
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
;;; ede-proj-info.el --- EDE Generic Project texinfo support
|
||||
;;; ede-proj-info.el --- EDE Generic Project texinfo support -*- lexical-binding: t; -*-
|
||||
|
||||
;;; Copyright (C) 1998-2001, 2004, 2007-2021 Free Software Foundation,
|
||||
;;; Inc.
|
||||
|
@ -70,7 +70,7 @@ All other sources should be included independently."))
|
|||
;;; Makefile generation
|
||||
;;
|
||||
(cl-defmethod ede-proj-configure-add-missing
|
||||
((this ede-proj-target-makefile-info))
|
||||
((_this ede-proj-target-makefile-info))
|
||||
"Query if any files needed by THIS provided by automake are missing.
|
||||
Results in --add-missing being passed to automake."
|
||||
(not (ede-expand-filename (ede-toplevel) "texinfo.tex")))
|
||||
|
@ -97,7 +97,7 @@ when working in Automake mode."
|
|||
(insert menu))
|
||||
;; Now insert the rest of the source elsewhere
|
||||
(ede-pmake-insert-variable-shared sv
|
||||
(insert (mapconcat 'identity src " ")))
|
||||
(insert (mapconcat #'identity src " ")))
|
||||
(if moresource
|
||||
(error "Texinfo files should not have moresource")))))
|
||||
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
;;; ede/proj-obj.el --- EDE Generic Project Object code generation support
|
||||
;;; ede/proj-obj.el --- EDE Generic Project Object code generation support -*- lexical-binding: t; -*-
|
||||
|
||||
;;; Copyright (C) 1998-2000, 2005, 2008-2021 Free Software Foundation,
|
||||
;;; Inc.
|
||||
|
@ -282,15 +282,15 @@ Argument THIS is the target to get sources from."
|
|||
(append (oref this source) (oref this auxsource)))
|
||||
|
||||
(cl-defmethod ede-proj-makefile-insert-variables ((this ede-proj-target-makefile-objectcode)
|
||||
&optional moresource)
|
||||
&optional _moresource)
|
||||
"Insert variables needed by target THIS.
|
||||
Optional argument MORESOURCE is not used."
|
||||
(let ((ede-proj-objectcode-dodependencies
|
||||
(oref (ede-target-parent this) automatic-dependencies)))
|
||||
(cl-call-next-method)))
|
||||
|
||||
(cl-defmethod ede-buffer-header-file((this ede-proj-target-makefile-objectcode)
|
||||
buffer)
|
||||
(cl-defmethod ede-buffer-header-file ((this ede-proj-target-makefile-objectcode)
|
||||
_buffer)
|
||||
"There are no default header files."
|
||||
(or (cl-call-next-method)
|
||||
;; Ok, nothing obvious. Try looking in ourselves.
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
;;; ede-proj-prog.el --- EDE Generic Project program support
|
||||
;;; ede-proj-prog.el --- EDE Generic Project program support -*- lexical-binding: t; -*-
|
||||
|
||||
;; Copyright (C) 1998-2001, 2005, 2008-2021 Free Software Foundation,
|
||||
;; Inc.
|
||||
|
@ -90,11 +90,11 @@ Note: Currently only used for Automake projects."
|
|||
(cl-defmethod ede-proj-makefile-insert-variables ((this ede-proj-target-makefile-program))
|
||||
"Insert variables needed by the compiler THIS."
|
||||
(cl-call-next-method)
|
||||
(let ((lf (mapconcat 'identity (oref this ldflags) " ")))
|
||||
(let ((lf (mapconcat #'identity (oref this ldflags) " ")))
|
||||
(with-slots (ldlibs) this
|
||||
(if ldlibs
|
||||
(setq lf
|
||||
(concat lf " -l" (mapconcat 'identity ldlibs " -l")))))
|
||||
(concat lf " -l" (mapconcat #'identity ldlibs " -l")))))
|
||||
;; LDFLAGS as needed.
|
||||
(when (and lf (not (string= "" lf)))
|
||||
(ede-pmake-insert-variable-once "LDDEPS" (insert lf)))))
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
;;; ede-proj-shared.el --- EDE Generic Project shared library support
|
||||
;;; ede-proj-shared.el --- EDE Generic Project shared library support -*- lexical-binding: t; -*-
|
||||
|
||||
;;; Copyright (C) 1998-2000, 2009-2021 Free Software Foundation, Inc.
|
||||
|
||||
|
@ -170,7 +170,7 @@ Use ldlibs to add addition libraries.")
|
|||
)
|
||||
|
||||
(cl-defmethod ede-proj-configure-add-missing
|
||||
((this ede-proj-target-makefile-shared-object))
|
||||
((_this ede-proj-target-makefile-shared-object))
|
||||
"Query if any files needed by THIS provided by automake are missing.
|
||||
Results in --add-missing being passed to automake."
|
||||
(not (and (ede-expand-filename (ede-toplevel) "ltconfig")
|
||||
|
@ -185,7 +185,7 @@ Makefile.am generator, so use it to add this important bin program."
|
|||
(insert (concat "lib" (ede-name this) ".la"))))
|
||||
|
||||
(cl-defmethod ede-proj-makefile-insert-automake-post-variables
|
||||
((this ede-proj-target-makefile-shared-object))
|
||||
((_this ede-proj-target-makefile-shared-object))
|
||||
"Insert bin_PROGRAMS variables needed by target THIS.
|
||||
We need to override -program which has an LDADD element."
|
||||
nil)
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
;;; ede/proj.el --- EDE Generic Project file driver
|
||||
;;; ede/proj.el --- EDE Generic Project file driver -*- lexical-binding: t; -*-
|
||||
|
||||
;; Copyright (C) 1998-2003, 2007-2021 Free Software Foundation, Inc.
|
||||
|
||||
|
@ -339,7 +339,7 @@ Argument PROJ is the project to save."
|
|||
(cl-call-next-method)
|
||||
(ede-proj-save proj))
|
||||
|
||||
(cl-defmethod eieio-done-customizing ((target ede-proj-target))
|
||||
(cl-defmethod eieio-done-customizing ((_target ede-proj-target))
|
||||
"Call this when a user finishes customizing this object.
|
||||
Argument TARGET is the project we are completing customization on."
|
||||
(cl-call-next-method)
|
||||
|
@ -462,7 +462,7 @@ FILE must be massaged by `ede-convert-path'."
|
|||
(object-remove-from-list target 'auxsource (ede-convert-path target file))
|
||||
(ede-proj-save))
|
||||
|
||||
(cl-defmethod project-update-version ((this ede-proj-project))
|
||||
(cl-defmethod project-update-version ((_this ede-proj-project))
|
||||
"The :version of project THIS has changed."
|
||||
(ede-proj-save))
|
||||
|
||||
|
@ -486,7 +486,7 @@ FILE must be massaged by `ede-convert-path'."
|
|||
(concat (oref this name) "-" (oref this version) ".tar.gz")
|
||||
))
|
||||
|
||||
(cl-defmethod project-compile-project ((proj ede-proj-project) &optional command)
|
||||
(cl-defmethod project-compile-project ((proj ede-proj-project) &optional _command)
|
||||
"Compile the entire current project PROJ.
|
||||
Argument COMMAND is the command to use when compiling."
|
||||
(let ((pm (ede-proj-dist-makefile proj))
|
||||
|
@ -499,13 +499,13 @@ Argument COMMAND is the command to use when compiling."
|
|||
|
||||
;;; Target type specific compilations/debug
|
||||
;;
|
||||
(cl-defmethod project-compile-target ((obj ede-proj-target) &optional command)
|
||||
(cl-defmethod project-compile-target ((_obj ede-proj-target) &optional command)
|
||||
"Compile the current target OBJ.
|
||||
Argument COMMAND is the command to use for compiling the target."
|
||||
(project-compile-project (ede-current-project) command))
|
||||
|
||||
(cl-defmethod project-compile-target ((obj ede-proj-target-makefile)
|
||||
&optional command)
|
||||
&optional _command)
|
||||
"Compile the current target program OBJ.
|
||||
Optional argument COMMAND is the s the alternate command to use."
|
||||
(ede-proj-setup-buildenvironment (ede-current-project))
|
||||
|
@ -545,11 +545,11 @@ Converts all symbols into the objects to be used."
|
|||
(if comp
|
||||
;; Now that we have a pre-set compilers to use, convert tye symbols
|
||||
;; into objects for ease of use
|
||||
(if (listp comp)
|
||||
(setq comp (mapcar 'symbol-value comp))
|
||||
(setq comp (list (symbol-value comp))))
|
||||
(setq comp (if (listp comp)
|
||||
(mapcar #'symbol-value comp)
|
||||
(list (symbol-value comp))))
|
||||
(let* ((acomp (oref obj availablecompilers))
|
||||
(avail (mapcar 'symbol-value acomp))
|
||||
(avail (mapcar #'symbol-value acomp))
|
||||
(st (oref obj sourcetype))
|
||||
(sources (oref obj source)))
|
||||
;; COMP is not specified, so generate a list from the available
|
||||
|
@ -585,7 +585,7 @@ Converts all symbols into the objects to be used."
|
|||
(setq link (list (symbol-value link)))
|
||||
(error ":linker is not a symbol. Howd you do that?"))
|
||||
(let* ((alink (oref obj availablelinkers))
|
||||
(avail (mapcar 'symbol-value alink))
|
||||
(avail (mapcar #'symbol-value alink))
|
||||
(st (oref obj sourcetype))
|
||||
(sources (oref obj source)))
|
||||
;; LINKER is not specified, so generate a list from the available
|
||||
|
|
|
@ -596,10 +596,8 @@ Strip out duplicates, and recurse on variables."
|
|||
(project-am-expand-subdirlist
|
||||
place (makefile-macro-file-list var))
|
||||
;; Else, add SP in if it isn't a dup.
|
||||
(if (member sp (symbol-value place))
|
||||
nil ; don't do it twice.
|
||||
(set place (cons sp (symbol-value place))) ;; add
|
||||
))))
|
||||
(cl-pushnew sp (gv-deref place) :test #'equal) ;; add
|
||||
)))
|
||||
subdirs)
|
||||
)
|
||||
|
||||
|
@ -645,7 +643,7 @@ Strip out duplicates, and recurse on variables."
|
|||
;; We still have a list of targets. For all buffers, make sure
|
||||
;; their object still exists!
|
||||
;; FIGURE THIS OUT
|
||||
(project-am-expand-subdirlist 'csubprojexpanded csubproj)
|
||||
(project-am-expand-subdirlist (gv-ref csubprojexpanded) csubproj)
|
||||
;; Ok, now let's look at all our sub-projects.
|
||||
(mapc (lambda (sp)
|
||||
(let* ((subdir (file-name-as-directory
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
;;; ede/shell.el --- A shell controlled by EDE.
|
||||
;;; ede/shell.el --- A shell controlled by EDE. -*- lexical-binding: t; -*-
|
||||
;;
|
||||
;; Copyright (C) 2009-2021 Free Software Foundation, Inc.
|
||||
;;
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
;;; ede/simple.el --- Overlay an EDE structure on an existing project
|
||||
;;; ede/simple.el --- Overlay an EDE structure on an existing project -*- lexical-binding: t; -*-
|
||||
|
||||
;; Copyright (C) 2007-2021 Free Software Foundation, Inc.
|
||||
|
||||
|
@ -78,7 +78,7 @@ The directory has three parts:
|
|||
ede-simple-save-file-name)
|
||||
))
|
||||
|
||||
(defun ede-simple-load (dir &optional rootproj)
|
||||
(defun ede-simple-load (dir &optional _rootproj)
|
||||
"Load a project of type `Simple' for the directory DIR.
|
||||
Return nil if there isn't one.
|
||||
ROOTPROJ is nil, since we will only create a single EDE project here."
|
||||
|
@ -112,7 +112,7 @@ Each directory needs a project file to control it.")
|
|||
(eieio-persistent-save proj))
|
||||
|
||||
(cl-defmethod ede-find-subproject-for-directory ((proj ede-simple-project)
|
||||
dir)
|
||||
_dir)
|
||||
"Return PROJ, for handling all subdirs below DIR."
|
||||
proj)
|
||||
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
;; ede/source.el --- EDE source code object
|
||||
;; ede/source.el --- EDE source code object -*- lexical-binding: t; -*-
|
||||
|
||||
;; Copyright (C) 2000, 2008-2021 Free Software Foundation, Inc.
|
||||
|
||||
|
@ -72,7 +72,7 @@ that they are willing to use.")
|
|||
|
||||
;;; Methods
|
||||
;;
|
||||
(cl-defmethod initialize-instance :after ((this ede-sourcecode) &rest fields)
|
||||
(cl-defmethod initialize-instance :after ((this ede-sourcecode) &rest _fields)
|
||||
"Make sure that all ede compiler objects are cached in
|
||||
`ede-compiler-list'."
|
||||
(let ((lst ede-sourcecode-list))
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
;;; ede/speedbar.el --- Speedbar viewing of EDE projects
|
||||
;;; ede/speedbar.el --- Speedbar viewing of EDE projects -*- lexical-binding: t; -*-
|
||||
|
||||
;; Copyright (C) 1998-2001, 2003, 2005, 2007-2021 Free Software
|
||||
;; Foundation, Inc.
|
||||
|
@ -42,21 +42,21 @@
|
|||
(setq ede-speedbar-key-map (speedbar-make-specialized-keymap))
|
||||
|
||||
;; General viewing things
|
||||
(define-key ede-speedbar-key-map "\C-m" 'speedbar-edit-line)
|
||||
(define-key ede-speedbar-key-map "+" 'speedbar-expand-line)
|
||||
(define-key ede-speedbar-key-map "=" 'speedbar-expand-line)
|
||||
(define-key ede-speedbar-key-map "-" 'speedbar-contract-line)
|
||||
(define-key ede-speedbar-key-map " " 'speedbar-toggle-line-expansion)
|
||||
(define-key ede-speedbar-key-map "\C-m" #'speedbar-edit-line)
|
||||
(define-key ede-speedbar-key-map "+" #'speedbar-expand-line)
|
||||
(define-key ede-speedbar-key-map "=" #'speedbar-expand-line)
|
||||
(define-key ede-speedbar-key-map "-" #'speedbar-contract-line)
|
||||
(define-key ede-speedbar-key-map " " #'speedbar-toggle-line-expansion)
|
||||
|
||||
;; Some object based things
|
||||
(define-key ede-speedbar-key-map "C" 'eieio-speedbar-customize-line)
|
||||
(define-key ede-speedbar-key-map "C" #'eieio-speedbar-customize-line)
|
||||
|
||||
;; Some project based things
|
||||
(define-key ede-speedbar-key-map "R" 'ede-speedbar-remove-file-from-target)
|
||||
(define-key ede-speedbar-key-map "b" 'ede-speedbar-compile-line)
|
||||
(define-key ede-speedbar-key-map "B" 'ede-speedbar-compile-project)
|
||||
(define-key ede-speedbar-key-map "D" 'ede-speedbar-make-distribution)
|
||||
(define-key ede-speedbar-key-map "E" 'ede-speedbar-edit-projectfile)
|
||||
(define-key ede-speedbar-key-map "R" #'ede-speedbar-remove-file-from-target)
|
||||
(define-key ede-speedbar-key-map "b" #'ede-speedbar-compile-line)
|
||||
(define-key ede-speedbar-key-map "B" #'ede-speedbar-compile-project)
|
||||
(define-key ede-speedbar-key-map "D" #'ede-speedbar-make-distribution)
|
||||
(define-key ede-speedbar-key-map "E" #'ede-speedbar-edit-projectfile)
|
||||
)
|
||||
|
||||
(defvar ede-speedbar-menu
|
||||
|
@ -98,7 +98,7 @@
|
|||
(speedbar-get-focus)
|
||||
)
|
||||
|
||||
(defun ede-speedbar-toplevel-buttons (dir)
|
||||
(defun ede-speedbar-toplevel-buttons (_dir)
|
||||
"Return a list of objects to display in speedbar.
|
||||
Argument DIR is the directory from which to derive the list of objects."
|
||||
ede-projects
|
||||
|
@ -180,13 +180,13 @@ Argument DIR is the directory from which to derive the list of objects."
|
|||
(setq depth (1- depth)))
|
||||
(speedbar-line-token))))
|
||||
|
||||
(cl-defmethod eieio-speedbar-derive-line-path ((obj ede-project) &optional depth)
|
||||
(cl-defmethod eieio-speedbar-derive-line-path ((obj ede-project) &optional _depth)
|
||||
"Return the path to OBJ.
|
||||
Optional DEPTH is the depth we start at."
|
||||
(file-name-directory (oref obj file))
|
||||
)
|
||||
|
||||
(cl-defmethod eieio-speedbar-derive-line-path ((obj ede-target) &optional depth)
|
||||
(cl-defmethod eieio-speedbar-derive-line-path ((obj ede-target) &optional _depth)
|
||||
"Return the path to OBJ.
|
||||
Optional DEPTH is the depth we start at."
|
||||
(let ((proj (ede-target-parent obj)))
|
||||
|
@ -208,7 +208,7 @@ Optional DEPTH is the depth we start at."
|
|||
"Provide a speedbar description for OBJ."
|
||||
(ede-description obj))
|
||||
|
||||
(cl-defmethod eieio-speedbar-child-description ((obj ede-target))
|
||||
(cl-defmethod eieio-speedbar-child-description ((_obj ede-target))
|
||||
"Provide a speedbar description for a plain-child of OBJ.
|
||||
A plain child is a child element which is not an EIEIO object."
|
||||
(or (speedbar-item-info-file-helper)
|
||||
|
@ -251,7 +251,7 @@ It has depth DEPTH."
|
|||
|
||||
;;; Generic file management for TARGETS
|
||||
;;
|
||||
(defun ede-file-find (text token indent)
|
||||
(defun ede-file-find (_text token indent)
|
||||
"Find the file TEXT at path TOKEN.
|
||||
INDENT is the current indentation level."
|
||||
(speedbar-find-file-in-frame
|
||||
|
@ -290,7 +290,7 @@ level."
|
|||
(t (error "Ooops... not sure what to do")))
|
||||
(speedbar-center-buffer-smartly))
|
||||
|
||||
(defun ede-tag-find (text token indent)
|
||||
(defun ede-tag-find (_text token _indent)
|
||||
"For the tag TEXT in a file TOKEN, goto that position.
|
||||
INDENT is the current indentation level."
|
||||
(let ((file (ede-find-nearest-file-line)))
|
||||
|
@ -314,21 +314,21 @@ INDENT is the current indentation level."
|
|||
(defvar ede-speedbar-file-menu-additions
|
||||
'("----"
|
||||
["Create EDE Target" ede-new-target (ede-current-project) ]
|
||||
["Add to project" ede-speedbar-file-add-to-project (ede-current-project) ]
|
||||
;; ["Add to project" ede-speedbar-file-add-to-project (ede-current-project) ]
|
||||
["Compile project" ede-speedbar-compile-project (ede-current-project) ]
|
||||
["Compile file target" ede-speedbar-compile-file-target (ede-current-project) ]
|
||||
;; ["Compile file target" ede-speedbar-compile-file-target (ede-current-project) ]
|
||||
["Make distribution" ede-make-dist (ede-current-project) ]
|
||||
)
|
||||
"Set of menu items to splice into the speedbar menu.")
|
||||
|
||||
(defvar ede-speedbar-file-keymap
|
||||
(let ((km (make-sparse-keymap)))
|
||||
(define-key km "a" 'ede-speedbar-file-add-to-project)
|
||||
(define-key km "t" 'ede-new-target)
|
||||
(define-key km "s" 'ede-speedbar)
|
||||
(define-key km "C" 'ede-speedbar-compile-project)
|
||||
(define-key km "c" 'ede-speedbar-compile-file-target)
|
||||
(define-key km "d" 'ede-make-dist)
|
||||
;; (define-key km "a" #'ede-speedbar-file-add-to-project)
|
||||
(define-key km "t" #'ede-new-target)
|
||||
(define-key km "s" #'ede-speedbar)
|
||||
(define-key km "C" #'ede-speedbar-compile-project)
|
||||
;; (define-key km "c" #'ede-speedbar-compile-file-target)
|
||||
(define-key km "d" #'ede-make-dist)
|
||||
km)
|
||||
"Keymap spliced into the speedbar keymap.")
|
||||
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
;;; ede/util.el --- EDE utilities
|
||||
;;; ede/util.el --- EDE utilities -*- lexical-binding: t; -*-
|
||||
|
||||
;; Copyright (C) 2000, 2005, 2009-2021 Free Software Foundation, Inc.
|
||||
|
||||
|
|
|
@ -576,7 +576,7 @@ OVERARGS is a list of arguments passed to the override and
|
|||
(put :override-with-args 'lisp-indent-function 1)
|
||||
|
||||
(define-obsolete-function-alias 'define-overload
|
||||
'define-overloadable-function "27.1")
|
||||
#'define-overloadable-function "27.1")
|
||||
|
||||
(define-obsolete-function-alias 'function-overload-p
|
||||
#'mode-local--function-overload-p "27.1")
|
||||
|
|
|
@ -194,7 +194,7 @@ Optional argument FACE specifies the face to do the highlighting."
|
|||
(progn
|
||||
(overlay-put o 'face (or face 'pulse-highlight-start-face))
|
||||
(add-hook 'pre-command-hook
|
||||
'pulse-momentary-unhighlight))
|
||||
#'pulse-momentary-unhighlight))
|
||||
;; Pulse it.
|
||||
(overlay-put o 'face 'pulse-highlight-face)
|
||||
;; The pulse function puts FACE onto 'pulse-highlight-face.
|
||||
|
@ -233,7 +233,7 @@ Optional argument FACE specifies the face to do the highlighting."
|
|||
(cancel-timer pulse-momentary-timer))
|
||||
|
||||
;; Remove this hook.
|
||||
(remove-hook 'pre-command-hook 'pulse-momentary-unhighlight))
|
||||
(remove-hook 'pre-command-hook #'pulse-momentary-unhighlight))
|
||||
|
||||
;;;###autoload
|
||||
(defun pulse-momentary-highlight-one-line (point &optional face)
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
;;; semantic.el --- Semantic buffer evaluator.
|
||||
;;; semantic.el --- Semantic buffer evaluator. -*- lexical-binding: t; -*-
|
||||
|
||||
;; Copyright (C) 1999-2021 Free Software Foundation, Inc.
|
||||
|
||||
|
@ -297,7 +297,7 @@ to use Semantic, and `semantic-init-hook' is run."
|
|||
'semantic-inhibit-functions)))
|
||||
;; Make sure that if this buffer is cloned, our tags and overlays
|
||||
;; don't go along for the ride.
|
||||
(add-hook 'clone-indirect-buffer-hook 'semantic-clear-toplevel-cache
|
||||
(add-hook 'clone-indirect-buffer-hook #'semantic-clear-toplevel-cache
|
||||
nil t)
|
||||
;; Specify that this function has done its work. At this point
|
||||
;; we can consider that semantic is active in this buffer.
|
||||
|
@ -466,12 +466,12 @@ is requested."
|
|||
;; Nuke all semantic overlays. This is faster than deleting based
|
||||
;; on our data structure.
|
||||
(let ((l (overlay-lists)))
|
||||
(mapc 'semantic-delete-overlay-maybe (car l))
|
||||
(mapc 'semantic-delete-overlay-maybe (cdr l))
|
||||
(mapc #'semantic-delete-overlay-maybe (car l))
|
||||
(mapc #'semantic-delete-overlay-maybe (cdr l))
|
||||
)
|
||||
(semantic-parse-tree-set-needs-rebuild)
|
||||
;; Remove this hook which tracks if a buffer is up to date or not.
|
||||
(remove-hook 'after-change-functions 'semantic-change-function t)
|
||||
(remove-hook 'after-change-functions #'semantic-change-function t)
|
||||
|
||||
(run-hook-with-args 'semantic-after-toplevel-cache-change-hook
|
||||
semantic--buffer-cache)
|
||||
|
@ -487,7 +487,7 @@ is requested."
|
|||
;; This is specific to the bovine parser.
|
||||
(setq-local semantic-bovinate-nonterminal-check-obarray nil)
|
||||
(semantic-parse-tree-set-up-to-date)
|
||||
(add-hook 'after-change-functions 'semantic-change-function nil t)
|
||||
(add-hook 'after-change-functions #'semantic-change-function nil t)
|
||||
(run-hook-with-args 'semantic-after-toplevel-cache-change-hook
|
||||
semantic--buffer-cache)
|
||||
(setq semantic--completion-cache nil)
|
||||
|
@ -779,25 +779,25 @@ Throw away all the old tags, and recreate the tag database."
|
|||
(defvar semantic-mode-map
|
||||
(let ((map (make-sparse-keymap)))
|
||||
;; Key bindings:
|
||||
;; (define-key km "f" 'senator-search-set-tag-class-filter)
|
||||
;; (define-key km "i" 'senator-isearch-toggle-semantic-mode)
|
||||
(define-key map "\C-c,j" 'semantic-complete-jump-local)
|
||||
(define-key map "\C-c,J" 'semantic-complete-jump)
|
||||
(define-key map "\C-c,m" 'semantic-complete-jump-local-members)
|
||||
(define-key map "\C-c,g" 'semantic-symref-symbol)
|
||||
(define-key map "\C-c,G" 'semantic-symref)
|
||||
(define-key map "\C-c,p" 'senator-previous-tag)
|
||||
(define-key map "\C-c,n" 'senator-next-tag)
|
||||
(define-key map "\C-c,u" 'senator-go-to-up-reference)
|
||||
(define-key map "\C-c, " 'semantic-complete-analyze-inline)
|
||||
(define-key map "\C-c,\C-w" 'senator-kill-tag)
|
||||
(define-key map "\C-c,\M-w" 'senator-copy-tag)
|
||||
(define-key map "\C-c,\C-y" 'senator-yank-tag)
|
||||
(define-key map "\C-c,r" 'senator-copy-tag-to-register)
|
||||
(define-key map "\C-c,," 'semantic-force-refresh)
|
||||
(define-key map [?\C-c ?, up] 'senator-transpose-tags-up)
|
||||
(define-key map [?\C-c ?, down] 'senator-transpose-tags-down)
|
||||
(define-key map "\C-c,l" 'semantic-analyze-possible-completions)
|
||||
;; (define-key km "f" #'senator-search-set-tag-class-filter)
|
||||
;; (define-key km "i" #'senator-isearch-toggle-semantic-mode)
|
||||
(define-key map "\C-c,j" #'semantic-complete-jump-local)
|
||||
(define-key map "\C-c,J" #'semantic-complete-jump)
|
||||
(define-key map "\C-c,m" #'semantic-complete-jump-local-members)
|
||||
(define-key map "\C-c,g" #'semantic-symref-symbol)
|
||||
(define-key map "\C-c,G" #'semantic-symref)
|
||||
(define-key map "\C-c,p" #'senator-previous-tag)
|
||||
(define-key map "\C-c,n" #'senator-next-tag)
|
||||
(define-key map "\C-c,u" #'senator-go-to-up-reference)
|
||||
(define-key map "\C-c, " #'semantic-complete-analyze-inline)
|
||||
(define-key map "\C-c,\C-w" #'senator-kill-tag)
|
||||
(define-key map "\C-c,\M-w" #'senator-copy-tag)
|
||||
(define-key map "\C-c,\C-y" #'senator-yank-tag)
|
||||
(define-key map "\C-c,r" #'senator-copy-tag-to-register)
|
||||
(define-key map "\C-c,," #'semantic-force-refresh)
|
||||
(define-key map [?\C-c ?, up] #'senator-transpose-tags-up)
|
||||
(define-key map [?\C-c ?, down] #'senator-transpose-tags-down)
|
||||
(define-key map "\C-c,l" #'semantic-analyze-possible-completions)
|
||||
;; This hack avoids showing the CEDET menu twice if ede-minor-mode
|
||||
;; and Semantic are both enabled. Is there a better way?
|
||||
(define-key map [menu-bar cedet-menu]
|
||||
|
@ -1029,7 +1029,7 @@ Semantic mode.
|
|||
(file-exists-p semanticdb-default-system-save-directory))
|
||||
(require 'semantic/db-ebrowse)
|
||||
(semanticdb-load-ebrowse-caches)))
|
||||
(add-hook 'mode-local-init-hook 'semantic-new-buffer-fcn)
|
||||
(add-hook 'mode-local-init-hook #'semantic-new-buffer-fcn)
|
||||
;; Add semantic-ia-complete-symbol to
|
||||
;; completion-at-point-functions, so that it is run from
|
||||
;; M-TAB.
|
||||
|
@ -1037,11 +1037,11 @@ Semantic mode.
|
|||
;; Note: The first entry added is the last entry run, so the
|
||||
;; most specific entry should be last.
|
||||
(add-hook 'completion-at-point-functions
|
||||
'semantic-analyze-nolongprefix-completion-at-point-function)
|
||||
#'semantic-analyze-nolongprefix-completion-at-point-function)
|
||||
(add-hook 'completion-at-point-functions
|
||||
'semantic-analyze-notc-completion-at-point-function)
|
||||
#'semantic-analyze-notc-completion-at-point-function)
|
||||
(add-hook 'completion-at-point-functions
|
||||
'semantic-analyze-completion-at-point-function)
|
||||
#'semantic-analyze-completion-at-point-function)
|
||||
|
||||
(if (bound-and-true-p global-ede-mode)
|
||||
(define-key cedet-menu-map [cedet-menu-separator] '("--")))
|
||||
|
@ -1052,21 +1052,21 @@ Semantic mode.
|
|||
;; introduced in the buffer is pretty much futile, but we have to
|
||||
;; clean the hooks and delete Semantic-related overlays, so that
|
||||
;; Semantic can be re-activated cleanly.
|
||||
(remove-hook 'mode-local-init-hook 'semantic-new-buffer-fcn)
|
||||
(remove-hook 'mode-local-init-hook #'semantic-new-buffer-fcn)
|
||||
(remove-hook 'completion-at-point-functions
|
||||
'semantic-analyze-completion-at-point-function)
|
||||
#'semantic-analyze-completion-at-point-function)
|
||||
(remove-hook 'completion-at-point-functions
|
||||
'semantic-analyze-notc-completion-at-point-function)
|
||||
#'semantic-analyze-notc-completion-at-point-function)
|
||||
(remove-hook 'completion-at-point-functions
|
||||
'semantic-analyze-nolongprefix-completion-at-point-function)
|
||||
#'semantic-analyze-nolongprefix-completion-at-point-function)
|
||||
|
||||
(remove-hook 'after-change-functions
|
||||
'semantic-change-function)
|
||||
#'semantic-change-function)
|
||||
(define-key cedet-menu-map [cedet-menu-separator] nil)
|
||||
(define-key cedet-menu-map [semantic-options-separator] nil)
|
||||
;; FIXME: handle semanticdb-load-ebrowse-caches
|
||||
(dolist (mode semantic-submode-list)
|
||||
(if (and (boundp mode) (eval mode))
|
||||
(if (and (boundp mode) (symbol-value mode))
|
||||
(funcall mode -1)))
|
||||
;; Unlink buffer and clear cache
|
||||
(semantic--tag-unlink-cache-from-buffer)
|
||||
|
|
|
@ -1740,7 +1740,7 @@ If it is a macro name, return a description of the associated expander
|
|||
function parameter list.
|
||||
If it is a function name, return a description of this function
|
||||
parameter list.
|
||||
It it is a variable name, return a brief (one-line) documentation
|
||||
If it is a variable name, return a brief (one-line) documentation
|
||||
string for the variable.
|
||||
If a default description of the current context can be obtained,
|
||||
return it.
|
||||
|
|
|
@ -348,54 +348,56 @@ Returns t if all processing succeeded."
|
|||
Visits Semantic controlled buffers, and makes sure all needed
|
||||
include files have been parsed, and that the typecache is up to date.
|
||||
Uses `semantic-idle-work-for-on-buffer' to do the work."
|
||||
(let ((errbuf nil)
|
||||
(interrupted
|
||||
(semantic-exit-on-input 'idle-work-timer
|
||||
(let* ((inhibit-quit nil)
|
||||
(cb (current-buffer))
|
||||
(buffers (delq (current-buffer)
|
||||
(delq nil
|
||||
(mapcar #'(lambda (b)
|
||||
(and (buffer-file-name b)
|
||||
b))
|
||||
(buffer-list)))))
|
||||
safe errbuf)
|
||||
;; First, handle long tasks in the current buffer.
|
||||
(when (semantic-idle-scheduler-enabled-p)
|
||||
(save-excursion
|
||||
(setq safe (semantic-idle-work-for-one-buffer (current-buffer))
|
||||
)))
|
||||
(when (not safe) (push (current-buffer) errbuf))
|
||||
(let*
|
||||
((errbuf nil)
|
||||
(interrupted
|
||||
(semantic-exit-on-input 'idle-work-timer
|
||||
(let* ((inhibit-quit nil)
|
||||
(cb (current-buffer))
|
||||
(buffers (delq (current-buffer)
|
||||
(delq nil
|
||||
(mapcar #'(lambda (b)
|
||||
(and (buffer-file-name b)
|
||||
b))
|
||||
(buffer-list)))))
|
||||
safe) ;; errbuf
|
||||
;; First, handle long tasks in the current buffer.
|
||||
(when (semantic-idle-scheduler-enabled-p)
|
||||
(save-excursion
|
||||
(setq safe (semantic-idle-work-for-one-buffer (current-buffer))
|
||||
)))
|
||||
(when (not safe) (push (current-buffer) errbuf))
|
||||
|
||||
;; Now loop over other buffers with same major mode, trying to
|
||||
;; update them as well. Stop on keypress.
|
||||
(dolist (b buffers)
|
||||
(semantic-throw-on-input 'parsing-mode-buffers)
|
||||
(with-current-buffer b
|
||||
(when (semantic-idle-scheduler-enabled-p)
|
||||
(and (semantic-idle-scheduler-enabled-p)
|
||||
(unless (semantic-idle-work-for-one-buffer (current-buffer))
|
||||
(push (current-buffer) errbuf)))
|
||||
))
|
||||
)
|
||||
;; Now loop over other buffers with same major mode, trying to
|
||||
;; update them as well. Stop on keypress.
|
||||
(dolist (b buffers)
|
||||
(semantic-throw-on-input 'parsing-mode-buffers)
|
||||
(with-current-buffer b
|
||||
(when (semantic-idle-scheduler-enabled-p)
|
||||
(and (semantic-idle-scheduler-enabled-p)
|
||||
(unless (semantic-idle-work-for-one-buffer
|
||||
(current-buffer))
|
||||
(push (current-buffer) errbuf)))
|
||||
))
|
||||
)
|
||||
|
||||
(when (and (featurep 'semantic/db) (semanticdb-minor-mode-p))
|
||||
;; Save everything.
|
||||
(semanticdb-save-all-db-idle)
|
||||
(when (and (featurep 'semantic/db) (semanticdb-minor-mode-p))
|
||||
;; Save everything.
|
||||
(semanticdb-save-all-db-idle)
|
||||
|
||||
;; Parse up files near our active buffer
|
||||
(when semantic-idle-work-parse-neighboring-files-flag
|
||||
(semantic-safe "Idle Work Parse Neighboring Files: %S"
|
||||
(set-buffer cb)
|
||||
(semantic-idle-scheduler-work-parse-neighboring-files))
|
||||
t)
|
||||
;; Parse up files near our active buffer
|
||||
(when semantic-idle-work-parse-neighboring-files-flag
|
||||
(semantic-safe "Idle Work Parse Neighboring Files: %S"
|
||||
(set-buffer cb)
|
||||
(semantic-idle-scheduler-work-parse-neighboring-files))
|
||||
t)
|
||||
|
||||
;; Save everything... again
|
||||
(semanticdb-save-all-db-idle)
|
||||
)
|
||||
;; Save everything... again
|
||||
(semanticdb-save-all-db-idle)
|
||||
)
|
||||
|
||||
;; Done w/ processing
|
||||
nil))))
|
||||
;; Done w/ processing
|
||||
nil))))
|
||||
|
||||
;; Done
|
||||
(if interrupted
|
||||
|
@ -734,7 +736,8 @@ Call `semantic-idle-summary-current-symbol-info' for getting the
|
|||
current tag to display information."
|
||||
(or (eq major-mode 'emacs-lisp-mode)
|
||||
(not (semantic-idle-summary-useful-context-p))
|
||||
(let* ((found (semantic-idle-summary-current-symbol-info))
|
||||
(let* ((found (save-excursion
|
||||
(semantic-idle-summary-current-symbol-info)))
|
||||
(str (cond ((stringp found) found)
|
||||
((semantic-tag-p found)
|
||||
(funcall semantic-idle-summary-function
|
||||
|
|
|
@ -562,7 +562,7 @@ such as `public' or `private'."
|
|||
;; @TODO - is this line needed?? Try w/out for a while
|
||||
;; @note - I think C++ says no. elisp might, but methods
|
||||
;; look like defuns, so it makes no difference.
|
||||
(extmeth nil) ; (semantic-tag-external-member-children type t))
|
||||
;;(extmeth nil) ; (semantic-tag-external-member-children type t))
|
||||
|
||||
;; INHERITED are tags found in classes that our TYPE tag
|
||||
;; inherits from. Do not do this if it was not requested.
|
||||
|
@ -584,7 +584,7 @@ such as `public' or `private'."
|
|||
(setq slots (nreverse copyslots))
|
||||
))
|
||||
;; Flatten the database output.
|
||||
(append slots extmeth inherited)
|
||||
(append slots nil inherited) ;; extmeth
|
||||
)))
|
||||
|
||||
(defun semantic-analyze-scoped-inherited-tags (type scope access)
|
||||
|
|
|
@ -54,15 +54,16 @@
|
|||
;; bound locally, without all these "reference to free variable"
|
||||
;; compiler warnings!
|
||||
|
||||
(defmacro wisent-context-name (name)
|
||||
"Return the context name from NAME."
|
||||
`(if (and ,name (symbolp ,name))
|
||||
(intern (format "wisent-context-%s" ,name))
|
||||
(error "Invalid context name: %S" ,name)))
|
||||
(eval-when-compile
|
||||
(defun wisent-context-name (name)
|
||||
"Return the context name from NAME."
|
||||
(if (and name (symbolp name))
|
||||
(intern (format "wisent-context-%s" name))
|
||||
(error "Invalid context name: %S" name)))
|
||||
|
||||
(defmacro wisent-context-bindings (name)
|
||||
"Return the variables in context NAME."
|
||||
`(symbol-value (wisent-context-name ,name)))
|
||||
(defun wisent-context-bindings (name)
|
||||
"Return the variables in context NAME."
|
||||
(symbol-value (wisent-context-name name))))
|
||||
|
||||
(defmacro wisent-defcontext (name &rest vars)
|
||||
"Define a context NAME that will bind variables VARS."
|
||||
|
@ -71,18 +72,14 @@
|
|||
(declarations (mapcar #'(lambda (v) (list 'defvar v)) vars)))
|
||||
`(progn
|
||||
,@declarations
|
||||
(eval-and-compile
|
||||
(eval-when-compile
|
||||
(defvar ,context ',vars)))))
|
||||
|
||||
(defmacro wisent-with-context (name &rest body)
|
||||
"Bind variables in context NAME then eval BODY."
|
||||
(declare (indent 1))
|
||||
(let ((bindings (wisent-context-bindings name)))
|
||||
`(progn
|
||||
,@(mapcar (lambda (binding) `(defvar ,(or (car-safe binding) binding)))
|
||||
bindings)
|
||||
(let* ,bindings
|
||||
,@body))))
|
||||
`(dlet ,(wisent-context-bindings name)
|
||||
,@body))
|
||||
|
||||
;; Other utilities
|
||||
|
||||
|
|
|
@ -1439,6 +1439,8 @@ ARGS is a list of image descriptors."
|
|||
(apply #'create-image file doc-view--image-type nil args)
|
||||
(unless (member :width args)
|
||||
(setq args `(,@args :width ,doc-view-image-width)))
|
||||
(unless (member :transform-smoothing args)
|
||||
(setq args `(,@args :transform-smoothing t)))
|
||||
(apply #'create-image file doc-view--image-type nil args))))
|
||||
(slice (doc-view-current-slice))
|
||||
(img-width (and image (car (image-size image))))
|
||||
|
|
|
@ -62,7 +62,8 @@ See also `benchmark-run-compiled'."
|
|||
;; Take account of the loop overhead.
|
||||
`(- (benchmark-elapse (dotimes (,i ,repetitions)
|
||||
,@forms))
|
||||
(benchmark-elapse (dotimes (,i ,repetitions))))
|
||||
(benchmark-elapse (dotimes (,i ,repetitions)
|
||||
nil)))
|
||||
`(benchmark-elapse ,@forms))
|
||||
(- gcs-done ,gcs)
|
||||
(- gc-elapsed ,gc)))))
|
||||
|
|
|
@ -1327,6 +1327,8 @@ Same format as `byte-optimize--lexvars', with shared structure and contents.")
|
|||
radians-to-degrees rassq rassoc read-from-string regexp-opt
|
||||
regexp-quote region-beginning region-end reverse round
|
||||
sin sqrt string string< string= string-equal string-lessp
|
||||
string> string-greaterp string-empty-p
|
||||
string-prefix-p string-suffix-p string-blank-p
|
||||
string-search string-to-char
|
||||
string-to-number string-to-syntax substring
|
||||
sxhash sxhash-equal sxhash-eq sxhash-eql
|
||||
|
|
|
@ -295,8 +295,9 @@ of converted forms."
|
|||
(if wrappers
|
||||
(let ((special-forms '()))
|
||||
;; Keep special forms at the beginning of the body.
|
||||
(while (or (stringp (car funcbody)) ;docstring.
|
||||
(memq (car-safe (car funcbody)) '(interactive declare)))
|
||||
(while (or (and (cdr funcbody) (stringp (car funcbody))) ;docstring.
|
||||
(memq (car-safe (car funcbody))
|
||||
'(interactive declare :documentation)))
|
||||
(push (pop funcbody) special-forms))
|
||||
(let ((body (macroexp-progn funcbody)))
|
||||
(dolist (wrapper wrappers) (setq body (funcall wrapper body)))
|
||||
|
@ -584,9 +585,6 @@ places where they originally did not directly appear."
|
|||
|
||||
(_ (or (cdr (assq form env)) form))))
|
||||
|
||||
(unless (fboundp 'byte-compile-not-lexical-var-p)
|
||||
;; Only used to test the code in non-lexbind Emacs.
|
||||
(defalias 'byte-compile-not-lexical-var-p 'boundp))
|
||||
(defvar byte-compile-lexical-variables)
|
||||
|
||||
(defun cconv--analyze-use (vardata form varkind)
|
||||
|
@ -602,7 +600,14 @@ FORM is the parent form that binds this var."
|
|||
;; FIXME: Convert this warning to use `macroexp--warn-wrap'
|
||||
;; so as to give better position information.
|
||||
(byte-compile-warn
|
||||
"%s `%S' not left unused" varkind var)))
|
||||
"%s `%S' not left unused" varkind var))
|
||||
((and (let (or 'let* 'let) (car form))
|
||||
`((,var) ;; (or `(,var nil) : Too many false positives: bug#47080
|
||||
t nil ,_ ,_))
|
||||
;; FIXME: Convert this warning to use `macroexp--warn-wrap'
|
||||
;; so as to give better position information.
|
||||
(unless (not (intern-soft var))
|
||||
(byte-compile-warn "Variable `%S' left uninitialized" var))))
|
||||
(pcase vardata
|
||||
(`(,binder nil ,_ ,_ nil)
|
||||
(push (cons (cons binder form) :unused) cconv-var-classification))
|
||||
|
@ -783,7 +788,7 @@ This function does not return anything but instead fills the
|
|||
(let ((dv (assq form env))) ; dv = declared and visible
|
||||
(when dv
|
||||
(setf (nth 1 dv) t))))))
|
||||
(define-obsolete-function-alias 'cconv-analyse-form 'cconv-analyze-form "25.1")
|
||||
(define-obsolete-function-alias 'cconv-analyse-form #'cconv-analyze-form "25.1")
|
||||
|
||||
(provide 'cconv)
|
||||
;;; cconv.el ends here
|
||||
|
|
|
@ -2134,8 +2134,8 @@ buffer, otherwise stop after the first error."
|
|||
(user-error "No spellchecker installed: check the variable `ispell-program-name'"))
|
||||
(save-excursion
|
||||
(skip-chars-forward "^a-zA-Z")
|
||||
(let (word sym case-fold-search err word-beginning word-end)
|
||||
(while (and (not err) (< (point) end))
|
||||
(let (word sym case-fold-search word-beginning word-end) ;; err
|
||||
(while (and (< (point) end)) ;; (not err)
|
||||
(if (save-excursion (forward-char -1) (looking-at "[('`]"))
|
||||
;; Skip lists describing meta-syntax, or bound variables
|
||||
(forward-sexp 1)
|
||||
|
@ -2167,7 +2167,7 @@ buffer, otherwise stop after the first error."
|
|||
(sit-for 0)
|
||||
(message "Continuing..."))))))))
|
||||
(skip-chars-forward "^a-zA-Z"))
|
||||
err))))
|
||||
nil)))) ;; err
|
||||
|
||||
;;; Rogue space checking engine
|
||||
;;
|
||||
|
|
|
@ -332,12 +332,20 @@ or call the function `%s'."))))
|
|||
t)))
|
||||
;; Keep minor modes list up to date.
|
||||
,@(if globalp
|
||||
`((setq global-minor-modes (delq ',modefun global-minor-modes))
|
||||
;; When running this byte-compiled code in earlier
|
||||
;; Emacs versions, these variables may not be defined
|
||||
;; there. So check defensively, even if they're
|
||||
;; always defined in Emacs 28 and up.
|
||||
`((when (boundp 'global-minor-modes)
|
||||
(setq global-minor-modes
|
||||
(delq ',modefun global-minor-modes))
|
||||
(when ,getter
|
||||
(push ',modefun global-minor-modes))))
|
||||
;; Ditto check.
|
||||
`((when (boundp 'local-minor-modes)
|
||||
(setq local-minor-modes (delq ',modefun local-minor-modes))
|
||||
(when ,getter
|
||||
(push ',modefun global-minor-modes)))
|
||||
`((setq local-minor-modes (delq ',modefun local-minor-modes))
|
||||
(when ,getter
|
||||
(push ',modefun local-minor-modes))))
|
||||
(push ',modefun local-minor-modes)))))
|
||||
,@body
|
||||
;; The on/off hooks are here for backward compatibility only.
|
||||
(run-hooks ',hook (if ,getter ',hook-on ',hook-off))
|
||||
|
|
|
@ -3508,7 +3508,7 @@ canceled the first time the function is entered."
|
|||
|
||||
(defun edebug-cancel-on-entry (function)
|
||||
"Cause Edebug to not stop when FUNCTION is called.
|
||||
The removes the effect of `edebug-on-entry'. If FUNCTION is is
|
||||
The removes the effect of `edebug-on-entry'. If FUNCTION is
|
||||
nil, remove `edebug-on-entry' on all functions."
|
||||
(interactive
|
||||
(list (let ((name (completing-read
|
||||
|
|
|
@ -261,7 +261,7 @@ DATA is displayed to the user and should state the reason for skipping."
|
|||
It should only be stopped when ran from inside ert--run-test-internal."
|
||||
(when (and (not (symbolp debugger)) ; only run on anonymous debugger
|
||||
(memq error-symbol '(ert-test-failed ert-test-skipped)))
|
||||
(funcall debugger 'error (list error-symbol data))))
|
||||
(funcall debugger 'error (cons error-symbol data))))
|
||||
|
||||
(defun ert--special-operator-p (thing)
|
||||
"Return non-nil if THING is a symbol naming a special operator."
|
||||
|
@ -1633,7 +1633,7 @@ default (if any)."
|
|||
|
||||
(defun ert-find-test-other-window (test-name)
|
||||
"Find, in another window, the definition of TEST-NAME."
|
||||
(interactive (list (ert-read-test-name-at-point "Find test definition: ")))
|
||||
(interactive (list (ert-read-test-name-at-point "Find test definition")))
|
||||
(find-function-do-it test-name 'ert--test 'switch-to-buffer-other-window))
|
||||
|
||||
(defun ert-delete-test (test-name)
|
||||
|
@ -2083,6 +2083,7 @@ and how to display message."
|
|||
|
||||
(define-derived-mode ert-results-mode special-mode "ERT-Results"
|
||||
"Major mode for viewing results of ERT test runs."
|
||||
:interactive nil
|
||||
(setq-local revert-buffer-function
|
||||
(lambda (&rest _) (ert-results-rerun-all-tests))))
|
||||
|
||||
|
@ -2178,7 +2179,7 @@ To be used in the ERT results buffer."
|
|||
"Move point to the next test.
|
||||
|
||||
To be used in the ERT results buffer."
|
||||
(interactive)
|
||||
(interactive nil ert-results-mode)
|
||||
(ert--results-move (ewoc-locate ert--results-ewoc) 'ewoc-next
|
||||
"No tests below"))
|
||||
|
||||
|
@ -2186,7 +2187,7 @@ To be used in the ERT results buffer."
|
|||
"Move point to the previous test.
|
||||
|
||||
To be used in the ERT results buffer."
|
||||
(interactive)
|
||||
(interactive nil ert-results-mode)
|
||||
(ert--results-move (ewoc-locate ert--results-ewoc) 'ewoc-prev
|
||||
"No tests above"))
|
||||
|
||||
|
@ -2219,7 +2220,7 @@ user-error is signaled with the message ERROR-MESSAGE."
|
|||
"Find the definition of the test at point in another window.
|
||||
|
||||
To be used in the ERT results buffer."
|
||||
(interactive)
|
||||
(interactive nil ert-results-mode)
|
||||
(let ((name (ert-test-at-point)))
|
||||
(unless name
|
||||
(user-error "No test at point"))
|
||||
|
@ -2253,7 +2254,7 @@ To be used in the ERT results buffer."
|
|||
;; the summary apparently needs to be easily accessible from the
|
||||
;; error log, and perhaps it would be better to have it in a
|
||||
;; separate buffer to keep it visible.
|
||||
(interactive)
|
||||
(interactive nil ert-results-mode)
|
||||
(let ((ewoc ert--results-ewoc)
|
||||
(progress-bar-begin ert--results-progress-bar-button-begin))
|
||||
(cond ((ert--results-test-node-or-null-at-point)
|
||||
|
@ -2370,7 +2371,7 @@ definition."
|
|||
"Re-run all tests, using the same selector.
|
||||
|
||||
To be used in the ERT results buffer."
|
||||
(interactive)
|
||||
(interactive nil ert-results-mode)
|
||||
(cl-assert (eql major-mode 'ert-results-mode))
|
||||
(let ((selector (ert--stats-selector ert--results-stats)))
|
||||
(ert-run-tests-interactively selector (buffer-name))))
|
||||
|
@ -2379,7 +2380,7 @@ To be used in the ERT results buffer."
|
|||
"Re-run the test at point.
|
||||
|
||||
To be used in the ERT results buffer."
|
||||
(interactive)
|
||||
(interactive nil ert-results-mode)
|
||||
(cl-destructuring-bind (test redefinition-state)
|
||||
(ert--results-test-at-point-allow-redefinition)
|
||||
(when (null test)
|
||||
|
@ -2414,7 +2415,7 @@ To be used in the ERT results buffer."
|
|||
"Re-run the test at point with `ert-debug-on-error' bound to t.
|
||||
|
||||
To be used in the ERT results buffer."
|
||||
(interactive)
|
||||
(interactive nil ert-results-mode)
|
||||
(let ((ert-debug-on-error t))
|
||||
(ert-results-rerun-test-at-point)))
|
||||
|
||||
|
@ -2422,7 +2423,7 @@ To be used in the ERT results buffer."
|
|||
"Display the backtrace for the test at point.
|
||||
|
||||
To be used in the ERT results buffer."
|
||||
(interactive)
|
||||
(interactive nil ert-results-mode)
|
||||
(let* ((test (ert--results-test-at-point-no-redefinition t))
|
||||
(stats ert--results-stats)
|
||||
(pos (ert--stats-test-pos stats test))
|
||||
|
@ -2449,7 +2450,7 @@ To be used in the ERT results buffer."
|
|||
"Display the part of the *Messages* buffer generated during the test at point.
|
||||
|
||||
To be used in the ERT results buffer."
|
||||
(interactive)
|
||||
(interactive nil ert-results-mode)
|
||||
(let* ((test (ert--results-test-at-point-no-redefinition t))
|
||||
(stats ert--results-stats)
|
||||
(pos (ert--stats-test-pos stats test))
|
||||
|
@ -2470,7 +2471,7 @@ To be used in the ERT results buffer."
|
|||
"Display the list of `should' forms executed during the test at point.
|
||||
|
||||
To be used in the ERT results buffer."
|
||||
(interactive)
|
||||
(interactive nil ert-results-mode)
|
||||
(let* ((test (ert--results-test-at-point-no-redefinition t))
|
||||
(stats ert--results-stats)
|
||||
(pos (ert--stats-test-pos stats test))
|
||||
|
@ -2506,7 +2507,7 @@ To be used in the ERT results buffer."
|
|||
"Toggle how much of the condition to print for the test at point.
|
||||
|
||||
To be used in the ERT results buffer."
|
||||
(interactive)
|
||||
(interactive nil ert-results-mode)
|
||||
(let* ((ewoc ert--results-ewoc)
|
||||
(node (ert--results-test-node-at-point))
|
||||
(entry (ewoc-data node)))
|
||||
|
@ -2518,7 +2519,7 @@ To be used in the ERT results buffer."
|
|||
"Display test timings for the last run.
|
||||
|
||||
To be used in the ERT results buffer."
|
||||
(interactive)
|
||||
(interactive nil ert-results-mode)
|
||||
(let* ((stats ert--results-stats)
|
||||
(buffer (get-buffer-create "*ERT timings*"))
|
||||
(data (cl-loop for test across (ert--stats-tests stats)
|
||||
|
@ -2597,7 +2598,7 @@ To be used in the ERT results buffer."
|
|||
"Display the documentation of the test at point.
|
||||
|
||||
To be used in the ERT results buffer."
|
||||
(interactive)
|
||||
(interactive nil ert-results-mode)
|
||||
(ert-describe-test (ert--results-test-at-point-no-redefinition t)))
|
||||
|
||||
|
||||
|
|
|
@ -324,8 +324,7 @@ The return value is the last VAL in the list.
|
|||
(gv-letplace (getter setter) place
|
||||
(funcall do `(edebug-after ,before ,index ,getter)
|
||||
(lambda (store)
|
||||
`(progn (edebug-after ,before ,index ,getter)
|
||||
,(funcall setter store)))))))
|
||||
`(edebug-after ,before ,index ,(funcall setter store)))))))
|
||||
|
||||
;;; The common generalized variables.
|
||||
|
||||
|
|
|
@ -290,12 +290,13 @@ all RULES in total."
|
|||
',(string-to-syntax (nth 1 action)))
|
||||
,@(nthcdr 2 action))
|
||||
`((let ((mb (match-beginning ,gn))
|
||||
(me (match-end ,gn))
|
||||
(syntax ,(nth 1 action)))
|
||||
(if syntax
|
||||
(put-text-property
|
||||
mb me 'syntax-table syntax))
|
||||
,@(nthcdr 2 action)))))
|
||||
(me (match-end ,gn)))
|
||||
,(macroexp-let2 nil syntax (nth 1 action)
|
||||
`(progn
|
||||
(if ,syntax
|
||||
(put-text-property
|
||||
mb me 'syntax-table ,syntax))
|
||||
,@(nthcdr 2 action)))))))
|
||||
(t
|
||||
`((let ((mb (match-beginning ,gn))
|
||||
(me (match-end ,gn))
|
||||
|
|
|
@ -32,8 +32,8 @@
|
|||
|
||||
;;;Here are some macros that exercise SES. Set `pause' to t if you want the
|
||||
;;;macros to pause after each step.
|
||||
(let* ((pause nil)
|
||||
(x (if pause "\^Xq" ""))
|
||||
(let* (;; (pause nil)
|
||||
(x (if nil "\^Xq" "")) ;; pause
|
||||
(y "\^X\^Fses-test.ses\r\^[<"))
|
||||
;;Fiddle with the existing spreadsheet
|
||||
(fset 'ses-exercise-example
|
||||
|
|
|
@ -46,7 +46,7 @@ A cua-rectangle definition is a vector used for all actions in
|
|||
|
||||
TOP is the upper-left corner point.
|
||||
|
||||
BOTTOM is the point at the end of line after the the lower-right
|
||||
BOTTOM is the point at the end of line after the lower-right
|
||||
corner point.
|
||||
|
||||
LEFT and RIGHT are column numbers.
|
||||
|
|
|
@ -635,8 +635,7 @@ Argument NUM is the number of lines to move."
|
|||
|
||||
(defmacro edt-with-position (&rest body)
|
||||
"Execute BODY with some position-related variables bound."
|
||||
`(let* ((left nil)
|
||||
(beg (edt-current-line))
|
||||
`(let* ((beg (edt-current-line))
|
||||
(height (window-height))
|
||||
(top-percent
|
||||
(if (zerop edt-top-scroll-margin) 10 edt-top-scroll-margin))
|
||||
|
@ -650,7 +649,7 @@ Argument NUM is the number of lines to move."
|
|||
(far (save-excursion
|
||||
(goto-char bottom)
|
||||
(point-at-bol (1- height)))))
|
||||
(ignore top left far)
|
||||
(ignore top far)
|
||||
,@body))
|
||||
|
||||
;;;
|
||||
|
@ -668,9 +667,10 @@ Optional argument FIND is t is this function is called from `edt-find'."
|
|||
(search-backward edt-find-last-text)
|
||||
(edt-set-match)
|
||||
(if (> (point) far)
|
||||
(if (zerop (setq left (save-excursion (forward-line height))))
|
||||
(recenter top-margin)
|
||||
(recenter (- left bottom-up-margin)))
|
||||
(let ((left (save-excursion (forward-line height))))
|
||||
(recenter (if (zerop left)
|
||||
top-margin
|
||||
(- left bottom-up-margin))))
|
||||
(and (> (point) bottom) (recenter bottom-margin))))))
|
||||
|
||||
(defun edt-find-backward (&optional find)
|
||||
|
@ -707,9 +707,9 @@ Optional argument FIND is t if this function is called from `edt-find'."
|
|||
(search-backward edt-find-last-text)
|
||||
(edt-set-match)
|
||||
(if (> (point) far)
|
||||
(if (zerop (setq left (save-excursion (forward-line height))))
|
||||
(recenter top-margin)
|
||||
(recenter (- left bottom-up-margin)))
|
||||
(let ((left (save-excursion (forward-line height))))
|
||||
(recenter (if (zerop left) top-margin
|
||||
(- left bottom-up-margin))))
|
||||
(and (> (point) bottom) (recenter bottom-margin))))
|
||||
(backward-char 1)
|
||||
(error "Search failed: \"%s\"" edt-find-last-text))))
|
||||
|
@ -1241,9 +1241,8 @@ Argument NUM is the positive number of sentences to move."
|
|||
(forward-word 1)
|
||||
(backward-sentence))
|
||||
(if (> (point) far)
|
||||
(if (zerop (setq left (save-excursion (forward-line height))))
|
||||
(recenter top-margin)
|
||||
(recenter (- left bottom-up-margin)))
|
||||
(let ((left (save-excursion (forward-line height))))
|
||||
(recenter (if (zerop left) top-margin (- left bottom-up-margin))))
|
||||
(and (> (point) bottom) (recenter bottom-margin)))))
|
||||
|
||||
(defun edt-sentence-backward (num)
|
||||
|
@ -1282,9 +1281,8 @@ Argument NUM is the positive number of paragraphs to move."
|
|||
(forward-line 1))
|
||||
(setq num (1- num)))
|
||||
(if (> (point) far)
|
||||
(if (zerop (setq left (save-excursion (forward-line height))))
|
||||
(recenter top-margin)
|
||||
(recenter (- left bottom-up-margin)))
|
||||
(let ((left (save-excursion (forward-line height))))
|
||||
(recenter (if (zerop left) top-margin (- left bottom-up-margin))))
|
||||
(and (> (point) bottom) (recenter bottom-margin)))))
|
||||
|
||||
(defun edt-paragraph-backward (num)
|
||||
|
|
|
@ -110,11 +110,11 @@ ERC menu yet.")
|
|||
(define-erc-module menu nil
|
||||
"Enable a menu in ERC buffers."
|
||||
((unless erc-menu-defined
|
||||
;; make sure the menu only gets defined once, since Emacs 22
|
||||
;; make sure the menu only gets defined once, since Emacs
|
||||
;; activates it immediately
|
||||
(easy-menu-define erc-menu erc-mode-map "ERC menu" erc-menu-definition)
|
||||
(setq erc-menu-defined t)))
|
||||
(;; `easy-menu-remove' is a no-op in Emacs 22
|
||||
(;; `easy-menu-remove' is a no-op in Emacs
|
||||
(message "You might have to restart Emacs to remove the ERC menu")))
|
||||
|
||||
(defun erc-menu-add ()
|
||||
|
|
|
@ -680,12 +680,12 @@ Each member of FILES is either a string or a cons cell of the form
|
|||
(let ((f files)
|
||||
last-f
|
||||
display-files
|
||||
ignore)
|
||||
) ;; ignore
|
||||
(while f
|
||||
(if (cdar f)
|
||||
(setq last-f f
|
||||
f (cdr f))
|
||||
(unless ignore
|
||||
(unless nil ;; ignore
|
||||
(funcall error-func
|
||||
(format "%s: No such file or directory\n" (caar f))))
|
||||
(if (eq f files)
|
||||
|
@ -698,7 +698,7 @@ Each member of FILES is either a string or a cons cell of the form
|
|||
(setcar f (cadr f))
|
||||
(setcdr f (cddr f))))))
|
||||
(if (not show-size)
|
||||
(setq display-files (mapcar 'eshell-ls-annotate files))
|
||||
(setq display-files (mapcar #'eshell-ls-annotate files))
|
||||
(dolist (file files)
|
||||
(let* ((str (eshell-ls-printable-size (file-attribute-size (cdr file)) t))
|
||||
(len (length str)))
|
||||
|
|
|
@ -2817,11 +2817,18 @@ Note: Other faces cannot inherit from the cursor face."
|
|||
:group 'help)
|
||||
|
||||
(defface help-key-binding
|
||||
'((((class color) (min-colors 88) (background light)) :foreground "ForestGreen")
|
||||
(((class color) (min-colors 88) (background dark)) :foreground "#44bc44")
|
||||
(((class color grayscale) (background light)) :foreground "grey15")
|
||||
(((class color grayscale) (background dark)) :foreground "grey85")
|
||||
(t :foreground "ForestGreen"))
|
||||
'((((class color) (min-colors 88) (background light))
|
||||
:background "grey92" :foreground "DarkBlue"
|
||||
;; We use negative thickness of the horizontal box border line to
|
||||
;; avoid enlarging the height of the echo-area display, which
|
||||
;; would then move the mode line a few pixels up.
|
||||
:box (:line-width (1 . -1) :color "grey80"))
|
||||
(((class color) (min-colors 88) (background dark))
|
||||
:background "grey23" :foreground "LightBlue"
|
||||
:box (:line-width (1 . -1) :color "grey35"))
|
||||
(((class color grayscale) (background light)) :background "grey90")
|
||||
(((class color grayscale) (background dark)) :background "grey25")
|
||||
(t :background "grey90"))
|
||||
"Face for keybindings in *Help* buffers.
|
||||
|
||||
This face is added by `substitute-command-keys', which see.
|
||||
|
|
|
@ -823,7 +823,9 @@ The path separator is colon in GNU and GNU-like systems."
|
|||
(expand-file-name dir))
|
||||
(locate-file dir cd-path nil
|
||||
(lambda (f) (and (file-directory-p f) 'dir-ok)))
|
||||
(error "No such directory found via CDPATH environment variable"))))
|
||||
(if (getenv "CDPATH")
|
||||
(error "No such directory found via CDPATH environment variable: %s" dir)
|
||||
(error "No such directory: %s" dir)))))
|
||||
|
||||
(defun directory-files-recursively (dir regexp
|
||||
&optional include-directories predicate
|
||||
|
|
|
@ -1183,7 +1183,7 @@ Return full path if FULL-FLAG is non-nil."
|
|||
(constraint-flag
|
||||
(message "Obsolete :constraint-flag %S, use :constraintp instead"
|
||||
(cadr constraint-flag))
|
||||
(eval (cadr constraint-flag)))
|
||||
(eval (cadr constraint-flag) t))
|
||||
(t
|
||||
t))))
|
||||
|
||||
|
@ -1557,18 +1557,20 @@ Replace <file-name> or <<file-name>> with filename."
|
|||
(completing-read "Select fileset: " filesets-data nil t))))
|
||||
(when (and cmd-name name)
|
||||
(let* ((event (if (equal cmd-name "Grep <<selection>>")
|
||||
'on-grep
|
||||
'on-grep
|
||||
'on-cmd))
|
||||
(files (if (and fileset
|
||||
(or (equal mode ':ingroup)
|
||||
(equal mode ':tree)))
|
||||
(or (equal mode :ingroup)
|
||||
(equal mode :tree)))
|
||||
(filesets-get-filelist fileset mode event)
|
||||
(filesets-get-filelist
|
||||
(filesets-get-fileset-from-name name)
|
||||
mode event))))
|
||||
(filesets-get-filelist
|
||||
(filesets-get-fileset-from-name name)
|
||||
mode event))))
|
||||
(when files
|
||||
(let ((fn (filesets-cmd-get-fn cmd-name))
|
||||
(args (filesets-cmd-get-args cmd-name)))
|
||||
(args
|
||||
(dlet ((filesets--files files))
|
||||
(filesets-cmd-get-args cmd-name))))
|
||||
(if (memq fn '(multi-isearch-files multi-isearch-files-regexp))
|
||||
(apply fn args)
|
||||
(dolist (this files nil)
|
||||
|
@ -1577,28 +1579,27 @@ Replace <file-name> or <<file-name>> with filename."
|
|||
(let ((buffer (filesets-find-file this)))
|
||||
(when buffer
|
||||
(goto-char (point-min))
|
||||
(progn
|
||||
(cond
|
||||
((stringp fn)
|
||||
(let* ((args
|
||||
(mapconcat
|
||||
(lambda (this)
|
||||
(filesets-run-cmd--repl-fn
|
||||
this
|
||||
(lambda (this)
|
||||
(format "%s" this))))
|
||||
args
|
||||
" "))
|
||||
(cmd (concat fn " " args)))
|
||||
(filesets-cmd-show-result
|
||||
cmd (shell-command-to-string cmd))))
|
||||
((symbolp fn)
|
||||
(apply fn
|
||||
(mapcan (lambda (this)
|
||||
(filesets-run-cmd--repl-fn
|
||||
this
|
||||
'list))
|
||||
args)))))))))))))))))
|
||||
(cond
|
||||
((stringp fn)
|
||||
(let* ((args
|
||||
(mapconcat
|
||||
(lambda (this)
|
||||
(filesets-run-cmd--repl-fn
|
||||
this
|
||||
(lambda (this)
|
||||
(format "%s" this))))
|
||||
args
|
||||
" "))
|
||||
(cmd (concat fn " " args)))
|
||||
(filesets-cmd-show-result
|
||||
cmd (shell-command-to-string cmd))))
|
||||
((symbolp fn)
|
||||
(apply fn
|
||||
(mapcan (lambda (this)
|
||||
(filesets-run-cmd--repl-fn
|
||||
this
|
||||
'list))
|
||||
args))))))))))))))))
|
||||
|
||||
(defun filesets-get-cmd-menu ()
|
||||
"Create filesets command menu."
|
||||
|
@ -1624,7 +1625,7 @@ Replace <file-name> or <<file-name>> with filename."
|
|||
|
||||
(defun filesets-cmd-isearch-getargs ()
|
||||
"Get arguments for `multi-isearch-files' and `multi-isearch-files-regexp'."
|
||||
(and (boundp 'files) (list files)))
|
||||
(and (boundp 'filesets--files) (list filesets--files)))
|
||||
|
||||
(defun filesets-cmd-shell-command-getargs ()
|
||||
"Get arguments for `filesets-cmd-shell-command'."
|
||||
|
|
|
@ -337,7 +337,7 @@ Returns the number of articles marked as read."
|
|||
(gnus-newsgroup-kill-file gnus-newsgroup-name)))
|
||||
(unreads (length gnus-newsgroup-unreads))
|
||||
(gnus-summary-inhibit-highlight t)
|
||||
beg)
|
||||
) ;; beg
|
||||
(setq gnus-newsgroup-kill-headers nil)
|
||||
;; If there are any previously scored articles, we remove these
|
||||
;; from the `gnus-newsgroup-headers' list that the score functions
|
||||
|
@ -381,7 +381,7 @@ Returns the number of articles marked as read."
|
|||
|
||||
(gnus-set-mode-line 'summary)
|
||||
|
||||
(if beg
|
||||
(if nil ;; beg
|
||||
(let ((nunreads (- unreads (length gnus-newsgroup-unreads))))
|
||||
(or (eq nunreads 0)
|
||||
(gnus-message 6 "Marked %d articles as read" nunreads))
|
||||
|
|
|
@ -549,7 +549,7 @@ structure.
|
|||
|
||||
In the simplest case, they are simply consed together. String
|
||||
KEY is converted to a symbol."
|
||||
(let (return)
|
||||
(let () ;; return
|
||||
(cond
|
||||
((member key gnus-search-date-keys)
|
||||
(when (string= "after" key)
|
||||
|
@ -559,7 +559,7 @@ KEY is converted to a symbol."
|
|||
(setq value (gnus-search-query-parse-mark value)))
|
||||
((string= "message-id" key)
|
||||
(setq key "id")))
|
||||
(or return
|
||||
(or nil ;; return
|
||||
(cons (intern key) value))))
|
||||
|
||||
(defun gnus-search-query-parse-date (value &optional rel-date)
|
||||
|
|
|
@ -1172,7 +1172,7 @@ for new groups, and subscribe the new groups as zombies."
|
|||
gnus-check-new-newsgroups)
|
||||
gnus-secondary-select-methods))))
|
||||
(groups 0)
|
||||
group new-newsgroups got-new method hashtb
|
||||
new-newsgroups got-new method hashtb ;; group
|
||||
gnus-override-subscribe-method)
|
||||
(unless gnus-killed-hashtb
|
||||
(gnus-make-hashtable-from-killed))
|
||||
|
@ -1203,14 +1203,14 @@ for new groups, and subscribe the new groups as zombies."
|
|||
(cond
|
||||
((eq do-sub 'subscribe)
|
||||
(cl-incf groups)
|
||||
(puthash g-name group gnus-killed-hashtb)
|
||||
(puthash g-name nil gnus-killed-hashtb) ;; group
|
||||
(gnus-call-subscribe-functions
|
||||
gnus-subscribe-options-newsgroup-method g-name))
|
||||
((eq do-sub 'ignore)
|
||||
nil)
|
||||
(t
|
||||
(cl-incf groups)
|
||||
(puthash g-name group gnus-killed-hashtb)
|
||||
(puthash g-name nil gnus-killed-hashtb) ;; group
|
||||
(if gnus-subscribe-hierarchical-interactive
|
||||
(push g-name new-newsgroups)
|
||||
(gnus-call-subscribe-functions
|
||||
|
@ -2378,6 +2378,11 @@ If FORCE is non-nil, the .newsrc file is read."
|
|||
(unless (gnus-yes-or-no-p (concat errmsg "; continue? "))
|
||||
(error "%s" errmsg)))))))))
|
||||
|
||||
;; IIUC these 3 vars were used in older .newsrc files.
|
||||
(defvar gnus-killed-assoc)
|
||||
(defvar gnus-marked-assoc)
|
||||
(defvar gnus-newsrc-assoc)
|
||||
|
||||
(defun gnus-read-newsrc-el-file (file)
|
||||
(let ((ding-file (concat file "d")))
|
||||
(when (file-exists-p ding-file)
|
||||
|
|
|
@ -6354,9 +6354,9 @@ The resulting hash table is returned, or nil if no Xrefs were found."
|
|||
;; First peel off all invalid article numbers.
|
||||
(when active
|
||||
(let ((ids articles)
|
||||
id first)
|
||||
id) ;; first
|
||||
(while (setq id (pop ids))
|
||||
(when (and first (> id (cdr active)))
|
||||
(when nil ;; (and first (> id (cdr active)))
|
||||
;; We'll end up in this situation in one particular
|
||||
;; obscure situation. If you re-scan a group and get
|
||||
;; a new article that is cross-posted to a different
|
||||
|
@ -12741,7 +12741,7 @@ If REVERSE, save parts that do not match TYPE."
|
|||
;; so we highlight the entire line instead.
|
||||
(when (= (+ to 2) from)
|
||||
(setq from beg)
|
||||
(setq to end))
|
||||
(setq to (1+ end)))
|
||||
(if gnus-newsgroup-selected-overlay
|
||||
;; Move old overlay.
|
||||
(move-overlay
|
||||
|
@ -12796,7 +12796,7 @@ If REVERSE, save parts that do not match TYPE."
|
|||
(let ((face (funcall (gnus-summary-highlight-line-0))))
|
||||
(unless (eq face (gnus-get-text-property-excluding-characters-with-faces beg 'face))
|
||||
(gnus-put-text-property-excluding-characters-with-faces
|
||||
beg (point-at-eol) 'face
|
||||
beg (1+ (point-at-eol)) 'face
|
||||
(setq face (if (boundp face) (symbol-value face) face)))
|
||||
(when gnus-summary-highlight-line-function
|
||||
(funcall gnus-summary-highlight-line-function article face))))))
|
||||
|
|
|
@ -323,7 +323,7 @@
|
|||
(nnbabyl-possibly-change-newsgroup group server)
|
||||
(nnmail-check-syntax)
|
||||
(let ((buf (current-buffer))
|
||||
result beg)
|
||||
result) ;; beg
|
||||
(and
|
||||
(nnmail-activate 'nnbabyl)
|
||||
(save-excursion
|
||||
|
@ -331,7 +331,7 @@
|
|||
(search-forward "\n\n" nil t)
|
||||
(forward-line -1)
|
||||
(save-excursion
|
||||
(while (re-search-backward "^X-Gnus-Newsgroup: " beg t)
|
||||
(while (re-search-backward "^X-Gnus-Newsgroup: " nil t) ;; beg
|
||||
(delete-region (point) (progn (forward-line 1) (point)))))
|
||||
(when nnmail-cache-accepted-message-ids
|
||||
(nnmail-cache-insert (nnmail-fetch-field "message-id")
|
||||
|
|
|
@ -706,7 +706,7 @@ deleted. Point is left where the deleted region was."
|
|||
(if dont-check
|
||||
(setq nnfolder-current-group group
|
||||
nnfolder-current-buffer nil)
|
||||
(let (inf file)
|
||||
(let (file) ;; inf
|
||||
;; If we have to change groups, see if we don't already have
|
||||
;; the folder in memory. If we do, verify the modtime and
|
||||
;; destroy the folder if needed so we can rescan it.
|
||||
|
@ -718,7 +718,7 @@ deleted. Point is left where the deleted region was."
|
|||
;; touched the file since last time.
|
||||
(when (and nnfolder-current-buffer
|
||||
(not (gnus-buffer-live-p nnfolder-current-buffer)))
|
||||
(setq nnfolder-buffer-alist (delq inf nnfolder-buffer-alist)
|
||||
(setq nnfolder-buffer-alist (delq nil nnfolder-buffer-alist) ;; inf
|
||||
nnfolder-current-buffer nil))
|
||||
|
||||
(setq nnfolder-current-group group)
|
||||
|
|
|
@ -503,6 +503,8 @@ as unread by Gnus.")
|
|||
(setcdr active (1+ (cdr active))))
|
||||
(cdr active)))
|
||||
|
||||
(defvar nnmh-newsgroup-articles)
|
||||
|
||||
(defun nnmh-update-gnus-unreads (group)
|
||||
;; Go through the .nnmh-articles file and compare with the actual
|
||||
;; articles in this folder. The articles that are "new" will be
|
||||
|
|
|
@ -200,7 +200,7 @@ for decoding when the cdr that the data specify is not available.")
|
|||
(nnrss-possibly-change-group group server)
|
||||
(let ((e (assq article nnrss-group-data))
|
||||
(nntp-server-buffer (or buffer nntp-server-buffer))
|
||||
err) ;; post
|
||||
) ;; err post
|
||||
(when e
|
||||
(with-current-buffer nntp-server-buffer
|
||||
(erase-buffer)
|
||||
|
@ -302,8 +302,7 @@ for decoding when the cdr that the data specify is not available.")
|
|||
(when nnrss-content-function
|
||||
(funcall nnrss-content-function e group article))))
|
||||
(cond
|
||||
(err
|
||||
(nnheader-report 'nnrss err))
|
||||
;; (err (nnheader-report 'nnrss err))
|
||||
((not e)
|
||||
(nnheader-report 'nnrss "no such id: %d" article))
|
||||
(t
|
||||
|
|
|
@ -210,7 +210,7 @@ Do not call this in the scope of `with-help-window'."
|
|||
\\[describe-key] KEYS Display the full documentation for the key sequence.
|
||||
\\[Info-goto-emacs-key-command-node] KEYS Show the Emacs manual's section for the command bound to KEYS.
|
||||
\\[view-lossage] Show last 300 input keystrokes (lossage).
|
||||
\\[describe-language-environment] LANG-ENV Describes a specific language environment, or RET for current.
|
||||
\\[describe-language-environment] LANG-ENV Describe a specific language environment, or RET for current.
|
||||
\\[describe-mode] Display documentation of current minor modes and current major mode,
|
||||
including their special commands.
|
||||
\\[view-emacs-news] Display news of recent Emacs changes.
|
||||
|
@ -1253,7 +1253,7 @@ Return nil if the key sequence is too long."
|
|||
;; Converted from describe_translation in keymap.c.
|
||||
;; Avoid using the `help-keymap' face.
|
||||
(let ((op (point)))
|
||||
(indent-to 16)
|
||||
(indent-to 16 1)
|
||||
(set-text-properties op (point) '( face nil
|
||||
font-lock-face nil)))
|
||||
(cond ((symbolp definition)
|
||||
|
|
Some files were not shown because too many files have changed in this diff Show more
Loading…
Add table
Reference in a new issue