mirror of
https://git.savannah.gnu.org/git/emacs.git
synced 2024-11-26 07:33:47 +00:00
Merge from origin/emacs-26
7efcdf7
(origin/emacs-26) Clarify completion text in the ELisp manual30b0b0e
Fix handling of abbreviated control command in gdb-mi.el5cf282d
Clarify documentation of functions reading character events96281c5
Record :version for built-in variables while dumping82160cf
* src/process.c (connect_network_socket): Fix memory leak. (...6c616e4
* Makefile.in (appdatadir): Use the non-obsolete location "me...9618e16
Better fix for bug#3255030d94e4
Fix Bug#3255057bcdc7
Don't call XGetGeometry for frames without outer X window (Bu...82fc6b6
* lisp/calculator.el: Fix doc typo.ddc7c64
Standardize calc bug reporting instructions Conflicts: lisp/cus-start.el
This commit is contained in:
commit
0407733ef3
@ -192,7 +192,7 @@ x_default_search_path=@x_default_search_path@
|
||||
desktopdir=$(datarootdir)/applications
|
||||
|
||||
# Where the etc/emacs.appdata.xml file is to be installed.
|
||||
appdatadir=$(datarootdir)/appdata
|
||||
appdatadir=$(datarootdir)/metainfo
|
||||
|
||||
# Where the etc/emacs.service file is to be installed.
|
||||
# The system value (typically /usr/lib/systemd/user) can be
|
||||
|
@ -1076,9 +1076,10 @@ the current Emacs session. If a symbol has not yet been so used,
|
||||
@cindex keyboard events
|
||||
|
||||
There are two kinds of input you can get from the keyboard: ordinary
|
||||
keys, and function keys. Ordinary keys correspond to characters; the
|
||||
events they generate are represented in Lisp as characters. The event
|
||||
type of a character event is the character itself (an integer); see
|
||||
keys, and function keys. Ordinary keys correspond to (possibly
|
||||
modified) characters; the events they generate are represented in Lisp
|
||||
as characters. The event type of a character event is the character
|
||||
itself (an integer), which might have some modifier bits set; see
|
||||
@ref{Classifying Events}.
|
||||
|
||||
@cindex modifier bits (of input character)
|
||||
@ -1123,7 +1124,7 @@ for @kbd{%} plus
|
||||
2**26
|
||||
@end ifnottex
|
||||
(assuming the terminal supports non-@acronym{ASCII}
|
||||
control characters).
|
||||
control characters), i.e.@: with the 27th bit set.
|
||||
|
||||
@item shift
|
||||
The
|
||||
@ -1133,8 +1134,8 @@ The
|
||||
@ifnottex
|
||||
2**25
|
||||
@end ifnottex
|
||||
bit in the character code indicates an @acronym{ASCII} control
|
||||
character typed with the shift key held down.
|
||||
bit (the 26th bit) in the character event code indicates an
|
||||
@acronym{ASCII} control character typed with the shift key held down.
|
||||
|
||||
For letters, the basic code itself indicates upper versus lower case;
|
||||
for digits and punctuation, the shift key selects an entirely different
|
||||
@ -1146,7 +1147,7 @@ character with a different basic code. In order to keep within the
|
||||
@ifnottex
|
||||
2**25
|
||||
@end ifnottex
|
||||
bit for those characters.
|
||||
bit for those character events.
|
||||
|
||||
However, @acronym{ASCII} provides no way to distinguish @kbd{C-A} from
|
||||
@kbd{C-a}, so Emacs uses the
|
||||
@ -1167,7 +1168,7 @@ The
|
||||
@ifnottex
|
||||
2**24
|
||||
@end ifnottex
|
||||
bit in the character code indicates a character
|
||||
bit in the character event code indicates a character
|
||||
typed with the hyper key held down.
|
||||
|
||||
@item super
|
||||
@ -1178,7 +1179,7 @@ The
|
||||
@ifnottex
|
||||
2**23
|
||||
@end ifnottex
|
||||
bit in the character code indicates a character
|
||||
bit in the character event code indicates a character
|
||||
typed with the super key held down.
|
||||
|
||||
@item alt
|
||||
@ -1189,9 +1190,9 @@ The
|
||||
@ifnottex
|
||||
2**22
|
||||
@end ifnottex
|
||||
bit in the character code indicates a character typed with the alt key
|
||||
held down. (The key labeled @key{Alt} on most keyboards is actually
|
||||
treated as the meta key, not this.)
|
||||
bit in the character event code indicates a character typed with the
|
||||
alt key held down. (The key labeled @key{Alt} on most keyboards is
|
||||
actually treated as the meta key, not this.)
|
||||
@end table
|
||||
|
||||
It is best to avoid mentioning specific bit numbers in your program.
|
||||
@ -1949,6 +1950,10 @@ Here are some examples:
|
||||
|
||||
The modifiers list for a click event explicitly contains @code{click},
|
||||
but the event symbol name itself does not contain @samp{click}.
|
||||
Similarly, the modifiers list for an @acronym{ASCII} control
|
||||
character, such as @samp{C-a}, contains @code{control}, even though
|
||||
reading such an event via @code{read-char} will return the value 1
|
||||
with the control modifier bit removed.
|
||||
@end defun
|
||||
|
||||
@defun event-basic-type event
|
||||
@ -2545,17 +2550,31 @@ right-arrow function key:
|
||||
@end defun
|
||||
|
||||
@defun read-char &optional prompt inherit-input-method seconds
|
||||
This function reads and returns a character of command input. If the
|
||||
This function reads and returns a character input event. If the
|
||||
user generates an event which is not a character (i.e., a mouse click or
|
||||
function key event), @code{read-char} signals an error. The arguments
|
||||
work as in @code{read-event}.
|
||||
|
||||
In the first example, the user types the character @kbd{1} (@acronym{ASCII}
|
||||
code 49). The second example shows a keyboard macro definition that
|
||||
calls @code{read-char} from the minibuffer using @code{eval-expression}.
|
||||
@code{read-char} reads the keyboard macro's very next character, which
|
||||
is @kbd{1}. Then @code{eval-expression} displays its return value in
|
||||
the echo area.
|
||||
If the event has modifiers, Emacs attempts to resolve them and return
|
||||
the code of the corresponding character. For example, if the user
|
||||
types @kbd{C-a}, the function returns 1, which is the @acronym{ASCII}
|
||||
code of the @samp{C-a} character. If some of the modifiers cannot be
|
||||
reflected in the character code, @code{read-char} leaves the
|
||||
unresolved modifier bits set in the returned event. For example, if
|
||||
the user types @kbd{C-M-a}, the function returns 134217729, 8000001 in
|
||||
hex, i.e.@: @samp{C-a} with the Meta modifier bit set. This value is
|
||||
not a valid character code: it fails the @code{characterp} test
|
||||
(@pxref{Character Codes}). Use @code{event-basic-type}
|
||||
(@pxref{Classifying Events}) to recover the character code with the
|
||||
modifier bits removed; use @code{event-modifiers} to test for
|
||||
modifiers in the character event returned by @code{read-char}.
|
||||
|
||||
In the first example below, the user types the character @kbd{1}
|
||||
(@acronym{ASCII} code 49). The second example shows a keyboard macro
|
||||
definition that calls @code{read-char} from the minibuffer using
|
||||
@code{eval-expression}. @code{read-char} reads the keyboard macro's
|
||||
very next character, which is @kbd{1}. Then @code{eval-expression}
|
||||
displays its return value in the echo area.
|
||||
|
||||
@example
|
||||
@group
|
||||
@ -2577,10 +2596,11 @@ the echo area.
|
||||
@end defun
|
||||
|
||||
@defun read-char-exclusive &optional prompt inherit-input-method seconds
|
||||
This function reads and returns a character of command input. If the
|
||||
user generates an event which is not a character,
|
||||
This function reads and returns a character input event. If the
|
||||
user generates an event which is not a character event,
|
||||
@code{read-char-exclusive} ignores it and reads another event, until it
|
||||
gets a character. The arguments work as in @code{read-event}.
|
||||
gets a character. The arguments work as in @code{read-event}. The
|
||||
returned value may include modifier bits, as with @code{read-char}.
|
||||
@end defun
|
||||
|
||||
None of the above functions suppress quitting.
|
||||
|
@ -556,13 +556,13 @@ brackets.
|
||||
|
||||
@defun text-char-description character
|
||||
This function returns a string describing @var{character} in the
|
||||
standard Emacs notation for characters that appear in text---like
|
||||
@code{single-key-description}, except that control characters are
|
||||
represented with a leading caret (which is how control characters in
|
||||
Emacs buffers are usually displayed). Another difference is that
|
||||
@code{text-char-description} recognizes the 2**7 bit as the Meta
|
||||
character, whereas @code{single-key-description} uses the 2**27 bit
|
||||
for Meta.
|
||||
standard Emacs notation for characters that can appear in text---like
|
||||
@code{single-key-description}, except that the argument must be a
|
||||
valid character code that passes a @code{characterp} test
|
||||
(@pxref{Character Codes}), control characters are represented with a
|
||||
leading caret (which is how control characters in Emacs buffers are
|
||||
usually displayed), and the 2**7 bit is treated as the Meta bit,
|
||||
whereas @code{single-key-description} uses the 2**27 bit for Meta.
|
||||
|
||||
@smallexample
|
||||
@group
|
||||
|
@ -1776,12 +1776,9 @@ flag may be one of the following values.
|
||||
@table @code
|
||||
@item nil
|
||||
This specifies a @code{try-completion} operation. The function should
|
||||
return @code{t} if the specified string is a unique and exact match;
|
||||
if there is more than one match, it should return the common substring
|
||||
of all matches (if the string is an exact match for one completion
|
||||
alternative but also matches other longer alternatives, the return
|
||||
value is the string); if there are no matches, it should return
|
||||
@code{nil}.
|
||||
return @code{nil} if there are no matches; it should return @code{t}
|
||||
if the specified string is a unique and exact match; and it should
|
||||
return the longest common prefix substring of all matches otherwise.
|
||||
|
||||
@item t
|
||||
This specifies an @code{all-completions} operation. The function
|
||||
|
@ -35724,19 +35724,12 @@ The default value of @code{calc-gregorian-switch} is @code{nil}.
|
||||
@appendix Reporting Bugs
|
||||
|
||||
@noindent
|
||||
If you find a bug in Calc, send e-mail to Jay Belanger,
|
||||
|
||||
@example
|
||||
jay.p.belanger@@gmail.com
|
||||
@end example
|
||||
|
||||
@noindent
|
||||
There is an automatic command @kbd{M-x report-calc-bug} which helps
|
||||
If you find a bug in Calc, send e-mail to @email{bug-gnu-emacs@@gnu.org}.
|
||||
There is an automatic command @kbd{M-x report-emacs-bug} which helps
|
||||
you to report bugs. This command prompts you for a brief subject
|
||||
line, then leaves you in a mail editing buffer. Type @kbd{C-c C-c} to
|
||||
send your mail. Make sure your subject line indicates that you are
|
||||
reporting a Calc bug; this command sends mail to the maintainer's
|
||||
regular mailbox.
|
||||
reporting a Calc bug.
|
||||
|
||||
If you have suggestions for additional features for Calc, please send
|
||||
them. Some have dared to suggest that Calc is already top-heavy with
|
||||
@ -35745,7 +35738,7 @@ them right in.
|
||||
|
||||
At the front of the source file, @file{calc.el}, is a list of ideas for
|
||||
future work. If any enthusiastic souls wish to take it upon themselves
|
||||
to work on these, please send a message (using @kbd{M-x report-calc-bug})
|
||||
to work on these, please send a message (using @kbd{M-x report-emacs-bug})
|
||||
so any efforts can be coordinated.
|
||||
|
||||
The latest version of Calc is available from Savannah, in the Emacs
|
||||
|
@ -943,19 +943,9 @@ loaded and the keystroke automatically re-typed."
|
||||
;;; Bug reporting
|
||||
|
||||
;;;###autoload
|
||||
(defun report-calc-bug ()
|
||||
"Report a bug in Calc, the GNU Emacs calculator.
|
||||
Prompts for bug subject. Leaves you in a mail buffer."
|
||||
(interactive)
|
||||
(let ((reporter-prompt-for-summary-p t))
|
||||
(reporter-submit-bug-report calc-bug-address "Calc"
|
||||
nil nil nil
|
||||
"Please describe exactly what actions triggered the bug and the
|
||||
precise symptoms of the bug. If possible, include a backtrace by
|
||||
doing `\\[toggle-debug-on-error]', then reproducing the bug.
|
||||
" )))
|
||||
(define-obsolete-function-alias 'report-calc-bug 'report-emacs-bug "26.2")
|
||||
;;;###autoload
|
||||
(defalias 'calc-report-bug 'report-calc-bug)
|
||||
(define-obsolete-function-alias 'calc-report-bug 'report-emacs-bug "26.2")
|
||||
|
||||
(provide 'calc-misc)
|
||||
|
||||
|
@ -486,8 +486,8 @@ to be identified as that note."
|
||||
"Face used to show the selected portion of a formula."
|
||||
:group 'calc)
|
||||
|
||||
(defvar calc-bug-address "emacs-devel@gnu.org"
|
||||
"Address of the maintainer of Calc, for use by `report-calc-bug'.")
|
||||
(define-obsolete-variable-alias 'calc-bug-address 'report-emacs-bug-address
|
||||
"26.2")
|
||||
|
||||
(defvar calc-scan-for-dels t
|
||||
"If t, scan keymaps to find all DEL-like keys.
|
||||
|
@ -627,7 +627,7 @@ Here are the editing keys:
|
||||
|
||||
These operators are pre-defined:
|
||||
* `+' `-' `*' `/' the common binary operators
|
||||
* `\\' `%' integer division and reminder
|
||||
* `\\' `%' integer division and remainder
|
||||
* `_' `;' postfix unary negation and reciprocal
|
||||
* `^' `L' binary operators for x^y and log(x) in base y
|
||||
* `Q' `!' unary square root and factorial
|
||||
|
@ -711,6 +711,8 @@ since it could result in memory overflow and make Emacs crash."
|
||||
(put symbol 'risky-local-variable (cadr prop)))
|
||||
(if (setq prop (memq :set rest))
|
||||
(put symbol 'custom-set (cadr prop)))
|
||||
;; This is used by describe-variable.
|
||||
(if version (put symbol 'custom-version version))
|
||||
;; Don't re-add to custom-delayed-init-variables post-startup.
|
||||
(unless after-init-time
|
||||
;; Note this is the _only_ initialize property we handle.
|
||||
@ -731,7 +733,6 @@ since it could result in memory overflow and make Emacs crash."
|
||||
(custom-add-to-group group symbol 'custom-variable))
|
||||
;; Set the type.
|
||||
(put symbol 'custom-type type)
|
||||
(if version (put symbol 'custom-version version))
|
||||
(while rest
|
||||
(setq prop (car rest)
|
||||
propval (cadr rest)
|
||||
|
@ -1954,7 +1954,6 @@ For definition of that list see `tramp-set-completion-function'."
|
||||
;; The method related defaults.
|
||||
(cdr (assoc method tramp-completion-function-alist))))
|
||||
|
||||
|
||||
;;; Fontification of `read-file-name':
|
||||
|
||||
(defvar tramp-rfn-eshadow-overlay)
|
||||
@ -1964,11 +1963,11 @@ For definition of that list see `tramp-set-completion-function'."
|
||||
"Set up a minibuffer for `file-name-shadow-mode'.
|
||||
Adds another overlay hiding filename parts according to Tramp's
|
||||
special handling of `substitute-in-file-name'."
|
||||
(when (symbol-value 'minibuffer-completing-file-name)
|
||||
(when minibuffer-completing-file-name
|
||||
(setq tramp-rfn-eshadow-overlay
|
||||
(make-overlay (minibuffer-prompt-end) (minibuffer-prompt-end)))
|
||||
;; Copy rfn-eshadow-overlay properties.
|
||||
(let ((props (overlay-properties (symbol-value 'rfn-eshadow-overlay))))
|
||||
(let ((props (overlay-properties rfn-eshadow-overlay)))
|
||||
(while props
|
||||
;; The `field' property prevents correct minibuffer
|
||||
;; completion; we exclude it.
|
||||
@ -1986,6 +1985,13 @@ special handling of `substitute-in-file-name'."
|
||||
(defun tramp-rfn-eshadow-update-overlay-regexp ()
|
||||
(format "[^%s/~]*\\(/\\|~\\)" tramp-postfix-host-format))
|
||||
|
||||
;; Package rfn-eshadow is preloaded in Emacs, but for some reason,
|
||||
;; it only did (defvar rfn-eshadow-overlay) without giving it a global
|
||||
;; value, so it was only declared as dynamically-scoped within the
|
||||
;; rfn-eshadow.el file. This is now fixed in Emacs>26.1 but we still need
|
||||
;; this defvar here for older releases.
|
||||
(defvar rfn-eshadow-overlay)
|
||||
|
||||
(defun tramp-rfn-eshadow-update-overlay ()
|
||||
"Update `rfn-eshadow-overlay' to cover shadowed part of minibuffer input.
|
||||
This is intended to be used as a minibuffer `post-command-hook' for
|
||||
@ -1993,14 +1999,13 @@ This is intended to be used as a minibuffer `post-command-hook' for
|
||||
been set up by `rfn-eshadow-setup-minibuffer'."
|
||||
;; In remote files name, there is a shadowing just for the local part.
|
||||
(ignore-errors
|
||||
(let ((end (or (overlay-end (symbol-value 'rfn-eshadow-overlay))
|
||||
(let ((end (or (overlay-end rfn-eshadow-overlay)
|
||||
(minibuffer-prompt-end)))
|
||||
;; We do not want to send any remote command.
|
||||
(non-essential t))
|
||||
(when
|
||||
(tramp-tramp-file-p
|
||||
(buffer-substring-no-properties end (point-max)))
|
||||
(save-excursion
|
||||
(save-restriction
|
||||
(narrow-to-region
|
||||
(1+ (or (string-match
|
||||
@ -2012,7 +2017,7 @@ been set up by `rfn-eshadow-setup-minibuffer'."
|
||||
(rfn-eshadow-update-overlay-hook nil)
|
||||
file-name-handler-alist)
|
||||
(move-overlay rfn-eshadow-overlay (point-max) (point-max))
|
||||
(rfn-eshadow-update-overlay))))))))
|
||||
(rfn-eshadow-update-overlay)))))))
|
||||
|
||||
(add-hook 'rfn-eshadow-update-overlay-hook
|
||||
'tramp-rfn-eshadow-update-overlay)
|
||||
@ -4666,8 +4671,6 @@ Only works for Bourne-like shells."
|
||||
;; strange when doing zerop, we should kill the process and start
|
||||
;; again. (Greg Stark)
|
||||
;;
|
||||
;; * Make shadowfile.el grok Tramp filenames. (Bug#4526, Bug#4846)
|
||||
;;
|
||||
;; * I was wondering if it would be possible to use tramp even if I'm
|
||||
;; actually using sshfs. But when I launch a command I would like
|
||||
;; to get it executed on the remote machine where the files really
|
||||
|
@ -1780,9 +1780,10 @@ static char *magick[] = {
|
||||
(defvar gdb-control-commands-regexp
|
||||
(concat
|
||||
"^\\("
|
||||
"commands\\|if\\|while\\|define\\|document\\|"
|
||||
"comm\\(a\\(n\\(ds?\\)?\\)?\\)?\\|if\\|while"
|
||||
"\\|def\\(i\\(ne?\\)?\\)?\\|doc\\(u\\(m\\(e\\(nt?\\)?\\)?\\)?\\)?\\|"
|
||||
gdb-python-guile-commands-regexp
|
||||
"\\|while-stepping\\|stepping\\|ws\\|actions"
|
||||
"\\|while-stepping\\|stepp\\(i\\(ng?\\)?\\)?\\|ws\\|actions"
|
||||
"\\)\\([[:blank:]]+\\([^[:blank:]]*\\)\\)?$")
|
||||
"Regexp matching GDB commands that enter a recursive reading loop.
|
||||
As long as GDB is in the recursive reading loop, it does not expect
|
||||
|
@ -132,9 +132,7 @@ system, `file-name-shadow-properties' is used instead."
|
||||
|
||||
;; An overlay covering the shadowed part of the filename (local to the
|
||||
;; minibuffer).
|
||||
(defvar rfn-eshadow-overlay)
|
||||
(make-variable-buffer-local 'rfn-eshadow-overlay)
|
||||
|
||||
(defvar-local rfn-eshadow-overlay nil)
|
||||
|
||||
;;; Hook functions
|
||||
|
||||
|
17
src/keymap.c
17
src/keymap.c
@ -2216,10 +2216,12 @@ push_key_description (EMACS_INT ch, char *p)
|
||||
|
||||
DEFUN ("single-key-description", Fsingle_key_description,
|
||||
Ssingle_key_description, 1, 2, 0,
|
||||
doc: /* Return a pretty description of command character KEY.
|
||||
doc: /* Return a pretty description of a character event KEY.
|
||||
Control characters turn into C-whatever, etc.
|
||||
Optional argument NO-ANGLES non-nil means don't put angle brackets
|
||||
around function keys and event symbols. */)
|
||||
around function keys and event symbols.
|
||||
|
||||
See `text-char-description' for describing character codes. */)
|
||||
(Lisp_Object key, Lisp_Object no_angles)
|
||||
{
|
||||
USE_SAFE_ALLOCA;
|
||||
@ -2293,11 +2295,12 @@ push_text_char_description (register unsigned int c, register char *p)
|
||||
/* This function cannot GC. */
|
||||
|
||||
DEFUN ("text-char-description", Ftext_char_description, Stext_char_description, 1, 1, 0,
|
||||
doc: /* Return a pretty description of file-character CHARACTER.
|
||||
Control characters turn into "^char", etc. This differs from
|
||||
`single-key-description' which turns them into "C-char".
|
||||
Also, this function recognizes the 2**7 bit as the Meta character,
|
||||
whereas `single-key-description' uses the 2**27 bit for Meta.
|
||||
doc: /* Return the description of CHARACTER in standard Emacs notation.
|
||||
CHARACTER must be a valid character code that passes the `characterp' test.
|
||||
Control characters turn into "^char", the 2**7 bit is treated as Meta, etc.
|
||||
This differs from `single-key-description' which accepts character events,
|
||||
and thus doesn't enforce the `characterp' condition, turns control
|
||||
characters into "C-char", and uses the 2**27 bit for Meta.
|
||||
See Info node `(elisp)Describing Characters' for examples. */)
|
||||
(Lisp_Object character)
|
||||
{
|
||||
|
20
src/lread.c
20
src/lread.c
@ -741,10 +741,14 @@ read_filtered_event (bool no_switch_frame, bool ascii_required,
|
||||
}
|
||||
|
||||
DEFUN ("read-char", Fread_char, Sread_char, 0, 3, 0,
|
||||
doc: /* Read a character from the command input (keyboard or macro).
|
||||
doc: /* Read a character event from the command input (keyboard or macro).
|
||||
It is returned as a number.
|
||||
If the character has modifiers, they are resolved and reflected to the
|
||||
character code if possible (e.g. C-SPC -> 0).
|
||||
If the event has modifiers, they are resolved and reflected in the
|
||||
returned character code if possible (e.g. C-SPC yields 0 and C-a yields 97).
|
||||
If some of the modifiers cannot be reflected in the character code, the
|
||||
returned value will include those modifiers, and will not be a valid
|
||||
character code: it will fail the `characterp' test. Use `event-basic-type'
|
||||
to recover the character code with the modifiers removed.
|
||||
|
||||
If the user generates an event which is not a character (i.e. a mouse
|
||||
click or function key event), `read-char' signals an error. As an
|
||||
@ -791,10 +795,14 @@ floating-point value. */)
|
||||
}
|
||||
|
||||
DEFUN ("read-char-exclusive", Fread_char_exclusive, Sread_char_exclusive, 0, 3, 0,
|
||||
doc: /* Read a character from the command input (keyboard or macro).
|
||||
doc: /* Read a character event from the command input (keyboard or macro).
|
||||
It is returned as a number. Non-character events are ignored.
|
||||
If the character has modifiers, they are resolved and reflected to the
|
||||
character code if possible (e.g. C-SPC -> 0).
|
||||
If the event has modifiers, they are resolved and reflected in the
|
||||
returned character code if possible (e.g. C-SPC yields 0 and C-a yields 97).
|
||||
If some of the modifiers cannot be reflected in the character code, the
|
||||
returned value will include those modifiers, and will not be a valid
|
||||
character code: it will fail the `characterp' test. Use `event-basic-type'
|
||||
to recover the character code with the modifiers removed.
|
||||
|
||||
If the optional argument PROMPT is non-nil, display that as a prompt.
|
||||
If the optional argument INHERIT-INPUT-METHOD is non-nil and some
|
||||
|
@ -3331,11 +3331,9 @@ static void
|
||||
connect_network_socket (Lisp_Object proc, Lisp_Object addrinfos,
|
||||
Lisp_Object use_external_socket_p)
|
||||
{
|
||||
ptrdiff_t count = SPECPDL_INDEX ();
|
||||
int s = -1, outch, inch;
|
||||
int xerrno = 0;
|
||||
int family;
|
||||
struct sockaddr *sa = NULL;
|
||||
int ret;
|
||||
ptrdiff_t addrlen UNINIT;
|
||||
struct Lisp_Process *p = XPROCESS (proc);
|
||||
@ -3354,6 +3352,11 @@ connect_network_socket (Lisp_Object proc, Lisp_Object addrinfos,
|
||||
/* Do this in case we never enter the while-loop below. */
|
||||
s = -1;
|
||||
|
||||
struct sockaddr *sa = NULL;
|
||||
ptrdiff_t count = SPECPDL_INDEX ();
|
||||
record_unwind_protect_nothing ();
|
||||
ptrdiff_t count1 = SPECPDL_INDEX ();
|
||||
|
||||
while (!NILP (addrinfos))
|
||||
{
|
||||
Lisp_Object addrinfo = XCAR (addrinfos);
|
||||
@ -3366,9 +3369,8 @@ connect_network_socket (Lisp_Object proc, Lisp_Object addrinfos,
|
||||
#endif
|
||||
|
||||
addrlen = get_lisp_to_sockaddr_size (ip_address, &family);
|
||||
if (sa)
|
||||
free (sa);
|
||||
sa = xmalloc (addrlen);
|
||||
sa = xrealloc (sa, addrlen);
|
||||
set_unwind_protect_ptr (count, xfree, sa);
|
||||
conv_lisp_to_sockaddr (family, ip_address, sa, addrlen);
|
||||
|
||||
s = socket_to_use;
|
||||
@ -3530,7 +3532,7 @@ connect_network_socket (Lisp_Object proc, Lisp_Object addrinfos,
|
||||
#endif /* !WINDOWSNT */
|
||||
|
||||
/* Discard the unwind protect closing S. */
|
||||
specpdl_ptr = specpdl + count;
|
||||
specpdl_ptr = specpdl + count1;
|
||||
emacs_close (s);
|
||||
s = -1;
|
||||
if (0 <= socket_to_use)
|
||||
@ -3601,6 +3603,7 @@ connect_network_socket (Lisp_Object proc, Lisp_Object addrinfos,
|
||||
Lisp_Object data = get_file_errno_data (err, contact, xerrno);
|
||||
|
||||
pset_status (p, list2 (Fcar (data), Fcdr (data)));
|
||||
unbind_to (count, Qnil);
|
||||
return;
|
||||
}
|
||||
|
||||
@ -3620,7 +3623,7 @@ connect_network_socket (Lisp_Object proc, Lisp_Object addrinfos,
|
||||
p->outfd = outch;
|
||||
|
||||
/* Discard the unwind protect for closing S, if any. */
|
||||
specpdl_ptr = specpdl + count;
|
||||
specpdl_ptr = specpdl + count1;
|
||||
|
||||
if (p->is_server && p->socktype != SOCK_DGRAM)
|
||||
pset_status (p, Qlisten);
|
||||
@ -3681,6 +3684,7 @@ connect_network_socket (Lisp_Object proc, Lisp_Object addrinfos,
|
||||
}
|
||||
#endif
|
||||
|
||||
unbind_to (count, Qnil);
|
||||
}
|
||||
|
||||
/* Create a network stream/datagram client/server process. Treated
|
||||
|
@ -5075,7 +5075,7 @@ frame_geometry (Lisp_Object frame, Lisp_Object attribute)
|
||||
int menu_bar_height = 0, menu_bar_width = 0;
|
||||
int tool_bar_height = 0, tool_bar_width = 0;
|
||||
|
||||
if (FRAME_INITIAL_P (f) || !FRAME_X_P (f))
|
||||
if (FRAME_INITIAL_P (f) || !FRAME_X_P (f) || !FRAME_OUTER_WINDOW (f))
|
||||
return Qnil;
|
||||
|
||||
block_input ();
|
||||
|
Loading…
Reference in New Issue
Block a user