mirror of
https://git.savannah.gnu.org/git/emacs.git
synced 2025-01-20 18:17:20 +00:00
Merge from origin/emacs-26
1c6484e
(origin/emacs-26) Fix incorrect cloning of eieio-instance-inh...37436fe
Fix cloning of eieio-named objects (Bug#22840)fb65a36
Fix ibuffer-unmark-backward synopsis (bug#35572)f77bd2b
; * src/lisp.h (DEFSYM): Fix inaccurate comment.3b86e0b
Clarify handling of long options (Bug#24949)04340a8
Improve documentation of the daemon and emacsclient3e29de2
* etc/NEWS.24: Belatedly announce delete-consecutive-dups.
This commit is contained in:
commit
8b789755b4
@ -39,7 +39,7 @@ corresponding long form.
|
||||
|
||||
The long forms with @samp{--} are easier to remember, but longer to
|
||||
type. However, you don't have to spell out the whole option name; any
|
||||
unambiguous abbreviation is enough. When a long option takes an
|
||||
unambiguous abbreviation is enough. When a long option requires an
|
||||
argument, you can use either a space or an equal sign to separate the
|
||||
option name and the argument. Thus, for the option @samp{--display},
|
||||
you can write either @samp{--display sugar-bombs:0.0} or
|
||||
@ -347,13 +347,15 @@ Start Emacs with minimum customizations. This is similar to using
|
||||
@itemx --bg-daemon[=@var{name}]
|
||||
@itemx --fg-daemon[=@var{name}]
|
||||
Start Emacs as a daemon: after Emacs starts up, it starts the Emacs
|
||||
server without opening any frames.
|
||||
(Optionally, you can specify an explicit @var{name} for the server.)
|
||||
You can then use the @command{emacsclient} command to connect to Emacs
|
||||
for editing. @xref{Emacs Server}, for information about using Emacs
|
||||
as a daemon. A ``background'' daemon disconnects from the terminal
|
||||
and runs in the background (@samp{--daemon} is an alias for
|
||||
@samp{--bg-daemon}).
|
||||
server without opening any frames. You can then use the
|
||||
@command{emacsclient} command to connect to Emacs for editing.
|
||||
(Optionally, you can specify an explicit @var{name} for the server; if
|
||||
you do, you will need to specify the same @var{name} when you invoke
|
||||
@command{emacsclient}, via its @option{--socket-name} option, see
|
||||
@ref{emacsclient Options}.) @xref{Emacs Server}, for information
|
||||
about using Emacs as a daemon. A ``background'' daemon disconnects
|
||||
from the terminal and runs in the background (@samp{--daemon} is an
|
||||
alias for @samp{--bg-daemon}).
|
||||
|
||||
@item --no-desktop
|
||||
@opindex --no-desktop
|
||||
|
@ -1983,6 +1983,9 @@ omitted, @command{emacsclient} connects to the first server it finds.
|
||||
If you set @code{server-name} of the Emacs server to an absolute file
|
||||
name, give the same absolute file name as @var{server-name} to this
|
||||
option to instruct @command{emacsclient} to connect to that server.
|
||||
You need to use this option if you started Emacs as daemon
|
||||
(@pxref{Initial Options}) and specified the name for the server
|
||||
started by the daemon.
|
||||
|
||||
Alternatively, you can set the @env{EMACS_SOCKET_NAME} environment
|
||||
variable to point to the server socket. (The command-line option
|
||||
|
@ -1117,6 +1117,8 @@ a non-nil `interactive-only' property.
|
||||
The value, if non-nil, is a regexp that specifies what to trim from
|
||||
the start and end of each substring.
|
||||
|
||||
** New function `delete-consecutive-dups'.
|
||||
|
||||
** Completion
|
||||
|
||||
*** The separator used by `completing-read-multiple' is now a regexp.
|
||||
|
@ -64,10 +64,18 @@ SLOT-NAME is the offending slot. FN is the function signaling the error."
|
||||
;; Throw the regular signal.
|
||||
(cl-call-next-method)))
|
||||
|
||||
(cl-defmethod clone ((obj eieio-instance-inheritor) &rest _params)
|
||||
(cl-defmethod clone ((obj eieio-instance-inheritor) &rest params)
|
||||
"Clone OBJ, initializing `:parent' to OBJ.
|
||||
All slots are unbound, except those initialized with PARAMS."
|
||||
(let ((nobj (cl-call-next-method)))
|
||||
;; call next method without params as we makeunbound slots anyhow
|
||||
(let ((nobj (if (stringp (car params))
|
||||
(cl-call-next-method obj (pop params))
|
||||
(cl-call-next-method obj))))
|
||||
(dolist (descriptor (eieio-class-slots (class-of nobj)))
|
||||
(let ((slot (eieio-slot-descriptor-name descriptor)))
|
||||
(slot-makeunbound nobj slot)))
|
||||
(when params
|
||||
(shared-initialize nobj params))
|
||||
(oset nobj parent-instance obj)
|
||||
nobj))
|
||||
|
||||
@ -510,16 +518,18 @@ instance."
|
||||
All slots are unbound, except those initialized with PARAMS."
|
||||
(let* ((newname (and (stringp (car params)) (pop params)))
|
||||
(nobj (apply #'cl-call-next-method obj params))
|
||||
(nm (slot-value obj 'object-name)))
|
||||
(eieio-oset obj 'object-name
|
||||
(nm (slot-value nobj 'object-name)))
|
||||
(eieio-oset nobj 'object-name
|
||||
(or newname
|
||||
(save-match-data
|
||||
(if (and nm (string-match "-\\([0-9]+\\)" nm))
|
||||
(let ((num (1+ (string-to-number
|
||||
(match-string 1 nm)))))
|
||||
(concat (substring nm 0 (match-beginning 0))
|
||||
"-" (int-to-string num)))
|
||||
(concat nm "-1")))))
|
||||
(if (equal nm (slot-value obj 'object-name))
|
||||
(save-match-data
|
||||
(if (and nm (string-match "-\\([0-9]+\\)" nm))
|
||||
(let ((num (1+ (string-to-number
|
||||
(match-string 1 nm)))))
|
||||
(concat (substring nm 0 (match-beginning 0))
|
||||
"-" (int-to-string num)))
|
||||
(concat nm "-1")))
|
||||
nm)))
|
||||
nobj))
|
||||
|
||||
(cl-defmethod make-instance ((class (subclass eieio-named)) &rest args)
|
||||
|
@ -2507,8 +2507,8 @@ particular subset of them, and sorting by various criteria.
|
||||
|
||||
Operations on marked buffers:
|
||||
\\<ibuffer-mode-map>
|
||||
`\\[ibuffer-do-save]' - Save the marked buffers
|
||||
`\\[ibuffer-do-view]' - View the marked buffers in this frame.
|
||||
`\\[ibuffer-do-save]' - Save the marked buffers.
|
||||
`\\[ibuffer-do-view]' - View the marked buffers in the selected frame.
|
||||
`\\[ibuffer-do-view-other-frame]' - View the marked buffers in another frame.
|
||||
`\\[ibuffer-do-revert]' - Revert the marked buffers.
|
||||
`\\[ibuffer-do-toggle-read-only]' - Toggle read-only state of marked buffers.
|
||||
@ -2531,7 +2531,7 @@ Operations on marked buffers:
|
||||
buffer's file as an argument.
|
||||
`\\[ibuffer-do-eval]' - Evaluate a form in each of the marked buffers. This
|
||||
is a very flexible command. For example, if you want to make all
|
||||
of the marked buffers read only, try using (read-only-mode 1) as
|
||||
of the marked buffers read-only, try using (read-only-mode 1) as
|
||||
the input form.
|
||||
`\\[ibuffer-do-view-and-eval]' - As above, but view each buffer while the form
|
||||
is evaluated.
|
||||
@ -2546,21 +2546,20 @@ Marking commands:
|
||||
all unmarked buffers.
|
||||
`\\[ibuffer-change-marks]' - Change the mark used on marked buffers.
|
||||
`\\[ibuffer-unmark-forward]' - Unmark the buffer at point.
|
||||
`\\[ibuffer-unmark-backward]' - Unmark the buffer at point, and move to the
|
||||
previous line.
|
||||
`\\[ibuffer-unmark-backward]' - Unmark the previous buffer.
|
||||
`\\[ibuffer-unmark-all]' - Unmark buffers marked with MARK.
|
||||
`\\[ibuffer-unmark-all-marks]' - Unmark all marked buffers.
|
||||
`\\[ibuffer-mark-by-mode]' - Mark buffers by major mode.
|
||||
`\\[ibuffer-mark-unsaved-buffers]' - Mark all \"unsaved\" buffers.
|
||||
This means that the buffer is modified, and has an associated file.
|
||||
`\\[ibuffer-mark-modified-buffers]' - Mark all modified buffers,
|
||||
regardless of whether or not they have an associated file.
|
||||
regardless of whether they have an associated file.
|
||||
`\\[ibuffer-mark-special-buffers]' - Mark all buffers whose name begins and
|
||||
ends with `*'.
|
||||
`\\[ibuffer-mark-dissociated-buffers]' - Mark all buffers which have
|
||||
an associated file, but that file doesn't currently exist.
|
||||
`\\[ibuffer-mark-read-only-buffers]' - Mark all read-only buffers.
|
||||
`\\[ibuffer-mark-dired-buffers]' - Mark buffers in `dired' mode.
|
||||
`\\[ibuffer-mark-dired-buffers]' - Mark buffers in `dired-mode'.
|
||||
`\\[ibuffer-mark-help-buffers]' - Mark buffers in `help-mode', `apropos-mode', etc.
|
||||
`\\[ibuffer-mark-old-buffers]' - Mark buffers older than `ibuffer-old-time'.
|
||||
`\\[ibuffer-mark-for-delete]' - Mark the buffer at point for deletion.
|
||||
@ -2639,17 +2638,17 @@ Other commands:
|
||||
|
||||
** Information on Filtering:
|
||||
|
||||
You can filter your ibuffer view via different criteria. Each Ibuffer
|
||||
You can filter your Ibuffer view via different criteria. Each Ibuffer
|
||||
buffer has its own stack of active filters. For example, suppose you
|
||||
are working on an Emacs Lisp project. You can create an Ibuffer
|
||||
buffer displays buffers in just `emacs-lisp' modes via
|
||||
buffer displaying only `emacs-lisp-mode' buffers via
|
||||
`\\[ibuffer-filter-by-mode] emacs-lisp-mode RET'. In this case, there
|
||||
is just one entry on the filtering stack.
|
||||
|
||||
You can also combine filters. The various filtering commands push a
|
||||
new filter onto the stack, and the filters combine to show just
|
||||
buffers which satisfy ALL criteria on the stack. For example, suppose
|
||||
you only want to see buffers in `emacs-lisp' mode, whose names begin
|
||||
you only want to see buffers in `emacs-lisp-mode', whose names begin
|
||||
with \"gnus\". You can accomplish this via:
|
||||
|
||||
\\[ibuffer-filter-by-mode] emacs-lisp-mode RET
|
||||
@ -2693,8 +2692,8 @@ will not be displayed multiple times if they would be included in
|
||||
multiple filter groups; instead, the first filter group is used. The
|
||||
filter groups are displayed in this order of precedence.
|
||||
|
||||
You may rearrange filter groups by using the regular
|
||||
`\\[ibuffer-kill-line]' and `\\[ibuffer-yank]' pair. Yanked groups
|
||||
You may rearrange filter groups by using the usual pair
|
||||
`\\[ibuffer-kill-line]' and `\\[ibuffer-yank]'. Yanked groups
|
||||
will be inserted before the group at point."
|
||||
;; Include state info next to the mode name.
|
||||
(set (make-local-variable 'mode-line-process)
|
||||
|
@ -2236,7 +2236,7 @@ INLINE int
|
||||
}
|
||||
|
||||
/* Placeholder for make-docfile to process. The actual symbol
|
||||
definition is done by lread.c's defsym. */
|
||||
definition is done by lread.c's define_symbol. */
|
||||
#define DEFSYM(sym, name) /* empty */
|
||||
|
||||
|
||||
|
@ -696,6 +696,17 @@ Do not override for `prot-2'."
|
||||
(setq eitest-II3 (clone eitest-II2 "eitest-II3 Test."))
|
||||
(oset eitest-II3 slot3 'penguin)
|
||||
|
||||
;; Test that slots are non-initialized slots are unbounded
|
||||
(oref eitest-II2 slot1)
|
||||
(should (slot-boundp eitest-II2 'slot1))
|
||||
(should-not (slot-boundp eitest-II2 'slot2))
|
||||
(should-not (slot-boundp eitest-II2 'slot3))
|
||||
(should-not (slot-boundp eitest-II3 'slot2))
|
||||
(should-not (slot-boundp eitest-II3 'slot1))
|
||||
(should-not (slot-boundp eitest-II3 'slot2))
|
||||
(should (eieio-instance-inheritor-slot-boundp eitest-II3 'slot2))
|
||||
(should (slot-boundp eitest-II3 'slot3))
|
||||
|
||||
;; Test level 1 inheritance
|
||||
(should (eq (oref eitest-II3 slot1) 'moose))
|
||||
;; Test level 2 inheritance
|
||||
@ -862,8 +873,7 @@ Subclasses to override slot attributes.")
|
||||
(should (oref obj1 a-slot))))
|
||||
|
||||
(defclass NAMED (eieio-named)
|
||||
((some-slot :initform nil)
|
||||
)
|
||||
((some-slot :initform nil))
|
||||
"A class inheriting from eieio-named.")
|
||||
|
||||
(ert-deftest eieio-test-35-named-object ()
|
||||
@ -902,6 +912,48 @@ Subclasses to override slot attributes.")
|
||||
(should
|
||||
(fboundp 'eieio--defalias)))
|
||||
|
||||
(ert-deftest eieio-test-38-clone-named-object ()
|
||||
(let* ((A (NAMED :object-name "aa"))
|
||||
(B (clone A :object-name "bb"))
|
||||
(C (clone A "cc"))
|
||||
(D (clone A))
|
||||
(E (clone D)))
|
||||
(should (string= "aa" (oref A object-name)))
|
||||
(should (string= "bb" (oref B object-name)))
|
||||
(should (string= "cc" (oref C object-name)))
|
||||
(should (string= "aa-1" (oref D object-name)))
|
||||
(should (string= "aa-2" (oref E object-name)))))
|
||||
|
||||
(defclass TII (eieio-instance-inheritor)
|
||||
((a :initform 1 :initarg :a)
|
||||
(b :initarg :b)
|
||||
(c :initarg :c))
|
||||
"Instance Inheritor test class.")
|
||||
|
||||
(ert-deftest eieio-test-39-clone-instance-inheritor-with-args ()
|
||||
(let* ((A (TII))
|
||||
(B (clone A :b "bb"))
|
||||
(C (clone B :a "aa")))
|
||||
|
||||
(should (string= "aa" (oref C :a)))
|
||||
(should (string= "bb" (oref C :b)))
|
||||
|
||||
(should (slot-boundp A :a))
|
||||
(should-not (slot-boundp A :b))
|
||||
(should-not (slot-boundp A :c))
|
||||
|
||||
(should-not (slot-boundp B :a))
|
||||
(should (slot-boundp B :b))
|
||||
(should-not (slot-boundp A :c))
|
||||
|
||||
(should (slot-boundp C :a))
|
||||
(should-not (slot-boundp C :b))
|
||||
(should-not (slot-boundp C :c))
|
||||
|
||||
(should (eieio-instance-inheritor-slot-boundp C :a))
|
||||
(should (eieio-instance-inheritor-slot-boundp C :b))
|
||||
(should-not (eieio-instance-inheritor-slot-boundp C :c))))
|
||||
|
||||
|
||||
(provide 'eieio-tests)
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user