-
This commit is contained in:
commit
99fa8c3dbf
54 changed files with 14508 additions and 8853 deletions
4939
ChangeLog.2
4939
ChangeLog.2
File diff suppressed because it is too large
Load diff
|
@ -1092,7 +1092,7 @@ bootstrap: bootstrap-clean
|
|||
$(MAKE) all
|
||||
|
||||
.PHONY: ChangeLog change-history change-history-commit change-history-nocommit
|
||||
.PHONY: master-branch-is-current unchanged-history-files
|
||||
.PHONY: emacs-25-branch-is-current unchanged-history-files
|
||||
|
||||
CHANGELOG = ChangeLog
|
||||
emacslog = build-aux/gitlog-to-emacslog
|
||||
|
@ -1109,8 +1109,8 @@ ChangeLog:
|
|||
./$(emacslog) -o $(CHANGELOG) -n $(CHANGELOG_HISTORY_INDEX_MAX)
|
||||
|
||||
# Check that we are in a good state for changing history.
|
||||
master-branch-is-current:
|
||||
git branch | grep -q '^\* master$$'
|
||||
emacs-25-branch-is-current:
|
||||
git branch | grep -q '^\* emacs-25$$'
|
||||
unchanged-history-files:
|
||||
x=$$(git diff-files --name-only $(CHANGELOG_N) $(emacslog)) && \
|
||||
test -z "$$x"
|
||||
|
@ -1120,7 +1120,7 @@ new_commit_regexp = ^commit [0123456789abcdef]* (inclusive)
|
|||
|
||||
# Copy newer commit messages to the start of the ChangeLog history file,
|
||||
# and consider them to be older.
|
||||
change-history-nocommit: master-branch-is-current unchanged-history-files
|
||||
change-history-nocommit: emacs-25-branch-is-current unchanged-history-files
|
||||
-rm -f ChangeLog.tmp
|
||||
$(MAKE) ChangeLog CHANGELOG=ChangeLog.tmp
|
||||
sed '/^This file records repository revisions/,$$d' \
|
||||
|
|
|
@ -919,6 +919,9 @@ in the repository.")
|
|||
("notes/bzr" . "notes/repo")
|
||||
;; moved from lisp/ to lisp/net/
|
||||
("lisp/pinentry.el" . "lisp/net/pinentry.el")
|
||||
;; module.* moved to emacs-module.*
|
||||
("src/module.h" . "src/emacs-module.h")
|
||||
("src/module.c" . "src/emacs-module.c")
|
||||
)
|
||||
"Alist of files which have been renamed during their lifetime.
|
||||
Elements are (OLDNAME . NEWNAME).")
|
||||
|
|
|
@ -20,7 +20,7 @@ No need to procrastinate on the dilemma whether you do or don't want
|
|||
the new shiny Cairo thing. Hail, simplicity!
|
||||
|
||||
@item
|
||||
Emacs still works on SGI IRIX systems. if you live backwards in time,
|
||||
Emacs still works on SGI IRIX systems. If you live backwards in time,
|
||||
this is actually a bonus, as IRIX systems will become more and more
|
||||
popular as you move farther back in time.
|
||||
|
||||
|
|
|
@ -192,6 +192,7 @@ Advanced Features
|
|||
* Network Security:: Managing the network security.
|
||||
* Document View:: Viewing PDF, PS and DVI files.
|
||||
* EWW:: A web browser in Emacs.
|
||||
* Embedded WebKit Widgets:: Embedding browser widgets in Emacs buffers.
|
||||
* Shell:: Executing shell commands from Emacs.
|
||||
* Emacs Server:: Using Emacs as an editing server.
|
||||
* Printing:: Printing hardcopies of buffers or regions.
|
||||
|
|
|
@ -2217,6 +2217,9 @@ in the file.
|
|||
@item
|
||||
In Fortran code, functions, subroutines and block data are tags.
|
||||
|
||||
@item
|
||||
In Go code, packages, functions, and types are tags.
|
||||
|
||||
@item
|
||||
In HTML input files, the tags are the @code{title} and the @code{h1},
|
||||
@code{h2}, @code{h3} headers. Also, tags are @code{name=} in anchors
|
||||
|
@ -2264,7 +2267,7 @@ generate a tag.
|
|||
|
||||
@item
|
||||
In Ruby code, @code{def} or @code{class} or @code{module} at the
|
||||
beginning of a line generate a tag.
|
||||
beginning of a line generate a tag. Constants also generate tags.
|
||||
@end itemize
|
||||
|
||||
You can also generate tags based on regexp matching (@pxref{Etags
|
||||
|
|
|
@ -286,12 +286,13 @@ instead signal an error if the mark is inactive.
|
|||
@findex delete-selection-mode
|
||||
By default, text insertion occurs normally even if the mark is
|
||||
active---for example, typing @kbd{a} inserts the character @samp{a},
|
||||
then deactivates the mark. If you enable Delete Selection mode, a
|
||||
minor mode, then inserting text while the mark is active causes the
|
||||
text in the region to be deleted first. Also, commands that normally
|
||||
delete just one character, such as @kbd{C-d} or @kbd{@key{DEL}}, will
|
||||
delete the entire region instead. To toggle Delete Selection
|
||||
mode on or off, type @kbd{M-x delete-selection-mode}.
|
||||
then deactivates the mark. Delete Selection mode, a minor mode,
|
||||
modifies this behavior: if you enable that mode, then inserting text
|
||||
while the mark is active causes the text in the region to be deleted
|
||||
first. Also, commands that normally delete just one character, such
|
||||
as @kbd{C-d} or @kbd{@key{DEL}}, will delete the entire region
|
||||
instead. To toggle Delete Selection mode on or off, type @kbd{M-x
|
||||
delete-selection-mode}.
|
||||
|
||||
@node Mark Ring
|
||||
@section The Mark Ring
|
||||
|
|
|
@ -604,6 +604,28 @@ using the command @kbd{M-x eww-open-file}. You can use EWW as the
|
|||
web browser for @code{browse-url}, @pxref{Browse-URL}. For full
|
||||
details, @pxref{Top, EWW,, eww, The Emacs Web Wowser Manual}.
|
||||
|
||||
@node Embedded WebKit Widgets
|
||||
@section Embedded WebKit Widgets
|
||||
@cindex xwidget
|
||||
@cindex webkit widgets
|
||||
@cindex embedded widgets
|
||||
|
||||
@findex xwidget-webkit-browse-url
|
||||
@findex xwidget-webkit-mode
|
||||
@cindex Xwidget-WebKit mode
|
||||
If Emacs was compiled with the appropriate support packages, it is
|
||||
able to show browser widgets in its buffers. The command @kbd{M-x
|
||||
xwidget-webkit-browse-url} asks for a URL to display in the browser
|
||||
widget. The URL normally defaults to the URL at or before point, but
|
||||
if there is an active region (@pxref{Mark}), the default URL comes
|
||||
from the region instead, after removing any whitespace from it. The
|
||||
command then creates a new buffer with the embedded browser showing
|
||||
the specified URL. The buffer is put in the Xwidget-WebKit mode
|
||||
(similar to Image mode, @pxref{File Conveniences}), which provides
|
||||
one-key commands for scrolling the widget, changing its size, and
|
||||
reloading it. Type @w{@kbd{C-h b}} in that buffer to see the key
|
||||
bindings.
|
||||
|
||||
@node Shell
|
||||
@section Running Shell Commands from Emacs
|
||||
@cindex subshell
|
||||
|
|
|
@ -225,11 +225,12 @@ code point in charset: 0xEA
|
|||
syntax: w which means: word
|
||||
category: .:Base, L:Left-to-right (strong), c:Chinese,
|
||||
j:Japanese, l:Latin, v:Viet
|
||||
to input: type "C-x 8 RET HEX-CODEPOINT" or "C-x 8 RET NAME"
|
||||
to input: type "C-x 8 RET ea" or
|
||||
"C-x 8 RET LATIN SMALL LETTER E WITH CIRCUMFLEX"
|
||||
buffer code: #xC3 #xAA
|
||||
file code: #xC3 #xAA (encoded by coding system utf-8-unix)
|
||||
display: by this font (glyph code)
|
||||
xft:-unknown-DejaVu Sans Mono-normal-normal-
|
||||
xft:-PfEd-DejaVu Sans Mono-normal-normal-
|
||||
normal-*-15-*-*-*-m-0-iso10646-1 (#xAC)
|
||||
|
||||
Character code properties: customize what to show
|
||||
|
|
|
@ -304,15 +304,15 @@ is useful to select alternatives based on more general conditions that
|
|||
distinguish between broad classes of values. The @code{pcase} macro
|
||||
allows you to choose between alternatives based on matching the value
|
||||
of an expression against a series of patterns. A pattern can be a
|
||||
literal value (comparison to literal values is what @code{cond} does),
|
||||
or it can be a more general description of the expected structure of
|
||||
the expression's value.
|
||||
literal value (for comparisons to literal values you'd use
|
||||
@code{cond}), or it can be a more general description of the expected
|
||||
structure of the expression's value.
|
||||
|
||||
@defmac pcase expression &rest clauses
|
||||
Evaluate @var{expression} and choose among an arbitrary number of
|
||||
alternatives based on the value of @var{expression}. The possible
|
||||
alternatives are specified by @var{clauses}, each of which must be a
|
||||
list of the form @code{(@var{pattern} @var{body-forms})}.
|
||||
list of the form @code{(@var{pattern} @var{body-forms}@dots{})}.
|
||||
@code{pcase} tries to match the value of @var{expression} to the
|
||||
@var{pattern} of each clause, in textual order. If the value matches,
|
||||
the clause succeeds; @code{pcase} then evaluates its @var{body-forms},
|
||||
|
@ -328,7 +328,7 @@ Note: In the description of the patterns below, we use ``the value
|
|||
being matched'' to refer to the value of the @var{expression} that is
|
||||
the first argument of @code{pcase}.
|
||||
|
||||
A UPattern can have one of the following forms:
|
||||
A UPattern can have the following forms:
|
||||
|
||||
@table @code
|
||||
|
||||
|
@ -337,7 +337,8 @@ Matches if the value being matched is @code{equal} to @var{val}.
|
|||
@item @var{atom}
|
||||
Matches any @var{atom}, which can be a keyword, a number, or a string.
|
||||
(These are self-quoting, so this kind of UPattern is actually a
|
||||
shorthand for @code{'@var{atom}}.)
|
||||
shorthand for @code{'@var{atom}}.) Note that a string or a float
|
||||
matches any string or float with the same contents/value.
|
||||
@item _
|
||||
Matches any value. This is known as @dfn{don't care} or @dfn{wildcard}.
|
||||
@item @var{symbol}
|
||||
|
@ -362,7 +363,8 @@ Matches if the specified @var{expression} matches the specified
|
|||
an @emph{arbitrary} expression, not just the expression that is the
|
||||
first argument to @code{pcase}. (It is called @code{let} because
|
||||
@var{upattern} can bind symbols to values using the @var{symbol}
|
||||
UPattern.)
|
||||
UPattern. For example:
|
||||
@w{@code{((or `(key . ,val) (let val 5)) val)}}.)
|
||||
@item (app @var{function} @var{upattern})
|
||||
Matches if @var{function} applied to the value being matched returns a
|
||||
value that matches @var{upattern}. This is like the @code{pred}
|
||||
|
@ -407,24 +409,27 @@ Here's an illustrative example of using UPatterns:
|
|||
(code (message "Unknown return code %S" code)))
|
||||
@end example
|
||||
|
||||
The QPatterns are more powerful. They allow matching the value of the
|
||||
@var{expression} that is the first argument of @code{pcase} against
|
||||
specifications of its @emph{structure}. For example, you can specify
|
||||
that the value must be a list of 2 elements whose first element is a
|
||||
string and the second element is a number. QPatterns can have one of
|
||||
the following forms:
|
||||
In addition, you can use backquoted patterns that are more powerful.
|
||||
They allow matching the value of the @var{expression} that is the
|
||||
first argument of @code{pcase} against specifications of its
|
||||
@emph{structure}. For example, you can specify that the value must be
|
||||
a list of 2 elements whose first element is a specific string and the
|
||||
second element is any value with a backquoted pattern like
|
||||
@code{`("first" ,second-elem)}.
|
||||
|
||||
Backquoted patterns have the form @code{`@var{qpattern}} where
|
||||
@var{qpattern} can have the following forms:
|
||||
|
||||
@table @code
|
||||
@item `(@var{qpattern1} . @var{qpattern2})
|
||||
@item (@var{qpattern1} . @var{qpattern2})
|
||||
Matches if the value being matched is a cons cell whose @code{car}
|
||||
matches @var{qpattern1} and whose @code{cdr} matches @var{qpattern2}.
|
||||
@item `[@var{qpattern1} @var{qpattern2} @dots{} @var{qpatternm}]
|
||||
This readily generalizes to backquoted lists as in
|
||||
@w{@code{(@var{qpattern1} @var{qpattern2} @dots{})}}.
|
||||
@item [@var{qpattern1} @var{qpattern2} @dots{} @var{qpatternm}]
|
||||
Matches if the value being matched is a vector of length @var{m} whose
|
||||
@code{0}..@code{(@var{m}-1)}th elements match @var{qpattern1},
|
||||
@var{qpattern2} @dots{} @var{qpatternm}, respectively.
|
||||
@item `(,@var{upattern1} ,@var{upattern2} @dots{})
|
||||
Matches if the value being matched is a list whose elements match the
|
||||
corresponding @var{upattern1}, @var{upattern2}, etc.
|
||||
@item @var{atom}
|
||||
Matches if corresponding element of the value being matched is
|
||||
@code{equal} to the specified @var{atom}.
|
||||
|
@ -433,6 +438,13 @@ Matches if the corresponding element of the value being matched
|
|||
matches the specified @var{upattern}.
|
||||
@end table
|
||||
|
||||
Note that uses of QPatterns can be expressed using only UPatterns, as
|
||||
QPatterns are implemented on top of UPatterns using
|
||||
@code{pcase-defmacro}, described below. However, using QPatterns will
|
||||
in many cases lead to a more readable code.
|
||||
@c FIXME: There should be an example here showing how a 'pcase' that
|
||||
@c uses QPatterns can be rewritten using UPatterns.
|
||||
|
||||
@end defmac
|
||||
|
||||
Here is an example of using @code{pcase} to implement a simple
|
||||
|
@ -476,8 +488,11 @@ Additional UPatterns can be defined using the @code{pcase-defmacro}
|
|||
macro.
|
||||
|
||||
@defmac pcase-defmacro name args &rest body
|
||||
Define a new UPattern for @code{pcase}. The UPattern will have the
|
||||
form @code{(@var{name} @var{args})}.
|
||||
Define a new kind of UPattern for @code{pcase}. The new UPattern will
|
||||
be invoked as @code{(@var{name} @var{actual-args})}. The @var{body}
|
||||
should describe how to rewrite the UPattern @var{name} into some other
|
||||
UPattern. The rewriting will be the result of evaluating @var{body}
|
||||
in an environment where @var{args} are bound to @var{actual-args}.
|
||||
@end defmac
|
||||
|
||||
@node Combining Conditions
|
||||
|
|
|
@ -334,7 +334,8 @@ macro accepts the following keywords:
|
|||
@item :type @var{type}
|
||||
Use @var{type} as the data type for this option. It specifies which
|
||||
values are legitimate, and how to display the value
|
||||
(@pxref{Customization Types}).
|
||||
(@pxref{Customization Types}). Every @code{defcustom} should specify
|
||||
a value for this keyword.
|
||||
|
||||
@item :options @var{value-list}
|
||||
@kindex options@r{, @code{defcustom} keyword}
|
||||
|
|
|
@ -27,6 +27,7 @@ that Emacs presents to the user.
|
|||
* Window Dividers:: Separating windows visually.
|
||||
* Display Property:: Enabling special display features.
|
||||
* Images:: Displaying images in Emacs buffers.
|
||||
* Xwidgets:: Displaying native widgets in Emacs buffers.
|
||||
* Buttons:: Adding clickable buttons to Emacs buffers.
|
||||
* Abstract Display:: Emacs's Widget for Object Collections.
|
||||
* Blinking:: How Emacs shows the matching open parenthesis.
|
||||
|
@ -5612,6 +5613,118 @@ except when you explicitly clear it. This mode can be useful for
|
|||
debugging.
|
||||
@end defvar
|
||||
|
||||
@node Xwidgets
|
||||
@section Embedded Native Widgets
|
||||
@cindex xwidget
|
||||
@cindex embedded widgets
|
||||
@cindex webkit browser widget
|
||||
|
||||
Emacs is able to display native widgets, such as GTK WebKit widgets,
|
||||
in Emacs buffers when it was built with the necessary support
|
||||
libraries and is running on a graphical terminal. To test whether
|
||||
Emacs supports display of embedded widgets, check that the
|
||||
@code{xwidget-internal} feature is available (@pxref{Named Features}).
|
||||
|
||||
To display an embedded widget in a buffer, you must first create an
|
||||
xwidget object, and then use that object as the display specifier
|
||||
in a @code{display} text or overlay property (@pxref{Display
|
||||
Property}).
|
||||
|
||||
@defun make-xwidget beg end type title width height arguments &optional buffer
|
||||
This creates an xwidget object between @var{beg} and @var{end}, buffer
|
||||
positions in @var{buffer}, and returns the new object. If
|
||||
@var{buffer} is omitted or @code{nil}, it defaults to the current
|
||||
buffer. If @var{buffer} names a buffer that doesn't exist, it will be
|
||||
created. The @var{type} identifies the type of the xwidget component,
|
||||
it can be one of the following:
|
||||
|
||||
@table @code
|
||||
@item webkit-osr
|
||||
The WebKit OSR (@dfn{on-stack replacement}) component.
|
||||
@end table
|
||||
|
||||
The @var{width} and @var{height} arguments specify the widget size in
|
||||
pixels, and @var{title}, a string, specifies its title.
|
||||
@end defun
|
||||
|
||||
@defun xwidgetp object
|
||||
This function returns @code{t} if @var{object} is an xwidget,
|
||||
@code{nil} otherwise.
|
||||
@end defun
|
||||
|
||||
@defun xwidget-plist xwidget
|
||||
This function returns the property list of @var{xwidget}.
|
||||
@end defun
|
||||
|
||||
@defun set-xwidget-plist xwidget plist
|
||||
This function replaces the property list of @var{xwidget} with a new
|
||||
property list given by @var{plist}.
|
||||
@end defun
|
||||
|
||||
@defun xwidget-buffer xwidget
|
||||
This function returns the buffer of @var{xwidget}.
|
||||
@end defun
|
||||
|
||||
@defun get-buffer-xwidgets buffer
|
||||
This function returns a list of xwidget objects associated with the
|
||||
@var{buffer}, which can be specified as a buffer object or a name of
|
||||
an existing buffer, a string. The value is @code{nil} if @var{buffer}
|
||||
contains no xwidgets.
|
||||
@end defun
|
||||
|
||||
@defun xwidget-webkit-goto-uri xwidget uri
|
||||
This function browses the specified @var{uri} in the given
|
||||
@var{xwidget}. The @var{uri} is a string that specifies the name of a
|
||||
file or a URL. @c FIXME: What else can a URI specify in this context?
|
||||
@end defun
|
||||
|
||||
@defun xwidget-webkit-execute-script xwidget script
|
||||
This function causes the browser widget specified by @var{xwidget} to
|
||||
execute the specified JavaScript @code{script}.
|
||||
@end defun
|
||||
|
||||
@defun xwidget-webkit-execute-script-rv xwidget script &optional default
|
||||
This function executes the specified @var{script} like
|
||||
@code{xwidget-webkit-execute-script} does, but it also returns the
|
||||
script's return value as a string. If @var{script} doesn't return a
|
||||
value, this function returns @var{default}, or @code{nil} if
|
||||
@var{default} was omitted.
|
||||
@end defun
|
||||
|
||||
@defun xwidget-webkit-get-title xwidget
|
||||
This function returns the title of @var{xwidget} as a string.
|
||||
@end defun
|
||||
|
||||
@defun xwidget-resize xwidget width height
|
||||
This function resizes the specified @var{xwidget} to the size
|
||||
@var{width}x@var{height} pixels.
|
||||
@end defun
|
||||
|
||||
@defun xwidget-size-request xwidget
|
||||
This function returns the desired size of @var{xwidget} as a list of
|
||||
the form @code{(@var{width} @var{height})}. The dimensions are in
|
||||
pixels.
|
||||
@end defun
|
||||
|
||||
@defun xwidget-info xwidget
|
||||
This function returns the attributes of @var{xwidget} as a vector of
|
||||
the form @code{[@var{type} @var{title} @var{width} @var{height}]}.
|
||||
The attributes are usually determined by @code{make-xwidget} when the
|
||||
xwidget is created.
|
||||
@end defun
|
||||
|
||||
@defun set-xwidget-query-on-exit-flag xwidget flag
|
||||
This function allows you to arrange that Emacs will ask the user for
|
||||
confirmation before exiting or before killing a buffer that has
|
||||
@var{xwidget} associated with it. If @var{flag} is non-@code{nil},
|
||||
Emacs will query the user, otherwise it will not.
|
||||
@end defun
|
||||
|
||||
@defun xwidget-query-on-exit-flag xwidget
|
||||
This function returns the current setting of @var{xwidget}s
|
||||
query-on-exit flag, either @code{t} or @code{nil}.
|
||||
@end defun
|
||||
|
||||
@node Buttons
|
||||
@section Buttons
|
||||
@cindex buttons in buffers
|
||||
|
|
|
@ -714,9 +714,12 @@ Sizes}) or splitting (@pxref{Splitting Windows}) windows.
|
|||
|
||||
@cindex line height
|
||||
@cindex column width
|
||||
The term @dfn{line height} is sometimes used instead of ``default
|
||||
character height''. Similarly, the term @dfn{column width} is used as
|
||||
shorthand for ``default character width''.
|
||||
@cindex canonical character height
|
||||
@cindex canonical character width
|
||||
The terms @dfn{line height} and @dfn{canonical character height} are
|
||||
sometimes used instead of ``default character height''. Similarly, the
|
||||
terms @dfn{column width} and @dfn{canonical character width} are used
|
||||
instead of ``default character width''.
|
||||
|
||||
@defun frame-char-height &optional frame
|
||||
@defunx frame-char-width &optional frame
|
||||
|
|
|
@ -371,14 +371,14 @@ means to use the left or top edge of @var{window} as reference position.
|
|||
If the optional argument @var{wrap} is non-@code{nil}, this means to
|
||||
wrap @var{direction} around frame borders. For example, if @var{window}
|
||||
is at the top of the frame and @var{direction} is @code{above}, then
|
||||
return the minibuffer window provided the frame has one, and a window at
|
||||
the bottom of the frame otherwise.
|
||||
this function usually returns the frame's minibuffer window if it's
|
||||
active and a window at the bottom of the frame otherwise.
|
||||
|
||||
If the optional argument @var{mini} is @code{nil}, this means to return
|
||||
the minibuffer window if and only if it is currently active. If
|
||||
@var{mini} is non-@code{nil}, it returns the minibuffer window even when
|
||||
it's not active. However, if @var{wrap} non-@code{nil}, it always acts
|
||||
as if @var{mini} were @code{nil}.
|
||||
@var{mini} is non-@code{nil}, this function may return the minibuffer
|
||||
window even when it's not active. However, if @var{wrap} is
|
||||
non-@code{nil}, it always acts as if @var{mini} were @code{nil}.
|
||||
|
||||
If it doesn't find a suitable window, this function returns @code{nil}.
|
||||
@end defun
|
||||
|
@ -664,15 +664,17 @@ following function useful:
|
|||
|
||||
@defun window-max-chars-per-line &optional window face
|
||||
This function returns the number of characters displayed in the
|
||||
specified @var{face} in the specified @var{window} (which must be a
|
||||
live window). If @var{face} was remapped (@pxref{Face Remapping}),
|
||||
the information is returned for the remapped face. If omitted or
|
||||
@code{nil}, @var{face} defaults to the default face, and @var{window}
|
||||
defaults to the selected window. Unlike @code{window-body-width},
|
||||
this function accounts for the actual size of the @var{face}'s font,
|
||||
instead of working in units of frame's canonical character width. It
|
||||
also accounts for space used by the continuation glyph, if
|
||||
@var{window} lacks one or both of its fringes.
|
||||
specified face @var{face} in the specified window @var{window} (which
|
||||
must be a live window). If @var{face} was remapped (@pxref{Face
|
||||
Remapping}), the information is returned for the remapped face. If
|
||||
omitted or @code{nil}, @var{face} defaults to the default face, and
|
||||
@var{window} defaults to the selected window.
|
||||
|
||||
Unlike @code{window-body-width}, this function accounts for the actual
|
||||
size of @var{face}'s font, instead of working in units of the canonical
|
||||
character width of @var{window}'s frame (@pxref{Frame Font}). It also
|
||||
accounts for space used by the continuation glyph, if @var{window} lacks
|
||||
one or both of its fringes.
|
||||
@end defun
|
||||
|
||||
@cindex fixed-size window
|
||||
|
@ -701,7 +703,7 @@ margins, fringes, a scroll bar and a right divider, if present.
|
|||
The following function tells how small a specific window can get taking
|
||||
into account the sizes of its areas and the values of
|
||||
@code{window-min-height}, @code{window-min-width} and
|
||||
@code{window-size-fixed}.
|
||||
@code{window-size-fixed} (@pxref{Preserving Window Sizes}).
|
||||
|
||||
@defun window-min-size &optional window horizontal ignore pixelwise
|
||||
This function returns the minimum size of @var{window}. @var{window}
|
||||
|
@ -713,10 +715,9 @@ of @var{window}'s lines.
|
|||
The return value makes sure that all components of @var{window} remain
|
||||
fully visible if @var{window}'s size were actually set to it. With
|
||||
@var{horizontal} @code{nil} it includes the mode and header line, the
|
||||
horizontal scroll bar and the bottom divider. With @var{horizontal}
|
||||
non-@code{nil} it includes the fringes, a scroll bar, and a right
|
||||
divider, if present. It does not, however, include the space reserved
|
||||
for the margins.
|
||||
horizontal scroll bar and the bottom divider, if present. With
|
||||
@var{horizontal} non-@code{nil} it includes the margins and fringes, the
|
||||
vertical scroll bar and the right divider, if present.
|
||||
|
||||
The optional argument @var{ignore}, if non-@code{nil}, means ignore
|
||||
restrictions imposed by fixed size windows, @code{window-min-height} or
|
||||
|
@ -1263,8 +1264,8 @@ frame), an error is signaled.
|
|||
By default, the space taken up by @var{window} is given to one of its
|
||||
adjacent sibling windows, if any. However, if the variable
|
||||
@code{window-combination-resize} is non-@code{nil}, the space is
|
||||
proportionally distributed among any remaining windows in the window
|
||||
combination. @xref{Recombining Windows}.
|
||||
proportionally distributed among any remaining windows in the same
|
||||
window combination. @xref{Recombining Windows}.
|
||||
|
||||
The behavior of this function may be altered by the window parameters
|
||||
of @var{window}, so long as the variable
|
||||
|
@ -1771,11 +1772,13 @@ nor the buffer list.
|
|||
@defun window-use-time &optional window
|
||||
This functions returns the use time of window @var{window}.
|
||||
@var{window} must be a live window and defaults to the selected one.
|
||||
The @dfn{use time} of a window is not really a time value, but it does
|
||||
increase monotonically with each window selection, so the window with
|
||||
the lowest use time is the least recently selected one, and the
|
||||
window with the highest use time is the most recently selected
|
||||
one.
|
||||
|
||||
The @dfn{use time} of a window is not really a time value, but an
|
||||
integer that does increase monotonically with each call of
|
||||
@code{select-window} with a @code{nil} @var{norecord} argument. The
|
||||
window with the lowest use time is usually called the least recently
|
||||
used window while the window with the highest use time is called the
|
||||
most recently used one (@pxref{Cyclic Window Ordering}).
|
||||
@end defun
|
||||
|
||||
|
||||
|
@ -1790,11 +1793,11 @@ some other window, it moves through live windows in a specific order.
|
|||
For any given configuration of windows, this order never varies. It
|
||||
is called the @dfn{cyclic ordering of windows}.
|
||||
|
||||
The ordering is determined by a depth-first traversal of the frame's
|
||||
window tree, retrieving the live windows which are the leaf nodes of
|
||||
the tree (@pxref{Windows and Frames}). If the minibuffer is active,
|
||||
the minibuffer window is included too. The ordering is cyclic, so the
|
||||
last window in the sequence is followed by the first one.
|
||||
The ordering is determined by a depth-first traversal of each frame's
|
||||
window tree, retrieving the live windows which are the leaf nodes of the
|
||||
tree (@pxref{Windows and Frames}). If the minibuffer is active, the
|
||||
minibuffer window is included too. The ordering is cyclic, so the last
|
||||
window in the sequence is followed by the first one.
|
||||
|
||||
@defun next-window &optional window minibuf all-frames
|
||||
@cindex minibuffer window, and @code{next-window}
|
||||
|
@ -2146,9 +2149,8 @@ Invokes @code{pop-to-buffer} to proceed.
|
|||
Marks the selected window as non-dedicated and proceeds.
|
||||
@end table
|
||||
|
||||
When called non-interactively, @code{switch-to-buffer} always signals an
|
||||
error when the selected window is dedicated to its buffer and
|
||||
@var{force-same-window} is non-@code{nil}.
|
||||
This option does not affect non-interactive calls of
|
||||
@code{switch-to-buffer}.
|
||||
@end defopt
|
||||
|
||||
By default, @code{switch-to-buffer} shows the buffer at its position of
|
||||
|
@ -2209,7 +2211,7 @@ for the documentation of @code{display-buffer}.
|
|||
|
||||
@deffn Command pop-to-buffer buffer-or-name &optional action norecord
|
||||
This function makes @var{buffer-or-name} the current buffer and
|
||||
displays it in some window, preferably not the window previously
|
||||
displays it in some window, preferably not the window currently
|
||||
selected. It then selects the displaying window. If that window is
|
||||
on a different graphical frame, that frame is given input focus if
|
||||
possible (@pxref{Input Focus}). The return value is the buffer that
|
||||
|
@ -2420,7 +2422,6 @@ frame is a candidate; this function replaces the default predicate.
|
|||
If @var{alist} has a non-@code{nil} @code{inhibit-same-window} entry,
|
||||
the selected window is used; thus if the selected frame has a single
|
||||
window, it is not used.
|
||||
|
||||
@end defun
|
||||
|
||||
@defun display-buffer-pop-up-window buffer alist
|
||||
|
|
|
@ -50,7 +50,7 @@ format understood by
|
|||
.BR vi ( 1 )\c
|
||||
\&. Both forms of the program understand
|
||||
the syntax of C, Objective C, C++, Java, Fortran, Ada, Cobol, Erlang,
|
||||
Forth, HTML, LaTeX, Emacs Lisp/Common Lisp, Lua, Makefile, Pascal, Perl,
|
||||
Forth, Go, HTML, LaTeX, Emacs Lisp/Common Lisp, Lua, Makefile, Pascal, Perl,
|
||||
Ruby, PHP, PostScript, Python, Prolog, Scheme and
|
||||
most assembler\-like syntaxes.
|
||||
Both forms read the files specified on the command line, and write a tag
|
||||
|
|
1019
etc/AUTHORS
1019
etc/AUTHORS
File diff suppressed because it is too large
Load diff
20
etc/NEWS
20
etc/NEWS
|
@ -181,13 +181,15 @@ and can contain escape sequences for command keys, quotes, and the like.
|
|||
|
||||
* Changes in Emacs 25.1
|
||||
|
||||
+++
|
||||
** Xwidgets: a new feature for embedding native widgets inside Emacs buffers.
|
||||
If you have gtk3 and webkitgtk3 installed, you can access the
|
||||
embedded webkit browser with `M-x xwidget-webkit-browse-url'. This
|
||||
opens a new buffer with the embedded browser. The buffer will
|
||||
have a new mode, `xwidget-webkit-mode' (similar to `image-mode'),
|
||||
which supports the webkit widget.
|
||||
If you have gtk3 and webkitgtk3 installed, and Emacs was built with
|
||||
xwidget support, you can access the embedded webkit browser with `M-x
|
||||
xwidget-webkit-browse-url'. This opens a new buffer with the embedded
|
||||
browser. The buffer will have a new mode, `xwidget-webkit-mode'
|
||||
(similar to `image-mode'), which supports the webkit widget.
|
||||
|
||||
+++
|
||||
*** New functions for xwidget-webkit mode `xwidget-webkit-insert-string',
|
||||
`xwidget-webkit-adjust-size-dispatch', `xwidget-webkit-back',
|
||||
`xwidget-webkit-browse-url', `xwidget-webkit-reload',
|
||||
|
@ -1896,8 +1898,12 @@ qualified names by hand.
|
|||
+++
|
||||
*** New language Ruby
|
||||
|
||||
Names of modules, classes, methods, and functions are tagged.
|
||||
Overloaded operators are also tagged.
|
||||
Names of modules, classes, methods, functions, and constants are
|
||||
tagged. Overloaded operators are also tagged.
|
||||
|
||||
+++
|
||||
*** New language Go
|
||||
Names of packages, functions, and types are tagged.
|
||||
|
||||
+++
|
||||
*** Improved support for Lua
|
||||
|
|
133
lib-src/etags.c
133
lib-src/etags.c
|
@ -354,6 +354,7 @@ static void Cstar_entries (FILE *);
|
|||
static void Erlang_functions (FILE *);
|
||||
static void Forth_words (FILE *);
|
||||
static void Fortran_functions (FILE *);
|
||||
static void Go_functions (FILE *);
|
||||
static void HTML_labels (FILE *);
|
||||
static void Lisp_functions (FILE *);
|
||||
static void Lua_functions (FILE *);
|
||||
|
@ -641,6 +642,10 @@ static const char *Fortran_suffixes [] =
|
|||
static const char Fortran_help [] =
|
||||
"In Fortran code, functions, subroutines and block data are tags.";
|
||||
|
||||
static const char *Go_suffixes [] = {"go", NULL};
|
||||
static const char Go_help [] =
|
||||
"In Go code, functions, interfaces and packages are tags.";
|
||||
|
||||
static const char *HTML_suffixes [] =
|
||||
{ "htm", "html", "shtml", NULL };
|
||||
static const char HTML_help [] =
|
||||
|
@ -727,7 +732,7 @@ static const char *Ruby_suffixes [] =
|
|||
{ "rb", "ruby", NULL };
|
||||
static const char Ruby_help [] =
|
||||
"In Ruby code, 'def' or 'class' or 'module' at the beginning of\n\
|
||||
a line generate a tag.";
|
||||
a line generate a tag. Constants also generate a tag.";
|
||||
|
||||
/* Can't do the `SCM' or `scm' prefix with a version number. */
|
||||
static const char *Scheme_suffixes [] =
|
||||
|
@ -794,6 +799,7 @@ static language lang_names [] =
|
|||
{ "erlang", Erlang_help, Erlang_functions, Erlang_suffixes },
|
||||
{ "forth", Forth_help, Forth_words, Forth_suffixes },
|
||||
{ "fortran", Fortran_help, Fortran_functions, Fortran_suffixes },
|
||||
{ "go", Go_help, Go_functions, Go_suffixes },
|
||||
{ "html", HTML_help, HTML_labels, HTML_suffixes },
|
||||
{ "java", Cjava_help, Cjava_entries, Cjava_suffixes },
|
||||
{ "lisp", Lisp_help, Lisp_functions, Lisp_suffixes },
|
||||
|
@ -4208,6 +4214,73 @@ Fortran_functions (FILE *inf)
|
|||
}
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* Go language support
|
||||
* Original code by Xi Lu <lx@shellcodes.org> (2016)
|
||||
*/
|
||||
static void
|
||||
Go_functions(FILE *inf)
|
||||
{
|
||||
char *cp, *name;
|
||||
|
||||
LOOP_ON_INPUT_LINES(inf, lb, cp)
|
||||
{
|
||||
cp = skip_spaces (cp);
|
||||
|
||||
if (LOOKING_AT (cp, "package"))
|
||||
{
|
||||
name = cp;
|
||||
while (!notinname (*cp) && *cp != '\0')
|
||||
cp++;
|
||||
make_tag (name, cp - name, false, lb.buffer,
|
||||
cp - lb.buffer + 1, lineno, linecharno);
|
||||
}
|
||||
else if (LOOKING_AT (cp, "func"))
|
||||
{
|
||||
/* Go implementation of interface, such as:
|
||||
func (n *Integer) Add(m Integer) ...
|
||||
skip `(n *Integer)` part.
|
||||
*/
|
||||
if (*cp == '(')
|
||||
{
|
||||
while (*cp != ')')
|
||||
cp++;
|
||||
cp = skip_spaces (cp+1);
|
||||
}
|
||||
|
||||
if (*cp)
|
||||
{
|
||||
name = cp;
|
||||
|
||||
while (!notinname (*cp))
|
||||
cp++;
|
||||
|
||||
make_tag (name, cp - name, true, lb.buffer,
|
||||
cp - lb.buffer + 1, lineno, linecharno);
|
||||
}
|
||||
}
|
||||
else if (members && LOOKING_AT (cp, "type"))
|
||||
{
|
||||
name = cp;
|
||||
|
||||
/* Ignore the likes of the following:
|
||||
type (
|
||||
A
|
||||
)
|
||||
*/
|
||||
if (*cp == '(')
|
||||
return;
|
||||
|
||||
while (!notinname (*cp) && *cp != '\0')
|
||||
cp++;
|
||||
|
||||
make_tag (name, cp - name, false, lb.buffer,
|
||||
cp - lb.buffer + 1, lineno, linecharno);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* Ada parsing
|
||||
|
@ -4551,18 +4624,68 @@ Ruby_functions (FILE *inf)
|
|||
|
||||
LOOP_ON_INPUT_LINES (inf, lb, cp)
|
||||
{
|
||||
bool is_class = false;
|
||||
bool is_method = false;
|
||||
char *name;
|
||||
|
||||
cp = skip_spaces (cp);
|
||||
if (LOOKING_AT (cp, "def")
|
||||
|| LOOKING_AT (cp, "class")
|
||||
|| LOOKING_AT (cp, "module"))
|
||||
if (c_isalpha (*cp) && c_isupper (*cp)) /* constants */
|
||||
{
|
||||
char *name = cp;
|
||||
char *bp, *colon = NULL;
|
||||
|
||||
name = cp;
|
||||
|
||||
for (cp++; c_isalnum (*cp) || *cp == '_' || *cp == ':'; cp++)
|
||||
{
|
||||
if (*cp == ':')
|
||||
colon = cp;
|
||||
}
|
||||
if (cp > name + 1)
|
||||
{
|
||||
bp = skip_spaces (cp);
|
||||
if (*bp == '=' && c_isspace (bp[1]))
|
||||
{
|
||||
if (colon && !c_isspace (colon[1]))
|
||||
name = colon + 1;
|
||||
make_tag (name, cp - name, false,
|
||||
lb.buffer, cp - lb.buffer + 1, lineno, linecharno);
|
||||
}
|
||||
}
|
||||
}
|
||||
else if ((is_method = LOOKING_AT (cp, "def")) /* module/class/method */
|
||||
|| (is_class = LOOKING_AT (cp, "class"))
|
||||
|| LOOKING_AT (cp, "module"))
|
||||
{
|
||||
const char self_name[] = "self.";
|
||||
const size_t self_size1 = sizeof ("self.") - 1;
|
||||
|
||||
name = cp;
|
||||
|
||||
/* Ruby method names can end in a '='. Also, operator overloading can
|
||||
define operators whose names include '='. */
|
||||
while (!notinname (*cp) || *cp == '=')
|
||||
cp++;
|
||||
|
||||
/* Remove "self." from the method name. */
|
||||
if (cp - name > self_size1
|
||||
&& strneq (name, self_name, self_size1))
|
||||
name += self_size1;
|
||||
|
||||
/* Remove the class/module qualifiers from method names. */
|
||||
if (is_method)
|
||||
{
|
||||
char *q;
|
||||
|
||||
for (q = name; q < cp && *q != '.'; q++)
|
||||
;
|
||||
if (q < cp - 1) /* punt if we see just "FOO." */
|
||||
name = q + 1;
|
||||
}
|
||||
|
||||
/* Don't tag singleton classes. */
|
||||
if (is_class && strneq (name, "<<", 2) && cp == name + 2)
|
||||
continue;
|
||||
|
||||
make_tag (name, cp - name, true,
|
||||
lb.buffer, cp - lb.buffer + 1, lineno, linecharno);
|
||||
}
|
||||
|
|
|
@ -127,9 +127,9 @@ Signal an error if Gnu global not available."
|
|||
(message "%s" (cedet-gnu-global-root)))
|
||||
|
||||
(defun cedet-gnu-global-root (&optional dir)
|
||||
"Return the root of any GNU Global scanned project.
|
||||
If a default starting DIR is not specified, the current buffer's
|
||||
`default-directory' is used."
|
||||
"Return the root of any GNU Global scanned project containing DIR.
|
||||
Returns nil if no GNU Global project can be found.
|
||||
DIR defaults to `default-directory'."
|
||||
(let ((default-directory (or dir default-directory)))
|
||||
(with-current-buffer (cedet-gnu-global-call (list "-pq"))
|
||||
(goto-char (point-min))
|
||||
|
|
|
@ -231,7 +231,7 @@ variable `cedet-global-command'.")
|
|||
(let* ((default-directory (oref loc root))
|
||||
(root (cedet-gnu-global-root)))
|
||||
(when (not root)
|
||||
(error "Cannot use GNU Global in %s"
|
||||
(error "No GNU Global project found for %s"
|
||||
(oref loc root))))
|
||||
)
|
||||
|
||||
|
|
|
@ -67,7 +67,8 @@ disable any saving anywhere, `always', which enables saving
|
|||
everywhere, or `project', which enables saving in any directory that
|
||||
passes a list of predicates in `semanticdb-project-predicate-functions'."
|
||||
:group 'semanticdb
|
||||
:type nil)
|
||||
:type '(repeat (choice (string :tag "Directory") (const never) (const always)
|
||||
(const project))))
|
||||
|
||||
(define-obsolete-variable-alias 'semanticdb-save-database-hooks
|
||||
'semanticdb-save-database-functions "24.3")
|
||||
|
|
|
@ -224,6 +224,7 @@ The remaining arguments to `defcustom' should have the form
|
|||
The following keywords are meaningful:
|
||||
|
||||
:type VALUE should be a widget type for editing the symbol's value.
|
||||
Every `defcustom' should specify a value for this keyword.
|
||||
:options VALUE should be a list of valid members of the widget type.
|
||||
:initialize
|
||||
VALUE should be a function used to initialize the
|
||||
|
|
|
@ -183,7 +183,13 @@ If VERSION is a string, only that version is ever loaded.
|
|||
Any other version, even if newer, is silently ignored.
|
||||
Hence, the package is \"held\" at that version.
|
||||
If VERSION is nil, the package is not loaded (it is \"disabled\")."
|
||||
:type '(repeat symbol)
|
||||
:type '(repeat (choice (const all)
|
||||
(list :tag "Specific package"
|
||||
(symbol :tag "Package name")
|
||||
(choice :tag "Version"
|
||||
(const :tag "disable" nil)
|
||||
(const :tag "most recent" t)
|
||||
(string :tag "specific version")))))
|
||||
:risky t
|
||||
:version "24.1")
|
||||
|
||||
|
|
|
@ -35,6 +35,7 @@
|
|||
(require 'browse-url)
|
||||
(require 'subr-x)
|
||||
(require 'dom)
|
||||
(require 'seq)
|
||||
|
||||
(defgroup shr nil
|
||||
"Simple HTML Renderer"
|
||||
|
|
|
@ -1228,7 +1228,10 @@ connection if a previous connection has died for some reason."
|
|||
;; Read the expression.
|
||||
(goto-char (point-min))
|
||||
(read (current-buffer)))
|
||||
":" 'omit))))))))
|
||||
":" 'omit))
|
||||
|
||||
;; Mark it as connected.
|
||||
(tramp-set-connection-property p "connected" t)))))))
|
||||
|
||||
(add-hook 'tramp-unload-hook
|
||||
(lambda ()
|
||||
|
|
|
@ -1613,7 +1613,11 @@ connection if a previous connection has died for some reason."
|
|||
;; is marked with the fuse-mountpoint "/". We shall react.
|
||||
(when (string-equal
|
||||
(tramp-get-file-property vec "/" "fuse-mountpoint" "") "/")
|
||||
(tramp-error vec 'file-error "FUSE mount denied")))))
|
||||
(tramp-error vec 'file-error "FUSE mount denied"))
|
||||
|
||||
;; Mark it as connected.
|
||||
(tramp-set-connection-property
|
||||
(tramp-get-connection-process vec) "connected" t))))
|
||||
|
||||
;; In `tramp-check-cached-permissions', the connection properties
|
||||
;; {uig,gid}-{integer,string} are used. We set them to their local
|
||||
|
|
|
@ -4933,7 +4933,10 @@ connection if a previous connection has died for some reason."
|
|||
target-alist (cdr target-alist)))
|
||||
|
||||
;; Make initial shell settings.
|
||||
(tramp-open-connection-setup-interactive-shell p vec)))))
|
||||
(tramp-open-connection-setup-interactive-shell p vec)
|
||||
|
||||
;; Mark it as connected.
|
||||
(tramp-set-connection-property p "connected" t)))))
|
||||
|
||||
;; When the user did interrupt, we must cleanup.
|
||||
(quit
|
||||
|
|
|
@ -1898,7 +1898,10 @@ If ARGUMENT is non-nil, use it as argument for
|
|||
;; character by character; if we send the string
|
||||
;; at once, it is read painfully slow.
|
||||
(tramp-set-connection-property p "smb-share" share)
|
||||
(tramp-set-connection-property p "chunksize" 1))
|
||||
(tramp-set-connection-property p "chunksize" 1)
|
||||
|
||||
;; Mark it as connected.
|
||||
(tramp-set-connection-property p "connected" t))
|
||||
|
||||
;; Check for the error reason. If it was due to wrong
|
||||
;; password, reestablish the connection. We cannot
|
||||
|
|
|
@ -2869,7 +2869,8 @@ User is always nil."
|
|||
(when (tramp-tramp-file-p filename)
|
||||
(let* ((v (tramp-dissect-file-name filename))
|
||||
(p (tramp-get-connection-process v))
|
||||
(c (and p (processp p) (memq (process-status p) '(run open)))))
|
||||
(c (and p (processp p) (memq (process-status p) '(run open))
|
||||
(tramp-get-connection-property p "connected" nil))))
|
||||
;; We expand the file name only, if there is already a connection.
|
||||
(with-parsed-tramp-file-name
|
||||
(if c (expand-file-name filename) filename) nil
|
||||
|
|
|
@ -154,6 +154,34 @@ end it with `/'. DIR must be one of `project-roots' or
|
|||
vc-directory-exclusion-list)
|
||||
grep-find-ignored-files))
|
||||
|
||||
(cl-defgeneric project-file-completion-table (project dirs)
|
||||
"Return a completion table for files in directories DIRS in PROJECT.
|
||||
DIRS is a list of absolute directories; it should be some
|
||||
subset of the project roots and external roots.
|
||||
|
||||
The default implementation uses `find-program'. PROJECT is used
|
||||
to find the list of ignores for each directory."
|
||||
;; FIXME: Uniquely abbreviate the roots?
|
||||
(require 'xref)
|
||||
(let ((all-files
|
||||
(cl-mapcan
|
||||
(lambda (dir)
|
||||
(let ((command
|
||||
(format "%s %s %s -type f -print0"
|
||||
find-program
|
||||
dir
|
||||
(xref--find-ignores-arguments
|
||||
(project-ignores project dir)
|
||||
(expand-file-name dir)))))
|
||||
(split-string (shell-command-to-string command) "\0" t)))
|
||||
dirs)))
|
||||
(lambda (string pred action)
|
||||
(cond
|
||||
((eq action 'metadata)
|
||||
'(metadata . ((category . project-file))))
|
||||
(t
|
||||
(complete-with-action action all-files string pred))))))
|
||||
|
||||
(defgroup project-vc nil
|
||||
"Project implementation using the VC package."
|
||||
:version "25.1"
|
||||
|
@ -313,51 +341,55 @@ pattern to search for."
|
|||
|
||||
;;;###autoload
|
||||
(defun project-find-file ()
|
||||
"Visit a file in the current project's roots.
|
||||
|
||||
This is like `find-file', but it limits the file-name completion
|
||||
candidates to the files within the current project roots."
|
||||
"Visit a file (with completion) in the current project's roots.
|
||||
The completion default is the filename at point, if one is
|
||||
recognized."
|
||||
(interactive)
|
||||
(let* ((pr (project-current t))
|
||||
(dirs (project-roots pr)))
|
||||
(project--find-file-in dirs pr)))
|
||||
(project-find-file-in (thing-at-point 'filename) dirs pr)))
|
||||
|
||||
;;;###autoload
|
||||
(defun project-or-external-find-file ()
|
||||
"Visit a file in the current project's roots or external roots.
|
||||
|
||||
This is like `find-file', but it limits the file-name completion
|
||||
candidates to the files within the current project roots and external roots."
|
||||
"Visit a file (with completion) in the current project's roots or external roots.
|
||||
The completion default is the filename at point, if one is
|
||||
recognized."
|
||||
(interactive)
|
||||
(let* ((pr (project-current t))
|
||||
(dirs (append
|
||||
(project-roots pr)
|
||||
(project-external-roots pr))))
|
||||
(project--find-file-in dirs pr)))
|
||||
(project-find-file-in (thing-at-point 'filename) dirs pr)))
|
||||
|
||||
;; FIXME: Uniquely abbreviate the roots?
|
||||
(defun project--find-file-in (dirs project)
|
||||
(require 'xref)
|
||||
(let* ((all-files
|
||||
(cl-mapcan
|
||||
(lambda (dir)
|
||||
(let ((command
|
||||
(format "%s %s %s -type f -print0"
|
||||
find-program
|
||||
dir
|
||||
(xref--find-ignores-arguments
|
||||
(project-ignores project dir)
|
||||
(expand-file-name dir)))))
|
||||
(split-string (shell-command-to-string command) "\0" t)))
|
||||
dirs))
|
||||
(table (lambda (string pred action)
|
||||
(cond
|
||||
((eq action 'metadata)
|
||||
'(metadata . ((category . project-file))))
|
||||
(t
|
||||
(complete-with-action action all-files string pred))))))
|
||||
(find-file
|
||||
(completing-read "Find file: " table nil t))))
|
||||
(defun project-find-file-in (filename dirs project)
|
||||
"Complete FILENAME in DIRS in PROJECT and visit the result."
|
||||
(let* ((table (project-file-completion-table project dirs))
|
||||
(file (project--completing-read-strict
|
||||
"Find file" table nil nil
|
||||
filename)))
|
||||
(if (string= file "")
|
||||
(user-error "You didn't specify the file")
|
||||
(find-file file))))
|
||||
|
||||
(defun project--completing-read-strict (prompt
|
||||
collection &optional predicate
|
||||
hist default inherit-input-method)
|
||||
;; Tried both expanding the default before showing the prompt, and
|
||||
;; removing it when it has no matches. Neither seems natural
|
||||
;; enough. Removal is confusing; early expansion makes the prompt
|
||||
;; too long.
|
||||
(let* ((new-prompt (if default
|
||||
(format "%s (default %s): " prompt default)
|
||||
(format "%s: " prompt)))
|
||||
(res (completing-read new-prompt
|
||||
collection predicate t
|
||||
nil hist default inherit-input-method)))
|
||||
(if (and (equal res default)
|
||||
(not (test-completion res collection predicate)))
|
||||
(completing-read (format "%s: " prompt)
|
||||
collection predicate t res hist nil
|
||||
inherit-input-method)
|
||||
res)))
|
||||
|
||||
(provide 'project)
|
||||
;;; project.el ends here
|
||||
|
|
|
@ -367,6 +367,7 @@ The version numbers are of the format (Major . Minor)."
|
|||
:type '(repeat (list (symbol :tag "System")
|
||||
(cons :tag "Version numbers" (integer :tag "Major")
|
||||
(integer :tag "Minor"))))
|
||||
:risky t
|
||||
:group 'prolog)
|
||||
|
||||
;; Indentation
|
||||
|
@ -440,7 +441,8 @@ Legal values:
|
|||
"Alist of Prolog keywords which is used for font locking of directives."
|
||||
:version "24.1"
|
||||
:group 'prolog-font-lock
|
||||
:type 'sexp)
|
||||
:type 'sexp
|
||||
:risky t)
|
||||
|
||||
(defcustom prolog-types
|
||||
'((mercury
|
||||
|
@ -449,7 +451,8 @@ Legal values:
|
|||
"Alist of Prolog types used by font locking."
|
||||
:version "24.1"
|
||||
:group 'prolog-font-lock
|
||||
:type 'sexp)
|
||||
:type 'sexp
|
||||
:risky t)
|
||||
|
||||
(defcustom prolog-mode-specificators
|
||||
'((mercury
|
||||
|
@ -458,7 +461,8 @@ Legal values:
|
|||
"Alist of Prolog mode specificators used by font locking."
|
||||
:version "24.1"
|
||||
:group 'prolog-font-lock
|
||||
:type 'sexp)
|
||||
:type 'sexp
|
||||
:risky t)
|
||||
|
||||
(defcustom prolog-determinism-specificators
|
||||
'((mercury
|
||||
|
@ -468,7 +472,8 @@ Legal values:
|
|||
"Alist of Prolog determinism specificators used by font locking."
|
||||
:version "24.1"
|
||||
:group 'prolog-font-lock
|
||||
:type 'sexp)
|
||||
:type 'sexp
|
||||
:risky t)
|
||||
|
||||
(defcustom prolog-directives
|
||||
'((mercury
|
||||
|
@ -477,7 +482,8 @@ Legal values:
|
|||
"Alist of Prolog source code directives used by font locking."
|
||||
:version "24.1"
|
||||
:group 'prolog-font-lock
|
||||
:type 'sexp)
|
||||
:type 'sexp
|
||||
:risky t)
|
||||
|
||||
|
||||
;; Keyboard
|
||||
|
@ -563,7 +569,8 @@ the first column (i.e., DCG heads) inserts ` -->' and newline."
|
|||
(or (car names) "prolog"))))
|
||||
"Alist of program names for invoking an inferior Prolog with `run-prolog'."
|
||||
:group 'prolog-inferior
|
||||
:type 'sexp)
|
||||
:type 'sexp
|
||||
:risky t)
|
||||
(defun prolog-program-name ()
|
||||
(prolog-find-value-by-system prolog-program-name))
|
||||
|
||||
|
@ -573,7 +580,8 @@ the first column (i.e., DCG heads) inserts ` -->' and newline."
|
|||
"Alist of switches given to inferior Prolog run with `run-prolog'."
|
||||
:version "24.1"
|
||||
:group 'prolog-inferior
|
||||
:type 'sexp)
|
||||
:type 'sexp
|
||||
:risky t)
|
||||
(defun prolog-program-switches ()
|
||||
(prolog-find-value-by-system prolog-program-switches))
|
||||
|
||||
|
@ -596,7 +604,9 @@ Some parts of the string are replaced:
|
|||
region of a buffer, in which case it is the number of lines before
|
||||
the region."
|
||||
:group 'prolog-inferior
|
||||
:type 'sexp)
|
||||
:type 'sexp
|
||||
:risky t)
|
||||
|
||||
(defun prolog-consult-string ()
|
||||
(prolog-find-value-by-system prolog-consult-string))
|
||||
|
||||
|
@ -621,7 +631,9 @@ Some parts of the string are replaced:
|
|||
If `prolog-program-name' is non-nil, it is a string sent to a Prolog process.
|
||||
If `prolog-program-name' is nil, it is an argument to the `compile' function."
|
||||
:group 'prolog-inferior
|
||||
:type 'sexp)
|
||||
:type 'sexp
|
||||
:risky t)
|
||||
|
||||
(defun prolog-compile-string ()
|
||||
(prolog-find-value-by-system prolog-compile-string))
|
||||
|
||||
|
@ -629,7 +641,8 @@ If `prolog-program-name' is nil, it is an argument to the `compile' function."
|
|||
"Alist of strings that represent end of file for prolog.
|
||||
nil means send actual operating system end of file."
|
||||
:group 'prolog-inferior
|
||||
:type 'sexp)
|
||||
:type 'sexp
|
||||
:risky t)
|
||||
|
||||
(defcustom prolog-prompt-regexp
|
||||
'((eclipse "^[a-zA-Z0-9()]* *\\?- \\|^\\[[a-zA-Z]* [0-9]*\\]:")
|
||||
|
@ -640,7 +653,9 @@ nil means send actual operating system end of file."
|
|||
"Alist of prompts of the prolog system command line."
|
||||
:version "24.1"
|
||||
:group 'prolog-inferior
|
||||
:type 'sexp)
|
||||
:type 'sexp
|
||||
:risky t)
|
||||
|
||||
(defun prolog-prompt-regexp ()
|
||||
(prolog-find-value-by-system prolog-prompt-regexp))
|
||||
|
||||
|
@ -649,7 +664,8 @@ nil means send actual operating system end of file."
|
|||
;; (t "^|: +"))
|
||||
;; "Alist of regexps matching the prompt when consulting `user'."
|
||||
;; :group 'prolog-inferior
|
||||
;; :type 'sexp)
|
||||
;; :type 'sexp
|
||||
;; :risky t)
|
||||
|
||||
(defcustom prolog-debug-on-string "debug.\n"
|
||||
"Predicate for enabling debug mode."
|
||||
|
@ -1020,6 +1036,8 @@ VERSION is of the format (Major . Minor)"
|
|||
|
||||
(define-abbrev-table 'prolog-mode-abbrev-table ())
|
||||
|
||||
;; Becauses this can `eval' its arguments, any variable that gets
|
||||
;; processed by it should be marked as :risky.
|
||||
(defun prolog-find-value-by-system (alist)
|
||||
"Get value from ALIST according to `prolog-system'."
|
||||
(let ((system (or prolog-system
|
||||
|
@ -2341,6 +2359,7 @@ In effect it sets the `fill-prefix' when inside comments and then calls
|
|||
(swi prolog-help-online)
|
||||
(t prolog-help-online))
|
||||
"Alist for the name of the function for finding help on a predicate.")
|
||||
(put 'prolog-help-function 'risky-local-variable t)
|
||||
|
||||
(defun prolog-help-on-predicate ()
|
||||
"Invoke online help on the atom under cursor."
|
||||
|
@ -2598,6 +2617,8 @@ and end of list building."
|
|||
(goto-char (point-max))
|
||||
)
|
||||
|
||||
(declare-function pltrace-on "ext:pltrace" ())
|
||||
|
||||
(defun prolog-enable-sicstus-sd ()
|
||||
"Enable the source level debugging facilities of SICStus 3.7 and later."
|
||||
(interactive)
|
||||
|
@ -2608,21 +2629,22 @@ and end of list building."
|
|||
(progn
|
||||
;; If there is a *prolog* buffer, then call pltrace-on
|
||||
(if (get-buffer "*prolog*")
|
||||
;; Avoid compilation warnings by using eval
|
||||
(eval '(pltrace-on)))
|
||||
(pltrace-on))
|
||||
(setq prolog-use-sicstus-sd t)
|
||||
)))
|
||||
|
||||
(declare-function pltrace-off "ext:pltrace" (&optional remove-process-filter))
|
||||
|
||||
(defun prolog-disable-sicstus-sd ()
|
||||
"Disable the source level debugging facilities of SICStus 3.7 and later."
|
||||
(interactive)
|
||||
(require 'pltrace)
|
||||
(setq prolog-use-sicstus-sd nil)
|
||||
;; Remove the hook
|
||||
(remove-hook 'prolog-inferior-mode-hook 'pltrace-on)
|
||||
;; If there is a *prolog* buffer, then call pltrace-off
|
||||
(if (get-buffer "*prolog*")
|
||||
;; Avoid compile warnings by using eval
|
||||
(eval '(pltrace-off))))
|
||||
(pltrace-off)))
|
||||
|
||||
(defun prolog-toggle-sicstus-sd ()
|
||||
;; FIXME: Use define-minor-mode.
|
||||
|
|
|
@ -854,6 +854,7 @@ and just use etags."
|
|||
(declare-function semantic-symref-find-references-by-name "semantic/symref")
|
||||
(declare-function semantic-find-file-noselect "semantic/fw")
|
||||
(declare-function grep-expand-template "grep")
|
||||
(defvar ede-minor-mode) ;; ede.el
|
||||
|
||||
(defun xref-collect-references (symbol dir)
|
||||
"Collect references to SYMBOL inside DIR.
|
||||
|
@ -948,6 +949,9 @@ IGNORES is a list of glob patterns."
|
|||
(xref--find-ignores-arguments ignores dir)))
|
||||
|
||||
(defun xref--find-ignores-arguments (ignores dir)
|
||||
"Convert IGNORES and DIR to a list of arguments for 'find'.
|
||||
IGNORES is a list of glob patterns. DIR is an absolute
|
||||
directory, used as the root of the ignore globs."
|
||||
;; `shell-quote-argument' quotes the tilde as well.
|
||||
(cl-assert (not (string-match-p "\\`~" dir)))
|
||||
(when ignores
|
||||
|
|
|
@ -570,7 +570,7 @@
|
|||
;; Maybe provide complete XEmacs support in the future however the
|
||||
;; "extent" is the single largest obstacle lying ahead, read the
|
||||
;; document in Emacs info.
|
||||
;; (eval '(progn (require 'info) (Info-find-node "elisp" "Not Intervals")))
|
||||
;; (progn (require 'info) (Info-find-node "elisp" "Not Intervals"))
|
||||
;;
|
||||
;;
|
||||
;; ---------------
|
||||
|
|
|
@ -714,7 +714,7 @@ It is based on `log-edit-mode', and has Git-specific extensions.")
|
|||
"cat-file" "blob" (concat (if rev rev "HEAD") ":" fullname))))
|
||||
|
||||
(defun vc-git-find-ignore-file (file)
|
||||
"Return the root directory of the repository of FILE."
|
||||
"Return the git ignore file that controls FILE."
|
||||
(expand-file-name ".gitignore"
|
||||
(vc-git-root file)))
|
||||
|
||||
|
|
|
@ -647,10 +647,14 @@ REV is the revision to check out into WORKFILE."
|
|||
;; Follows vc-exec-after.
|
||||
(declare-function vc-set-async-update "vc-dispatcher" (process-buffer))
|
||||
|
||||
(defun vc-hg-dir-status-files (dir files update-function)
|
||||
(apply 'vc-hg-command (current-buffer) 'async dir "status"
|
||||
(concat "-mardu" (if files "i"))
|
||||
"-C" files)
|
||||
(defun vc-hg-dir-status-files (_dir files update-function)
|
||||
;; XXX: We can't pass DIR directly to 'hg status' because that
|
||||
;; returns all ignored files if FILES is non-nil (bug#22481).
|
||||
;; If honoring DIR ever becomes important, try using '-I DIR/'.
|
||||
(vc-hg-command (current-buffer) 'async files
|
||||
"status"
|
||||
(concat "-mardu" (if files "i"))
|
||||
"-C")
|
||||
(vc-run-delayed
|
||||
(vc-hg-after-dir-status update-function)))
|
||||
|
||||
|
|
|
@ -102,6 +102,10 @@ switches."
|
|||
"Return the administrative directory of FILE."
|
||||
(expand-file-name vc-mtn-admin-dir (vc-mtn-root file)))
|
||||
|
||||
(defun vc-mtn-find-ignore-file (file)
|
||||
"Return the mtn ignore file that controls FILE."
|
||||
(expand-file-name ".mtnignore" (vc-mtn-root file)))
|
||||
|
||||
(defun vc-mtn-registered (file)
|
||||
(let ((root (vc-mtn-root file)))
|
||||
(when root
|
||||
|
|
|
@ -2034,7 +2034,7 @@ has one, and a window at the bottom of the frame otherwise.
|
|||
Optional argument MINI nil means to return the minibuffer window
|
||||
if and only if it is currently active. MINI non-nil means to
|
||||
return the minibuffer window even when it's not active. However,
|
||||
if WRAP non-nil, always act as if MINI were nil.
|
||||
if WRAP is non-nil, always act as if MINI were nil.
|
||||
|
||||
Return nil if no suitable window can be found."
|
||||
(setq window (window-normalize-window window t))
|
||||
|
|
|
@ -57,6 +57,7 @@ The possible values are: `native' or `image'."
|
|||
(declare-function xwidget-view-model "xwidget.c" (xwidget-view))
|
||||
(declare-function delete-xwidget-view "xwidget.c" (xwidget-view))
|
||||
(declare-function get-buffer-xwidgets "xwidget.c" (buffer))
|
||||
(declare-function xwidget-query-on-exit-flag "xwidget.c" (xwidget))
|
||||
|
||||
(defun xwidget-insert (pos type title width height &optional args)
|
||||
"Insert an xwidget at position POS.
|
||||
|
@ -97,6 +98,8 @@ Interactively, URL defaults to the string looking like a url around point."
|
|||
(browse-url-interactive-arg "xwidget-webkit URL: "
|
||||
;;(xwidget-webkit-current-url)
|
||||
)))
|
||||
(or (featurep 'xwidget-internal)
|
||||
(user-error "Your Emacs was not compiled with xwidgets support"))
|
||||
(when (stringp url)
|
||||
(if new-session
|
||||
(xwidget-webkit-new-session url)
|
||||
|
|
76
src/alloc.c
76
src/alloc.c
|
@ -92,6 +92,18 @@ static bool valgrind_p;
|
|||
#include "w32heap.h" /* for sbrk */
|
||||
#endif
|
||||
|
||||
#if defined DOUG_LEA_MALLOC || defined GNU_LINUX
|
||||
/* The address where the heap starts. */
|
||||
void *
|
||||
my_heap_start (void)
|
||||
{
|
||||
static void *start;
|
||||
if (! start)
|
||||
start = sbrk (0);
|
||||
return start;
|
||||
}
|
||||
#endif
|
||||
|
||||
#ifdef DOUG_LEA_MALLOC
|
||||
|
||||
#include <malloc.h>
|
||||
|
@ -101,7 +113,69 @@ static bool valgrind_p;
|
|||
|
||||
#define MMAP_MAX_AREAS 100000000
|
||||
|
||||
#endif /* not DOUG_LEA_MALLOC */
|
||||
/* A pointer to the memory allocated that copies that static data
|
||||
inside glibc's malloc. */
|
||||
static void *malloc_state_ptr;
|
||||
|
||||
/* Get and free this pointer; useful around unexec. */
|
||||
void
|
||||
alloc_unexec_pre (void)
|
||||
{
|
||||
malloc_state_ptr = malloc_get_state ();
|
||||
}
|
||||
void
|
||||
alloc_unexec_post (void)
|
||||
{
|
||||
free (malloc_state_ptr);
|
||||
}
|
||||
|
||||
/* Restore the dumped malloc state. Because malloc can be invoked
|
||||
even before main (e.g. by the dynamic linker), the dumped malloc
|
||||
state must be restored as early as possible using this special hook. */
|
||||
static void
|
||||
malloc_initialize_hook (void)
|
||||
{
|
||||
static bool malloc_using_checking;
|
||||
|
||||
if (! initialized)
|
||||
{
|
||||
my_heap_start ();
|
||||
malloc_using_checking = getenv ("MALLOC_CHECK_") != NULL;
|
||||
}
|
||||
else
|
||||
{
|
||||
if (!malloc_using_checking)
|
||||
{
|
||||
/* Work around a bug in glibc's malloc. MALLOC_CHECK_ must be
|
||||
ignored if the heap to be restored was constructed without
|
||||
malloc checking. Can't use unsetenv, since that calls malloc. */
|
||||
char **p = environ;
|
||||
if (p)
|
||||
for (; *p; p++)
|
||||
if (strncmp (*p, "MALLOC_CHECK_=", 14) == 0)
|
||||
{
|
||||
do
|
||||
*p = p[1];
|
||||
while (*++p);
|
||||
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
malloc_set_state (malloc_state_ptr);
|
||||
# ifndef XMALLOC_OVERRUN_CHECK
|
||||
alloc_unexec_post ();
|
||||
# endif
|
||||
}
|
||||
}
|
||||
|
||||
# ifndef __MALLOC_HOOK_VOLATILE
|
||||
# define __MALLOC_HOOK_VOLATILE
|
||||
# endif
|
||||
voidfuncptr __MALLOC_HOOK_VOLATILE __malloc_initialize_hook
|
||||
= malloc_initialize_hook;
|
||||
|
||||
#endif
|
||||
|
||||
/* Mark, unmark, query mark bit of a Lisp string. S must be a pointer
|
||||
to a struct Lisp_String. */
|
||||
|
|
78
src/emacs.c
78
src/emacs.c
|
@ -133,20 +133,7 @@ bool might_dump;
|
|||
extern void unexec_init_emacs_zone (void);
|
||||
#endif
|
||||
|
||||
#ifdef DOUG_LEA_MALLOC
|
||||
/* Preserves a pointer to the memory allocated that copies that
|
||||
static data inside glibc's malloc. */
|
||||
static void *malloc_state_ptr;
|
||||
/* From glibc, a routine that returns a copy of the malloc internal state. */
|
||||
extern void *malloc_get_state (void);
|
||||
/* From glibc, a routine that overwrites the malloc internal state. */
|
||||
extern int malloc_set_state (void *);
|
||||
/* True if the MALLOC_CHECK_ environment variable was set while
|
||||
dumping. Used to work around a bug in glibc's malloc. */
|
||||
static bool malloc_using_checking;
|
||||
#elif defined HAVE_PTHREAD && !defined SYSTEM_MALLOC && !defined HYBRID_MALLOC
|
||||
extern void malloc_enable_thread (void);
|
||||
#endif
|
||||
|
||||
/* If true, Emacs should not attempt to use a window-specific code,
|
||||
but instead should use the virtual terminal under which it was started. */
|
||||
|
@ -165,11 +152,6 @@ bool display_arg;
|
|||
Tells GC how to save a copy of the stack. */
|
||||
char *stack_bottom;
|
||||
|
||||
#if defined (DOUG_LEA_MALLOC) || defined (GNU_LINUX)
|
||||
/* The address where the heap starts (from the first sbrk (0) call). */
|
||||
static void *my_heap_start;
|
||||
#endif
|
||||
|
||||
#ifdef GNU_LINUX
|
||||
/* The gap between BSS end and heap start as far as we can tell. */
|
||||
static uprintmax_t heap_bss_diff;
|
||||
|
@ -654,51 +636,6 @@ argmatch (char **argv, int argc, const char *sstr, const char *lstr,
|
|||
}
|
||||
}
|
||||
|
||||
#ifdef DOUG_LEA_MALLOC
|
||||
|
||||
/* malloc can be invoked even before main (e.g. by the dynamic
|
||||
linker), so the dumped malloc state must be restored as early as
|
||||
possible using this special hook. */
|
||||
|
||||
static void
|
||||
malloc_initialize_hook (void)
|
||||
{
|
||||
if (initialized)
|
||||
{
|
||||
if (!malloc_using_checking)
|
||||
/* Work around a bug in glibc's malloc. MALLOC_CHECK_ must be
|
||||
ignored if the heap to be restored was constructed without
|
||||
malloc checking. Can't use unsetenv, since that calls malloc. */
|
||||
{
|
||||
char **p;
|
||||
|
||||
for (p = environ; p && *p; p++)
|
||||
if (strncmp (*p, "MALLOC_CHECK_=", 14) == 0)
|
||||
{
|
||||
do
|
||||
*p = p[1];
|
||||
while (*++p);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
malloc_set_state (malloc_state_ptr);
|
||||
#ifndef XMALLOC_OVERRUN_CHECK
|
||||
free (malloc_state_ptr);
|
||||
#endif
|
||||
}
|
||||
else
|
||||
{
|
||||
if (my_heap_start == 0)
|
||||
my_heap_start = sbrk (0);
|
||||
malloc_using_checking = getenv ("MALLOC_CHECK_") != NULL;
|
||||
}
|
||||
}
|
||||
|
||||
void (*__malloc_initialize_hook) (void) EXTERNALLY_VISIBLE = malloc_initialize_hook;
|
||||
|
||||
#endif /* DOUG_LEA_MALLOC */
|
||||
|
||||
/* Close standard output and standard error, reporting any write
|
||||
errors as best we can. This is intended for use with atexit. */
|
||||
static void
|
||||
|
@ -746,10 +683,8 @@ main (int argc, char **argv)
|
|||
#ifdef GNU_LINUX
|
||||
if (!initialized)
|
||||
{
|
||||
if (my_heap_start == 0)
|
||||
my_heap_start = sbrk (0);
|
||||
|
||||
heap_bss_diff = (char *)my_heap_start - max (my_endbss, my_endbss_static);
|
||||
char *heap_start = my_heap_start ();
|
||||
heap_bss_diff = heap_start - max (my_endbss, my_endbss_static);
|
||||
}
|
||||
#endif
|
||||
|
||||
|
@ -2148,15 +2083,12 @@ You must run Emacs in batch mode in order to dump it. */)
|
|||
memory_warnings (my_edata, malloc_warning);
|
||||
#endif /* not WINDOWSNT */
|
||||
#endif /* not SYSTEM_MALLOC and not HYBRID_MALLOC */
|
||||
#ifdef DOUG_LEA_MALLOC
|
||||
malloc_state_ptr = malloc_get_state ();
|
||||
#endif
|
||||
|
||||
alloc_unexec_pre ();
|
||||
|
||||
unexec (SSDATA (filename), !NILP (symfile) ? SSDATA (symfile) : 0);
|
||||
|
||||
#ifdef DOUG_LEA_MALLOC
|
||||
free (malloc_state_ptr);
|
||||
#endif
|
||||
alloc_unexec_post ();
|
||||
|
||||
#ifdef WINDOWSNT
|
||||
Vlibrary_cache = Qnil;
|
||||
|
|
|
@ -7141,9 +7141,6 @@ struct user_signal_info
|
|||
/* List of user signals. */
|
||||
static struct user_signal_info *user_signals = NULL;
|
||||
|
||||
/* Function called when handling user signals. */
|
||||
void (*handle_user_signal_hook) (int);
|
||||
|
||||
void
|
||||
add_user_signal (int sig, const char *name)
|
||||
{
|
||||
|
@ -7192,8 +7189,6 @@ handle_user_signal (int sig)
|
|||
}
|
||||
|
||||
p->npending++;
|
||||
if (handle_user_signal_hook)
|
||||
(*handle_user_signal_hook) (sig);
|
||||
#ifdef USABLE_SIGIO
|
||||
if (interrupt_input)
|
||||
handle_input_available_signal (sig);
|
||||
|
|
|
@ -415,8 +415,6 @@ extern void unuse_menu_items (void);
|
|||
#define EVENT_HEAD_KIND(event_head) \
|
||||
(Fget ((event_head), Qevent_kind))
|
||||
|
||||
extern void (*handle_user_signal_hook) (int);
|
||||
|
||||
/* True while doing kbd input. */
|
||||
extern bool waiting_for_input;
|
||||
|
||||
|
|
|
@ -3590,6 +3590,7 @@ extern void parse_str_as_multibyte (const unsigned char *, ptrdiff_t,
|
|||
ptrdiff_t *, ptrdiff_t *);
|
||||
|
||||
/* Defined in alloc.c. */
|
||||
extern void *my_heap_start (void);
|
||||
extern void check_pure_size (void);
|
||||
extern void free_misc (Lisp_Object);
|
||||
extern void allocate_string_data (struct Lisp_String *, EMACS_INT, EMACS_INT);
|
||||
|
@ -3601,6 +3602,13 @@ extern void mark_object (Lisp_Object);
|
|||
#if defined REL_ALLOC && !defined SYSTEM_MALLOC && !defined HYBRID_MALLOC
|
||||
extern void refill_memory_reserve (void);
|
||||
#endif
|
||||
#ifdef DOUG_LEA_MALLOC
|
||||
extern void alloc_unexec_pre (void);
|
||||
extern void alloc_unexec_post (void);
|
||||
#else
|
||||
INLINE void alloc_unexec_pre (void) {}
|
||||
INLINE void alloc_unexec_post (void) {}
|
||||
#endif
|
||||
extern const char *pending_malloc_warning;
|
||||
extern Lisp_Object zero_vector;
|
||||
extern Lisp_Object *stack_base;
|
||||
|
|
11
test/etags/go-src/test.go
Normal file
11
test/etags/go-src/test.go
Normal file
|
@ -0,0 +1,11 @@
|
|||
package main
|
||||
|
||||
import "fmt"
|
||||
|
||||
func say(msg string) {
|
||||
fmt.Println(msg)
|
||||
}
|
||||
|
||||
func main() {
|
||||
say("Hello, Emacs!")
|
||||
}
|
34
test/etags/go-src/test1.go
Normal file
34
test/etags/go-src/test1.go
Normal file
|
@ -0,0 +1,34 @@
|
|||
package main
|
||||
|
||||
import "fmt"
|
||||
|
||||
type plus interface {
|
||||
PrintAdd()
|
||||
}
|
||||
|
||||
type str struct {
|
||||
a, b string
|
||||
}
|
||||
|
||||
type intNumber struct {
|
||||
a, b int
|
||||
}
|
||||
|
||||
func (s str) PrintAdd() {
|
||||
fmt.Println(s.a + s.b)
|
||||
}
|
||||
|
||||
func (n intNumber) PrintAdd() {
|
||||
fmt.Println(n.a + n.b)
|
||||
}
|
||||
|
||||
func test(p plus) {
|
||||
p.PrintAdd()
|
||||
}
|
||||
|
||||
func main() {
|
||||
s := str{a: "Hello,", b: "Emacs!"}
|
||||
number := intNumber{a: 1, b: 2}
|
||||
test(number)
|
||||
test(s)
|
||||
}
|
|
@ -227,6 +227,8 @@ A cp-src/c.C 117
|
|||
A cp-src/fail.C 7
|
||||
A cp-src/fail.C 23
|
||||
A ruby-src/test1.ruby /^class A$/
|
||||
A ruby-src/test1.ruby /^module A$/
|
||||
ABC ruby-src/test1.ruby 11
|
||||
ADDRESS c-src/emacs/src/gmalloc.c /^#define ADDRESS(B) ((void *) (((B) - 1) * BLOCKSIZ/
|
||||
ALIGNOF_STRUCT_LISP_VECTOR c-src/emacs/src/lisp.h 1378
|
||||
ALLOCATED_BEFORE_DUMPING c-src/emacs/src/gmalloc.c /^#define ALLOCATED_BEFORE_DUMPING(P) \\$/
|
||||
|
@ -289,6 +291,7 @@ B cp-src/c.C /^void B::B() {}$/
|
|||
B cp-src/c.C 122
|
||||
B cp-src/fail.C 8
|
||||
B cp-src/fail.C 24
|
||||
B ruby-src/test1.ruby /^ class B$/
|
||||
BE_Node cp-src/c.C /^void BE_Node::BE_Node() {}$/
|
||||
BE_Node cp-src/c.C 77
|
||||
BITS_PER_BITS_WORD c-src/emacs/src/lisp.h 125
|
||||
|
@ -438,7 +441,6 @@ Cjava_entries c-src/etags.c /^Cjava_entries (FILE *inf)$/
|
|||
Cjava_help c-src/etags.c 551
|
||||
Cjava_suffixes c-src/etags.c 549
|
||||
ClassExample ruby-src/test.rb /^ class ClassExample$/
|
||||
ClassExample.class_method ruby-src/test.rb /^ def ClassExample.class_method$/
|
||||
Clear/p ada-src/2ataspri.adb /^ procedure Clear (Cell : in out TAS_Cell) is$/
|
||||
Clear/p ada-src/2ataspri.ads /^ procedure Clear (Cell : in out TAS_Cell)/
|
||||
Cobol_help c-src/etags.c 558
|
||||
|
@ -458,6 +460,7 @@ Condition_Variable/t ada-src/2ataspri.ads /^ type Condition_Variable is privat
|
|||
Condition_Variable/t ada-src/2ataspri.ads /^ type Condition_Variable is$/
|
||||
Configure pyt-src/server.py /^class Configure(Frame, ControlEdit):$/
|
||||
ConfirmQuit pyt-src/server.py /^def ConfirmQuit(frame, context):$/
|
||||
Constant ruby-src/test1.ruby 26
|
||||
ControlEdit pyt-src/server.py /^class ControlEdit(Frame):$/
|
||||
Controls pyt-src/server.py /^class Controls:$/
|
||||
CopyTextString pas-src/common.pas /^function CopyTextString;(*($/
|
||||
|
@ -939,12 +942,15 @@ Metags c-src/etags.c /^main (int argc, char **argv)$/
|
|||
Mfail cp-src/fail.C /^main()$/
|
||||
Mkai-test.pl perl-src/kai-test.pl /^package main;$/
|
||||
ModuleExample ruby-src/test.rb /^module ModuleExample$/
|
||||
ModuleExample.module_class_method ruby-src/test.rb /^ def ModuleExample.module_class_method$/
|
||||
More_Lisp_Bits c-src/emacs/src/lisp.h 801
|
||||
MoveLayerAfter lua-src/allegro.lua /^function MoveLayerAfter (this_one)$/
|
||||
MoveLayerBefore lua-src/allegro.lua /^function MoveLayerBefore (this_one)$/
|
||||
MoveLayerBottom lua-src/allegro.lua /^function MoveLayerBottom ()$/
|
||||
MoveLayerTop lua-src/allegro.lua /^function MoveLayerTop ()$/
|
||||
Mtest.go go-src/test.go 1
|
||||
Mtest.go go-src/test.go /^func main() {$/
|
||||
Mtest1.go go-src/test1.go 1
|
||||
Mtest1.go go-src/test1.go /^func main() {$/
|
||||
Mx.cc cp-src/x.cc /^main(int argc, char *argv[])$/
|
||||
NAME y-src/cccp.c 8
|
||||
NATNUMP c-src/emacs/src/lisp.h /^NATNUMP (Lisp_Object x)$/
|
||||
|
@ -1075,6 +1081,8 @@ Pkg1_Proc2/p ada-src/waroquiers.ada /^ procedure Pkg1_Proc2 (I : Integer);$/
|
|||
Pkg1_Proc2/p ada-src/waroquiers.ada /^ procedure Pkg1_Proc2 (I : Integer) is$/
|
||||
PostControls pyt-src/server.py /^ def PostControls(self):$/
|
||||
Pre_Call_State/t ada-src/2ataspri.ads /^ type Pre_Call_State is new System.Address;$/
|
||||
PrintAdd go-src/test1.go /^func (s str) PrintAdd() {$/
|
||||
PrintAdd go-src/test1.go /^func (n intNumber) PrintAdd() {$/
|
||||
Private objc-src/Subprocess.m /^@interface Subprocess(Private)$/
|
||||
Private_T/b ada-src/etags-test-for.ada /^ task body Private_T is$/
|
||||
Private_T/b ada-src/waroquiers.ada /^ task body Private_T is$/
|
||||
|
@ -1100,7 +1108,7 @@ Python_help c-src/etags.c 660
|
|||
Python_suffixes c-src/etags.c 658
|
||||
QUIT c-src/emacs/src/lisp.h 3101
|
||||
QUITP c-src/emacs/src/lisp.h 3112
|
||||
Qpre_abbrev_expand_hook c-src/abbrev.c 82
|
||||
Qpre_abbrev_expand_hook c-src/abbrev.c 83
|
||||
RANGED_INTEGERP c-src/emacs/src/lisp.h /^RANGED_INTEGERP (intmax_t lo, Lisp_Object x, intma/
|
||||
RCSid objc-src/PackInsp.m 30
|
||||
READABLE_EVENTS_DO_TIMERS_NOW c-src/emacs/src/keyboard.c 346
|
||||
|
@ -1425,16 +1433,16 @@ VECTORP c-src/emacs/src/lisp.h /^VECTORP (Lisp_Object x)$/
|
|||
VERSION c-src/etags.c 789
|
||||
VERSION erl-src/gs_dialog.erl /^-define(VERSION, '2001.1101').$/
|
||||
VERSION objc-src/PackInsp.m 34
|
||||
Vabbrev_start_location c-src/abbrev.c 62
|
||||
Vabbrev_start_location_buffer c-src/abbrev.c 65
|
||||
Vabbrev_table_name_list c-src/abbrev.c 42
|
||||
Vabbrev_start_location c-src/abbrev.c 63
|
||||
Vabbrev_start_location_buffer c-src/abbrev.c 66
|
||||
Vabbrev_table_name_list c-src/abbrev.c 43
|
||||
ValToNmStr pas-src/common.pas /^function ValToNmStr; (*($/
|
||||
Vfundamental_mode_abbrev_table c-src/abbrev.c 51
|
||||
Vglobal_abbrev_table c-src/abbrev.c 47
|
||||
Vlast_abbrev c-src/abbrev.c 69
|
||||
Vlast_abbrev_text c-src/abbrev.c 74
|
||||
Vfundamental_mode_abbrev_table c-src/abbrev.c 52
|
||||
Vglobal_abbrev_table c-src/abbrev.c 48
|
||||
Vlast_abbrev c-src/abbrev.c 70
|
||||
Vlast_abbrev_text c-src/abbrev.c 75
|
||||
Vlispy_mouse_stem c-src/emacs/src/keyboard.c 5172
|
||||
Vpre_abbrev_expand_hook c-src/abbrev.c 82
|
||||
Vpre_abbrev_expand_hook c-src/abbrev.c 83
|
||||
WAIT_READING_MAX c-src/emacs/src/lisp.h 4281
|
||||
WAIT_READING_MAX c-src/emacs/src/lisp.h 4283
|
||||
WCHAR_TYPE_SIZE cccp.y 99
|
||||
|
@ -1530,9 +1538,9 @@ Y c-src/h.h 100
|
|||
YACC c-src/etags.c 2199
|
||||
YELLOW cp-src/screen.hpp 26
|
||||
YYABORT /usr/share/bison/bison.simple 153
|
||||
YYABORT /usr/share/bison/bison.simple 153
|
||||
YYACCEPT /usr/share/bison/bison.simple 152
|
||||
YYABORT /usr/share/bison/bison.simple 154
|
||||
YYACCEPT /usr/share/bison/bison.simple 152
|
||||
YYACCEPT /usr/share/bison/bison.simple 153
|
||||
YYBACKUP /usr/share/bison/bison.simple /^#define YYBACKUP(Token, Value) \\$/
|
||||
YYBACKUP /usr/share/bison/bison.simple /^#define YYBACKUP(Token, Value) \\$/
|
||||
YYBISON y-src/parse.c 4
|
||||
|
@ -1544,23 +1552,23 @@ YYDPRINTF /usr/share/bison/bison.simple /^# define YYDPRINTF(Args)$/
|
|||
YYDPRINTF /usr/share/bison/bison.simple /^# define YYDPRINTF(Args) \\$/
|
||||
YYDPRINTF /usr/share/bison/bison.simple /^# define YYDPRINTF(Args)$/
|
||||
YYEMPTY /usr/share/bison/bison.simple 150
|
||||
YYEMPTY /usr/share/bison/bison.simple 150
|
||||
YYEOF /usr/share/bison/bison.simple 151
|
||||
YYEMPTY /usr/share/bison/bison.simple 151
|
||||
YYEOF /usr/share/bison/bison.simple 151
|
||||
YYEOF /usr/share/bison/bison.simple 152
|
||||
YYERRCODE /usr/share/bison/bison.simple 178
|
||||
YYERRCODE /usr/share/bison/bison.simple 178
|
||||
YYERROR /usr/share/bison/bison.simple 154
|
||||
YYERRCODE /usr/share/bison/bison.simple 179
|
||||
YYERROR /usr/share/bison/bison.simple 154
|
||||
YYERROR /usr/share/bison/bison.simple 155
|
||||
YYFAIL /usr/share/bison/bison.simple 158
|
||||
YYFAIL /usr/share/bison/bison.simple 158
|
||||
YYFAIL /usr/share/bison/bison.simple 159
|
||||
YYFINAL parse.y 93
|
||||
YYFINAL cccp.y 127
|
||||
YYFLAG parse.y 94
|
||||
YYFLAG cccp.y 128
|
||||
YYFPRINTF /usr/share/bison/bison.simple 225
|
||||
YYFPRINTF /usr/share/bison/bison.simple 225
|
||||
YYINITDEPTH /usr/share/bison/bison.simple 244
|
||||
YYFPRINTF /usr/share/bison/bison.simple 226
|
||||
YYINITDEPTH /usr/share/bison/bison.simple 244
|
||||
YYINITDEPTH /usr/share/bison/bison.simple 245
|
||||
YYLAST parse.y 266
|
||||
YYLAST cccp.y 274
|
||||
YYLEX /usr/share/bison/bison.simple 200
|
||||
|
@ -1568,17 +1576,17 @@ YYLEX /usr/share/bison/bison.simple 202
|
|||
YYLEX /usr/share/bison/bison.simple 206
|
||||
YYLEX /usr/share/bison/bison.simple 208
|
||||
YYLEX /usr/share/bison/bison.simple 212
|
||||
YYLEX /usr/share/bison/bison.simple 200
|
||||
YYLEX /usr/share/bison/bison.simple 202
|
||||
YYLEX /usr/share/bison/bison.simple 206
|
||||
YYLEX /usr/share/bison/bison.simple 208
|
||||
YYLEX /usr/share/bison/bison.simple 212
|
||||
YYLEX /usr/share/bison/bison.simple 201
|
||||
YYLEX /usr/share/bison/bison.simple 203
|
||||
YYLEX /usr/share/bison/bison.simple 207
|
||||
YYLEX /usr/share/bison/bison.simple 209
|
||||
YYLEX /usr/share/bison/bison.simple 213
|
||||
YYLLOC_DEFAULT /usr/share/bison/bison.simple /^# define YYLLOC_DEFAULT(Current, Rhs, N) \\$/
|
||||
YYLLOC_DEFAULT /usr/share/bison/bison.simple /^# define YYLLOC_DEFAULT(Current, Rhs, N) \\$/
|
||||
YYMAXDEPTH /usr/share/bison/bison.simple 255
|
||||
YYMAXDEPTH /usr/share/bison/bison.simple 259
|
||||
YYMAXDEPTH /usr/share/bison/bison.simple 255
|
||||
YYMAXDEPTH /usr/share/bison/bison.simple 259
|
||||
YYMAXDEPTH /usr/share/bison/bison.simple 256
|
||||
YYMAXDEPTH /usr/share/bison/bison.simple 260
|
||||
YYNTBASE parse.y 95
|
||||
YYNTBASE cccp.y 129
|
||||
YYPARSE_PARAM_ARG /usr/share/bison/bison.simple 351
|
||||
|
@ -1608,23 +1616,23 @@ YYSIZE_T /usr/share/bison/bison.simple 131
|
|||
YYSIZE_T /usr/share/bison/bison.simple 136
|
||||
YYSIZE_T /usr/share/bison/bison.simple 140
|
||||
YYSIZE_T /usr/share/bison/bison.simple 145
|
||||
YYSIZE_T /usr/share/bison/bison.simple 51
|
||||
YYSIZE_T /usr/share/bison/bison.simple 56
|
||||
YYSIZE_T /usr/share/bison/bison.simple 71
|
||||
YYSIZE_T /usr/share/bison/bison.simple 75
|
||||
YYSIZE_T /usr/share/bison/bison.simple 128
|
||||
YYSIZE_T /usr/share/bison/bison.simple 131
|
||||
YYSIZE_T /usr/share/bison/bison.simple 136
|
||||
YYSIZE_T /usr/share/bison/bison.simple 140
|
||||
YYSIZE_T /usr/share/bison/bison.simple 145
|
||||
YYSTACK_ALLOC /usr/share/bison/bison.simple 50
|
||||
YYSTACK_ALLOC /usr/share/bison/bison.simple 55
|
||||
YYSTACK_ALLOC /usr/share/bison/bison.simple 59
|
||||
YYSTACK_ALLOC /usr/share/bison/bison.simple 78
|
||||
YYSIZE_T /usr/share/bison/bison.simple 52
|
||||
YYSIZE_T /usr/share/bison/bison.simple 57
|
||||
YYSIZE_T /usr/share/bison/bison.simple 72
|
||||
YYSIZE_T /usr/share/bison/bison.simple 76
|
||||
YYSIZE_T /usr/share/bison/bison.simple 129
|
||||
YYSIZE_T /usr/share/bison/bison.simple 132
|
||||
YYSIZE_T /usr/share/bison/bison.simple 137
|
||||
YYSIZE_T /usr/share/bison/bison.simple 141
|
||||
YYSIZE_T /usr/share/bison/bison.simple 146
|
||||
YYSTACK_ALLOC /usr/share/bison/bison.simple 50
|
||||
YYSTACK_ALLOC /usr/share/bison/bison.simple 55
|
||||
YYSTACK_ALLOC /usr/share/bison/bison.simple 59
|
||||
YYSTACK_ALLOC /usr/share/bison/bison.simple 78
|
||||
YYSTACK_ALLOC /usr/share/bison/bison.simple 51
|
||||
YYSTACK_ALLOC /usr/share/bison/bison.simple 56
|
||||
YYSTACK_ALLOC /usr/share/bison/bison.simple 60
|
||||
YYSTACK_ALLOC /usr/share/bison/bison.simple 79
|
||||
YYSTACK_BYTES /usr/share/bison/bison.simple /^# define YYSTACK_BYTES(N) \\$/
|
||||
YYSTACK_BYTES /usr/share/bison/bison.simple /^# define YYSTACK_BYTES(N) \\$/
|
||||
YYSTACK_BYTES /usr/share/bison/bison.simple /^# define YYSTACK_BYTES(N) \\$/
|
||||
|
@ -1632,9 +1640,9 @@ YYSTACK_BYTES /usr/share/bison/bison.simple /^# define YYSTACK_BYTES(N) \\$/
|
|||
YYSTACK_FREE /usr/share/bison/bison.simple /^# define YYSTACK_FREE(Ptr) do { \/* empty *\/; } wh/
|
||||
YYSTACK_FREE /usr/share/bison/bison.simple 79
|
||||
YYSTACK_FREE /usr/share/bison/bison.simple /^# define YYSTACK_FREE(Ptr) do { \/* empty *\/; } wh/
|
||||
YYSTACK_FREE /usr/share/bison/bison.simple 79
|
||||
YYSTACK_GAP_MAX /usr/share/bison/bison.simple 93
|
||||
YYSTACK_FREE /usr/share/bison/bison.simple 80
|
||||
YYSTACK_GAP_MAX /usr/share/bison/bison.simple 93
|
||||
YYSTACK_GAP_MAX /usr/share/bison/bison.simple 94
|
||||
YYSTACK_RELOCATE /usr/share/bison/bison.simple /^# define YYSTACK_RELOCATE(Type, Stack) \\$/
|
||||
YYSTACK_RELOCATE /usr/share/bison/bison.simple 548
|
||||
YYSTACK_RELOCATE /usr/share/bison/bison.simple /^# define YYSTACK_RELOCATE(Type, Stack) \\$/
|
||||
|
@ -1650,7 +1658,7 @@ YYSTYPE parse.y 72
|
|||
YYSTYPE parse.y 85
|
||||
YYSTYPE cccp.y 119
|
||||
YYTERROR /usr/share/bison/bison.simple 177
|
||||
YYTERROR /usr/share/bison/bison.simple 177
|
||||
YYTERROR /usr/share/bison/bison.simple 178
|
||||
YYTRANSLATE parse.y /^#define YYTRANSLATE(x) ((unsigned)(x) <= 278 ? yyt/
|
||||
YYTRANSLATE cccp.y /^#define YYTRANSLATE(x) ((unsigned)(x) <= 269 ? yyt/
|
||||
YY_DECL_NON_LSP_VARIABLES /usr/share/bison/bison.simple 374
|
||||
|
@ -2351,6 +2359,7 @@ __str__ pyt-src/server.py /^ def __str__(self):$/
|
|||
__up c.c 160
|
||||
_aligned_blocks c-src/emacs/src/gmalloc.c 1004
|
||||
_aligned_blocks_mutex c-src/emacs/src/gmalloc.c 518
|
||||
_bar? ruby-src/test1.ruby /^ def self._bar?(abc)$/
|
||||
_bytes_free c-src/emacs/src/gmalloc.c 376
|
||||
_bytes_used c-src/emacs/src/gmalloc.c 374
|
||||
_chunks_free c-src/emacs/src/gmalloc.c 375
|
||||
|
@ -2402,8 +2411,8 @@ aaa c.c 269
|
|||
aaaaaa c-src/h.h 111
|
||||
abbrev-expansion c-src/abbrev.c /^DEFUN ("abbrev-expansion", Fabbrev_expansion, Sabb/
|
||||
abbrev-symbol c-src/abbrev.c /^DEFUN ("abbrev-symbol", Fabbrev_symbol, Sabbrev_sy/
|
||||
abbrev_all_caps c-src/abbrev.c 57
|
||||
abbrevs_changed c-src/abbrev.c 55
|
||||
abbrev_all_caps c-src/abbrev.c 58
|
||||
abbrevs_changed c-src/abbrev.c 56
|
||||
abc c-src/h.h 33
|
||||
abc c-src/h.h 37
|
||||
abort-recursive-edit c-src/emacs/src/keyboard.c /^DEFUN ("abort-recursive-edit", Fabort_recursive_ed/
|
||||
|
@ -2620,10 +2629,7 @@ childDidExit objc-src/Subprocess.m /^- childDidExit$/
|
|||
chunks_free c-src/emacs/src/gmalloc.c 313
|
||||
chunks_used c-src/emacs/src/gmalloc.c 311
|
||||
cjava c-src/etags.c 2936
|
||||
instance_method ruby-src/test.rb /^ def instance_method$/
|
||||
instance_method_equals= ruby-src/test.rb /^ def instance_method_equals=$/
|
||||
instance_method_exclamation! ruby-src/test.rb /^ def instance_method_exclamation!$/
|
||||
instance_method_question? ruby-src/test.rb /^ def instance_method_question?$/
|
||||
class_method ruby-src/test.rb /^ def ClassExample.class_method$/
|
||||
classifyLine php-src/lce_functions.php /^ function classifyLine($line)$/
|
||||
clear cp-src/conway.hpp /^ void clear(void) { alive = 0; }$/
|
||||
clear-abbrev-table c-src/abbrev.c /^DEFUN ("clear-abbrev-table", Fclear_abbrev_table, /
|
||||
|
@ -2956,6 +2962,7 @@ foo f-src/entry.for /^ character*(*) function foo()$/
|
|||
foo f-src/entry.strange_suffix /^ character*(*) function foo()$/
|
||||
foo f-src/entry.strange /^ character*(*) function foo()$/
|
||||
foo php-src/ptest.php /^foo()$/
|
||||
foo! ruby-src/test1.ruby /^ def foo!$/
|
||||
foobar c-src/c.c /^int foobar() {;}$/
|
||||
foobar c.c /^extern void foobar (void) __attribute__ ((section /
|
||||
foobar2 c-src/h.h 20
|
||||
|
@ -3127,9 +3134,14 @@ input_polling_used c-src/emacs/src/keyboard.c /^input_polling_used (void)$/
|
|||
input_was_pending c-src/emacs/src/keyboard.c 287
|
||||
insert-abbrev-table-description c-src/abbrev.c /^DEFUN ("insert-abbrev-table-description", Finsert_/
|
||||
insertname pas-src/common.pas /^function insertname;(*($/
|
||||
instance_method ruby-src/test.rb /^ def instance_method$/
|
||||
instance_method_equals= ruby-src/test.rb /^ def instance_method_equals=$/
|
||||
instance_method_exclamation! ruby-src/test.rb /^ def instance_method_exclamation!$/
|
||||
instance_method_question? ruby-src/test.rb /^ def instance_method_question?$/
|
||||
instr y-src/parse.y 80
|
||||
instr parse.y 80
|
||||
instruct c-src/etags.c 2527
|
||||
intNumber go-src/test1.go 13
|
||||
integer c-src/emacs/src/lisp.h 2127
|
||||
integer cccp.y 113
|
||||
integer y-src/cccp.y 112
|
||||
|
@ -3223,7 +3235,7 @@ lang c-src/etags.c 259
|
|||
lang_names c-src/etags.c 718
|
||||
language c-src/etags.c 199
|
||||
last-tag el-src/emacs/lisp/progmodes/etags.el /^(defvar last-tag nil$/
|
||||
last_abbrev_point c-src/abbrev.c 78
|
||||
last_abbrev_point c-src/abbrev.c 79
|
||||
last_auto_save c-src/emacs/src/keyboard.c 214
|
||||
last_heapinfo c-src/emacs/src/gmalloc.c 402
|
||||
last_mouse_button c-src/emacs/src/keyboard.c 5215
|
||||
|
@ -3450,6 +3462,7 @@ miti html-src/softwarelibero.html /^Sfatiamo alcuni miti$/
|
|||
modifier_names c-src/emacs/src/keyboard.c 6319
|
||||
modifier_symbols c-src/emacs/src/keyboard.c 6327
|
||||
modify_event_symbol c-src/emacs/src/keyboard.c /^modify_event_symbol (ptrdiff_t symbol_num, int mod/
|
||||
module_class_method ruby-src/test.rb /^ def ModuleExample.module_class_method$/
|
||||
module_instance_method ruby-src/test.rb /^ def module_instance_method$/
|
||||
more_aligned_int c.c 165
|
||||
morecore_nolock c-src/emacs/src/gmalloc.c /^morecore_nolock (size_t size)$/
|
||||
|
@ -3732,6 +3745,7 @@ plain_C_suffixes c-src/etags.c 643
|
|||
plainc c-src/etags.c 2934
|
||||
plist c-src/emacs/src/lisp.h 697
|
||||
plus cp-src/functions.cpp /^void Date::plus ( int days , int month , int year /
|
||||
plus go-src/test1.go 5
|
||||
plusvalseq prol-src/natded.prolog /^plusvalseq([]) --> [].$/
|
||||
pointer c-src/emacs/src/lisp.h 2125
|
||||
poll_for_input c-src/emacs/src/keyboard.c /^poll_for_input (struct atimer *timer)$/
|
||||
|
@ -3812,6 +3826,7 @@ quantizing html-src/algrthms.html /^Quantizing the Received$/
|
|||
questo ../c/c.web 34
|
||||
quit_char c-src/emacs/src/keyboard.c 192
|
||||
quit_throw_to_read_char c-src/emacs/src/keyboard.c /^quit_throw_to_read_char (bool from_signal)$/
|
||||
qux= ruby-src/test1.ruby /^ def qux=(tee)$/
|
||||
r0 c-src/sysdep.h 54
|
||||
r1 c-src/sysdep.h 55
|
||||
r_alloc c-src/emacs/src/lisp.h /^extern void *r_alloc (void **, size_t) ATTRIBUTE_A/
|
||||
|
@ -3943,6 +3958,7 @@ save_getcjmp c-src/emacs/src/keyboard.c /^save_getcjmp (sys_jmp_buf temp)$/
|
|||
save_type c-src/emacs/src/lisp.h /^save_type (struct Lisp_Save_Value *v, int n)$/
|
||||
savenstr c-src/etags.c /^savenstr (const char *cp, int len)$/
|
||||
savestr c-src/etags.c /^savestr (const char *cp)$/
|
||||
say go-src/test.go /^func say(msg string) {$/
|
||||
scan_separators c-src/etags.c /^scan_separators (char *name)$/
|
||||
scolonseen c-src/etags.c 2447
|
||||
scratch c-src/sysdep.h 56
|
||||
|
@ -4068,6 +4084,7 @@ step cp-src/clheir.hpp /^ virtual void step(void) { }$/
|
|||
step_everybody cp-src/clheir.cpp /^void step_everybody(void)$/
|
||||
stop_polling c-src/emacs/src/keyboard.c /^stop_polling (void)$/
|
||||
store_user_signal_events c-src/emacs/src/keyboard.c /^store_user_signal_events (void)$/
|
||||
str go-src/test1.go 9
|
||||
strcaseeq c-src/etags.c /^#define strcaseeq(s,t) (assert ((s)!=NULL && (t)!=/
|
||||
streq c-src/etags.c /^#define streq(s,t) (assert ((s)!=NULL || (t)!=NULL/
|
||||
string_intervals c-src/emacs/src/lisp.h /^string_intervals (Lisp_Object s)$/
|
||||
|
@ -4210,6 +4227,7 @@ terminateInput objc-src/Subprocess.m /^- terminateInput$/
|
|||
test c-src/emacs/src/lisp.h 1871
|
||||
test cp-src/c.C 86
|
||||
test erl-src/gs_dialog.erl /^test() ->$/
|
||||
test go-src/test1.go /^func test(p plus) {$/
|
||||
test php-src/ptest.php /^test $/
|
||||
test.me22b lua-src/test.lua /^ local function test.me22b (one)$/
|
||||
test.me_22a lua-src/test.lua /^ function test.me_22a(one, two)$/
|
||||
|
@ -4415,13 +4433,13 @@ y cp-src/clheir.hpp 49
|
|||
y cp-src/clheir.hpp 58
|
||||
y-get-selection-internal c.c /^ Fy_get_selection_internal, Sy_get_selection_/
|
||||
yyalloc /usr/share/bison/bison.simple 83
|
||||
yyalloc /usr/share/bison/bison.simple 83
|
||||
yyalloc /usr/share/bison/bison.simple 84
|
||||
yycheck parse.y 330
|
||||
yycheck cccp.y 301
|
||||
yyclearin /usr/share/bison/bison.simple 149
|
||||
yyclearin /usr/share/bison/bison.simple 149
|
||||
yydebug /usr/share/bison/bison.simple 237
|
||||
yyclearin /usr/share/bison/bison.simple 150
|
||||
yydebug /usr/share/bison/bison.simple 237
|
||||
yydebug /usr/share/bison/bison.simple 238
|
||||
yydefact parse.y 219
|
||||
yydefact cccp.y 239
|
||||
yydefgoto parse.y 237
|
||||
|
@ -4431,7 +4449,7 @@ yyerrhandle /usr/share/bison/bison.simple 848
|
|||
yyerrlab1 /usr/share/bison/bison.simple 823
|
||||
yyerrlab1 /usr/share/bison/bison.simple 823
|
||||
yyerrok /usr/share/bison/bison.simple 148
|
||||
yyerrok /usr/share/bison/bison.simple 148
|
||||
yyerrok /usr/share/bison/bison.simple 149
|
||||
yyerror cccp.y /^yyerror (s)$/
|
||||
yyerror y-src/cccp.y /^yyerror (s)$/
|
||||
yyerrstatus /usr/share/bison/bison.simple 846
|
||||
|
@ -4439,14 +4457,14 @@ yyerrstatus /usr/share/bison/bison.simple 846
|
|||
yylex cccp.y /^yylex ()$/
|
||||
yylex y-src/cccp.y /^yylex ()$/
|
||||
yyls /usr/share/bison/bison.simple 88
|
||||
yyls /usr/share/bison/bison.simple 88
|
||||
yyls /usr/share/bison/bison.simple 89
|
||||
yylsp /usr/share/bison/bison.simple 748
|
||||
yylsp /usr/share/bison/bison.simple 921
|
||||
yylsp /usr/share/bison/bison.simple 748
|
||||
yylsp /usr/share/bison/bison.simple 921
|
||||
yymemcpy /usr/share/bison/bison.simple 264
|
||||
yymemcpy /usr/share/bison/bison.simple /^yymemcpy (char *yyto, const char *yyfrom, YYSIZE_T/
|
||||
yymemcpy /usr/share/bison/bison.simple 264
|
||||
yymemcpy /usr/share/bison/bison.simple 265
|
||||
yymemcpy /usr/share/bison/bison.simple /^yymemcpy (char *yyto, const char *yyfrom, YYSIZE_T/
|
||||
yyn /usr/share/bison/bison.simple 755
|
||||
yyn /usr/share/bison/bison.simple 861
|
||||
|
@ -4487,7 +4505,7 @@ yyrhs cccp.y 174
|
|||
yyrline parse.y 171
|
||||
yyrline cccp.y 195
|
||||
yyss /usr/share/bison/bison.simple 85
|
||||
yyss /usr/share/bison/bison.simple 85
|
||||
yyss /usr/share/bison/bison.simple 86
|
||||
yystate /usr/share/bison/bison.simple 757
|
||||
yystate /usr/share/bison/bison.simple 761
|
||||
yystate /usr/share/bison/bison.simple 875
|
||||
|
@ -4498,11 +4516,11 @@ yystate /usr/share/bison/bison.simple 875
|
|||
yystate /usr/share/bison/bison.simple 924
|
||||
yystpcpy /usr/share/bison/bison.simple 316
|
||||
yystpcpy /usr/share/bison/bison.simple /^yystpcpy (char *yydest, const char *yysrc)$/
|
||||
yystpcpy /usr/share/bison/bison.simple 316
|
||||
yystpcpy /usr/share/bison/bison.simple 317
|
||||
yystpcpy /usr/share/bison/bison.simple /^yystpcpy (char *yydest, const char *yysrc)$/
|
||||
yystrlen /usr/share/bison/bison.simple 293
|
||||
yystrlen /usr/share/bison/bison.simple /^yystrlen (const char *yystr)$/
|
||||
yystrlen /usr/share/bison/bison.simple 293
|
||||
yystrlen /usr/share/bison/bison.simple 294
|
||||
yystrlen /usr/share/bison/bison.simple /^yystrlen (const char *yystr)$/
|
||||
yystype cccp.y 118
|
||||
yytable parse.y 269
|
||||
|
@ -4512,7 +4530,7 @@ yytname cccp.y 208
|
|||
yytranslate parse.y 101
|
||||
yytranslate cccp.y 135
|
||||
yyvs /usr/share/bison/bison.simple 86
|
||||
yyvs /usr/share/bison/bison.simple 86
|
||||
yyvs /usr/share/bison/bison.simple 87
|
||||
yyvsp /usr/share/bison/bison.simple 746
|
||||
yyvsp /usr/share/bison/bison.simple 919
|
||||
yyvsp /usr/share/bison/bison.simple 746
|
||||
|
|
File diff suppressed because it is too large
Load diff
File diff suppressed because it is too large
Load diff
File diff suppressed because it is too large
Load diff
File diff suppressed because it is too large
Load diff
File diff suppressed because it is too large
Load diff
File diff suppressed because it is too large
Load diff
|
@ -11,6 +11,7 @@ ELSRC=$(addprefix ./el-src/,TAGTEST.EL emacs/lisp/progmodes/etags.el)
|
|||
ERLSRC=$(addprefix ./erl-src/,gs_dialog.erl)
|
||||
FORTHSRC=$(addprefix ./forth-src/,test-forth.fth)
|
||||
FSRC=$(addprefix ./f-src/,entry.for entry.strange_suffix entry.strange)
|
||||
GOSRC=$(addprefix ./go-src/,test.go test1.go)
|
||||
HTMLSRC=$(addprefix ./html-src/,softwarelibero.html index.shtml algrthms.html software.html)
|
||||
#JAVASRC=$(addprefix ./java-src/, )
|
||||
LUASRC=$(addprefix ./lua-src/,allegro.lua test.lua)
|
||||
|
@ -27,9 +28,9 @@ RBSRC=$(addprefix ./ruby-src/,test.rb test1.ruby)
|
|||
TEXSRC=$(addprefix ./tex-src/,testenv.tex gzip.texi texinfo.tex nonewline.tex)
|
||||
YSRC=$(addprefix ./y-src/,parse.y parse.c atest.y cccp.c cccp.y)
|
||||
SRCS=${ADASRC} ${ASRC} ${CSRC} ${CPSRC} ${ELSRC} ${ERLSRC} ${FSRC}\
|
||||
${FORTHSRC} ${HTMLSRC} ${JAVASRC} ${LUASRC} ${MAKESRC} ${OBJCSRC}\
|
||||
${OBJCPPSRC} ${PASSRC} ${PHPSRC} ${PERLSRC} ${PSSRC} ${PROLSRC} ${PYTSRC}\
|
||||
${RBSRC} ${TEXSRC} ${YSRC}
|
||||
${FORTHSRC} ${GOSRC} ${HTMLSRC} ${JAVASRC} ${LUASRC} ${MAKESRC}\
|
||||
${OBJCSRC} ${OBJCPPSRC} ${PASSRC} ${PHPSRC} ${PERLSRC} ${PSSRC}\
|
||||
${PROLSRC} ${PYTSRC} ${RBSRC} ${TEXSRC} ${YSRC}
|
||||
NONSRCS=./f-src/entry.strange ./erl-src/lists.erl ./cp-src/clheir.hpp.gz
|
||||
|
||||
ETAGS_PROG=../../../lib-src/etags
|
||||
|
|
|
@ -5,3 +5,25 @@ class A
|
|||
def b()
|
||||
end
|
||||
end
|
||||
|
||||
module A
|
||||
class B
|
||||
ABC = 4
|
||||
|
||||
def foo!
|
||||
end
|
||||
|
||||
def self._bar?(abc)
|
||||
end
|
||||
|
||||
class << self
|
||||
def qux=(tee)
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
A::Constant = 5
|
||||
|
||||
# def foo_in_comment
|
||||
# end
|
||||
|
|
Loading…
Add table
Reference in a new issue