mirror of
git://git.sv.gnu.org/emacs.git
synced 2025-12-24 14:30:43 -08:00
auto upstream
This commit is contained in:
commit
10fc3c3866
23 changed files with 582 additions and 500 deletions
|
|
@ -1,3 +1,7 @@
|
|||
2013-02-19 Glenn Morris <rgm@gnu.org>
|
||||
|
||||
* text.texi (Change Hooks): Fix typo.
|
||||
|
||||
2013-02-15 Glenn Morris <rgm@gnu.org>
|
||||
|
||||
* modes.texi (Basic Major Modes): 'z' no longer bound in special-mode.
|
||||
|
|
|
|||
|
|
@ -4344,7 +4344,7 @@ This variable holds a list of functions to call after any buffer
|
|||
modification. Each function receives three arguments: the beginning
|
||||
and end of the region just changed, and the length of the text that
|
||||
existed before the change. All three arguments are integers. The
|
||||
buffer has been changed is always the current buffer.
|
||||
buffer that has been changed is always the current buffer.
|
||||
|
||||
The length of the old text is the difference between the buffer
|
||||
positions before and after that text as it was before the change. As
|
||||
|
|
|
|||
|
|
@ -2030,7 +2030,7 @@ You can instruct @value{tramp} by this form:
|
|||
@noindent
|
||||
with @samp{192.168.0.26} being the IP address of your Android device.
|
||||
|
||||
The user settings for the @code{$PATH} environment valiable must be
|
||||
The user settings for the @code{$PATH} environment variable must be
|
||||
preserved. Add this setting:
|
||||
|
||||
@lisp
|
||||
|
|
|
|||
|
|
@ -1519,7 +1519,7 @@
|
|||
|
||||
2009-01-27 Kenichi Handa <handa@m17n.org>
|
||||
|
||||
* NEWS: New function `coding-sytem-from-name'.
|
||||
* NEWS: New function `coding-system-from-name'.
|
||||
|
||||
2009-01-25 Carsten Dominik <dominik@science.uva.nl>
|
||||
|
||||
|
|
|
|||
|
|
@ -41,9 +41,6 @@ a web search is often the best way to find results.
|
|||
The Emacs Wiki has an area for storing elisp files
|
||||
<URL:http://www.emacswiki.org/cgi-bin/wiki/ElispArea>.
|
||||
|
||||
* WikEmacs
|
||||
<URL:http://wikemacs.org> is an alternative wiki for Emacs.
|
||||
|
||||
* Emacs slides and tutorials can be found here:
|
||||
<URL:http://web.psung.name/emacs/>
|
||||
|
||||
|
|
@ -55,16 +52,8 @@ so you will find the latest version in Emacs.
|
|||
|
||||
* Ada-mode: <URL:http://stephe-leake.org/emacs/ada-mode/emacs-ada-mode.html>
|
||||
|
||||
* Battery and Info Look: <URL:http://ralph-schleicher.de/emacs.html>
|
||||
|
||||
* CC mode: <URL:http://cc-mode.sourceforge.net/>
|
||||
|
||||
* CPerl: <URL:http://math.berkeley.edu/~ilya/software/emacs/>
|
||||
|
||||
* Ediff and Viper: <URL:http://www.cs.sunysb.edu/~kifer/emacs.html>
|
||||
|
||||
* ERC: <URL:http://savannah.gnu.org/projects/erc/>
|
||||
|
||||
* Gnus: <URL:http://www.gnus.org/>
|
||||
|
||||
* MH-E: <URL:http://mh-e.sourceforge.net/>
|
||||
|
|
@ -73,25 +62,11 @@ so you will find the latest version in Emacs.
|
|||
|
||||
* Org mode: <URL:http://orgmode.org/>
|
||||
|
||||
* RefTeX: <URL:http://www.gnu.org/software/auctex/reftex.html>
|
||||
|
||||
* Remember: <URL:https://gna.org/p/remember-el>
|
||||
|
||||
* CEDET: <URL:http://cedet.sourceforge.net/>
|
||||
|
||||
* Tramp: Remote file access via rsh/ssh
|
||||
<URL:http://savannah.gnu.org/projects/tramp/>
|
||||
|
||||
* Auxiliary files
|
||||
|
||||
* (Tex)info files for use with Info-look that don't come from GNU
|
||||
packages:
|
||||
* Scheme: <URL:http://groups.csail.mit.edu/mac/ftpdir/scm/r5rs.info.tar.gz>
|
||||
* LaTeX: <URL:ftp://ctan.tug.org/tex-archive/info/latex2e-help-texinfo/
|
||||
latex2e.texi> (or CTAN mirrors)
|
||||
* Perl: <URL:ftp://ftp.cpan.org/pub/CPAN/doc/manual/texinfo/>
|
||||
(or CPAN mirrors)
|
||||
|
||||
* GNU Zile: <URL:http://www.gnu.org/software/zile/>
|
||||
A lightweight Emacs clone, for when you don't have room for Emacs proper.
|
||||
|
||||
|
|
@ -108,6 +83,7 @@ packages that you can install.
|
|||
* AUCTeX: <URL:http://www.gnu.org/software/auctex/>
|
||||
An extensible package that supports writing and formatting TeX
|
||||
files (including AMS-TeX, LaTeX, Texinfo, ConTeXt, and docTeX).
|
||||
Includes Preview LaTeX: embed preview LaTeX images in source buffer.
|
||||
Available from GNU ELPA.
|
||||
|
||||
* BBDB: personal Info Rolodex integrated with mail/news:
|
||||
|
|
@ -134,6 +110,7 @@ packages that you can install.
|
|||
|
||||
* Emacs Muse: <URL:http://mwolson.org/projects/EmacsMuse.html>
|
||||
An authoring and publishing environment for Emacs.
|
||||
Available from GNU ELPA.
|
||||
|
||||
* Emacs speaks statistics (ESS): statistical programming within Emacs
|
||||
<URL:http://ess.r-project.org>
|
||||
|
|
@ -170,9 +147,6 @@ packages that you can install.
|
|||
* Planner Mode: <URL:http://www.wjsullivan.net/PlannerMode.html>
|
||||
Planner is an organizer and day planner for Emacs.
|
||||
|
||||
* Preview LaTeX: embed preview LaTeX images in source buffer.
|
||||
<URL:http://www.gnu.org/software/auctex/preview-latex.html>
|
||||
|
||||
* Quack: <URL:http://www.neilvandyke.org/quack/>
|
||||
Quack enhances Emacs support for Scheme.
|
||||
|
||||
|
|
|
|||
|
|
@ -1,3 +1,66 @@
|
|||
2013-02-19 Michael Albinus <michael.albinus@gmx.de>
|
||||
|
||||
* net/tramp-cache.el (tramp-get-hash-table): New defun.
|
||||
(tramp-get-file-property, tramp-set-file-property)
|
||||
(tramp-get-connection-property, tramp-set-connection-property): Use it.
|
||||
(tramp-flush-file-property, tramp-flush-directory-property):
|
||||
Rename argument to KEY.
|
||||
(tramp-flush-connection-property): Simplify a little bit.
|
||||
(tramp-connection-property-p): New defun.
|
||||
(top): Reapply saved values only if there isn't a corresponding
|
||||
entry in `tramp-connection-properties'.
|
||||
|
||||
2013-02-19 Fabián Ezequiel Gallina <fgallina@cuca>
|
||||
|
||||
* progmodes/python.el (python-indent-context):
|
||||
Fix python-info-line-ends-backslash-p call.
|
||||
(python-info-line-ends-backslash-p)
|
||||
(python-info-beginning-of-backslash): Respect line-number argument.
|
||||
(python-info-current-line-comment-p):
|
||||
Fix behavior when not at beginning-of-line.
|
||||
(python-util-position): Remove function.
|
||||
(python-util-goto-line): New function.
|
||||
|
||||
2013-02-19 Michael Albinus <michael.albinus@gmx.de>
|
||||
|
||||
* eshell/em-unix.el (eshell/su): Require tramp.
|
||||
(eshell/sudo): Require tramp. Remove now unnecessary check.
|
||||
|
||||
* net/tramp-sh.el (tramp-sh-handle-start-file-process): Let-bind
|
||||
`tramp-current-connection' in order to avoid an error when several
|
||||
commands are invoked in a short time in eshell and friends.
|
||||
|
||||
2013-02-19 Stefan Monnier <monnier@iro.umontreal.ca>
|
||||
|
||||
Cleanup some of EIEIO's namespace.
|
||||
* emacs-lisp/eieio.el (eieio--define-field-accessors): New macro.
|
||||
Use it to define all the class-* and object-* field accessors (renamed
|
||||
to eieio--class-* and eieio--object-*). Update all uses.
|
||||
(eieio--class-num-slots, eieio--object-num-slots): Rename from
|
||||
class-num-slots and object-num-slots.
|
||||
(eieio--check-type): New macro.
|
||||
(eieio-defclass, eieio-oref, eieio-oref-default, same-class-p)
|
||||
(object-of-class-p, child-of-class-p, object-slots, class-slot-initarg)
|
||||
(eieio-oset, eieio-oset-default, object-assoc, object-assoc-list)
|
||||
(object-assoc-list-safe): Use it.
|
||||
(eieio-defclass): Tighten regexp.
|
||||
(eieio--defmethod): Use `memq'. Signal an error for unknown method kind.
|
||||
Remove unreachable code.
|
||||
(object-class-fast): Declare obsolete.
|
||||
(eieio-class-name, eieio-object-name, eieio-object-set-name-string)
|
||||
(eieio-object-class, eieio-object-class-name, eieio-class-parents)
|
||||
(eieio-class-children, eieio-class-precedence-list, eieio-class-parent):
|
||||
Rename from class-name, object-name, object-set-name-string,
|
||||
object-class, object-class-name, class-parents, class-children,
|
||||
class-precedence-list, class-parent; with obsolete alias.
|
||||
(class-of, class-direct-superclasses, class-direct-subclasses):
|
||||
Declare obsolete.
|
||||
(eieio-defmethod): Use `memq'; remove unreachable code.
|
||||
* emacs-lisp/eieio-base.el (eieio-persistent-read):
|
||||
* emacs-lisp/eieio-opt.el (eieio-class-button, eieio-describe-generic)
|
||||
(eieio-browse-tree, eieio-browse): Use eieio--check-type.
|
||||
|
||||
|
||||
2013-02-18 Michael Heerdegen <michael_heerdegen@web.de>
|
||||
|
||||
* emacs-lisp/eldoc.el (eldoc-highlight-function-argument):
|
||||
|
|
|
|||
|
|
@ -65,19 +65,19 @@ SLOT-NAME is the offending slot. FN is the function signaling the error."
|
|||
"Clone OBJ, initializing `:parent' to OBJ.
|
||||
All slots are unbound, except those initialized with PARAMS."
|
||||
(let ((nobj (make-vector (length obj) eieio-unbound))
|
||||
(nm (aref obj object-name))
|
||||
(nm (eieio--object-name obj))
|
||||
(passname (and params (stringp (car params))))
|
||||
(num 1))
|
||||
(aset nobj 0 'object)
|
||||
(aset nobj object-class (aref obj object-class))
|
||||
(setf (eieio--object-class nobj) (eieio--object-class obj))
|
||||
;; The following was copied from the default clone.
|
||||
(if (not passname)
|
||||
(save-match-data
|
||||
(if (string-match "-\\([0-9]+\\)" nm)
|
||||
(setq num (1+ (string-to-number (match-string 1 nm)))
|
||||
nm (substring nm 0 (match-beginning 0))))
|
||||
(aset nobj object-name (concat nm "-" (int-to-string num))))
|
||||
(aset nobj object-name (car params)))
|
||||
(setf (eieio--object-name nobj) (concat nm "-" (int-to-string num))))
|
||||
(setf (eieio--object-name nobj) (car params)))
|
||||
;; Now initialize from params.
|
||||
(if params (shared-initialize nobj (if passname (cdr params) params)))
|
||||
(oset nobj parent-instance obj)
|
||||
|
|
@ -232,8 +232,7 @@ for CLASS. Optional ALLOW-SUBCLASS says that it is ok for
|
|||
being pedantic."
|
||||
(unless class
|
||||
(message "Unsafe call to `eieio-persistent-read'."))
|
||||
(when (and class (not (class-p class)))
|
||||
(signal 'wrong-type-argument (list 'class-p class)))
|
||||
(when class (eieio--check-type class-p class))
|
||||
(let ((ret nil)
|
||||
(buffstr nil))
|
||||
(unwind-protect
|
||||
|
|
@ -308,7 +307,7 @@ Second, any text properties will be stripped from strings."
|
|||
(type nil)
|
||||
(classtype nil))
|
||||
(setq slot-idx (- slot-idx 3))
|
||||
(setq type (aref (aref (class-v class) class-public-type)
|
||||
(setq type (aref (eieio--class-public-type (class-v class))
|
||||
slot-idx))
|
||||
|
||||
(setq classtype (eieio-persistent-slot-type-is-class-p
|
||||
|
|
@ -482,14 +481,13 @@ Argument SLOT-NAME is the slot that was attempted to be accessed.
|
|||
OPERATION is the type of access, such as `oref' or `oset'.
|
||||
NEW-VALUE is the value that was being set into SLOT if OPERATION were
|
||||
a set type."
|
||||
(if (or (eq slot-name 'object-name)
|
||||
(eq slot-name :object-name))
|
||||
(if (memq slot-name '(object-name :object-name))
|
||||
(cond ((eq operation 'oset)
|
||||
(if (not (stringp new-value))
|
||||
(signal 'invalid-slot-type
|
||||
(list obj slot-name 'string new-value)))
|
||||
(object-set-name-string obj new-value))
|
||||
(t (object-name-string obj)))
|
||||
(eieio-object-set-name-string obj new-value))
|
||||
(t (eieio-object-name-string obj)))
|
||||
(call-next-method)))
|
||||
|
||||
(provide 'eieio-base)
|
||||
|
|
|
|||
|
|
@ -192,22 +192,22 @@ Optional argument IGNORE is an extraneous parameter."
|
|||
(let* ((chil nil)
|
||||
(obj (widget-get widget :value))
|
||||
(master-group (widget-get widget :eieio-group))
|
||||
(cv (class-v (object-class-fast obj)))
|
||||
(slots (aref cv class-public-a))
|
||||
(flabel (aref cv class-public-custom-label))
|
||||
(fgroup (aref cv class-public-custom-group))
|
||||
(fdoc (aref cv class-public-doc))
|
||||
(fcust (aref cv class-public-custom)))
|
||||
(cv (class-v (eieio--object-class obj)))
|
||||
(slots (eieio--class-public-a cv))
|
||||
(flabel (eieio--class-public-custom-label cv))
|
||||
(fgroup (eieio--class-public-custom-group cv))
|
||||
(fdoc (eieio--class-public-doc cv))
|
||||
(fcust (eieio--class-public-custom cv)))
|
||||
;; First line describes the object, but may not editable.
|
||||
(if (widget-get widget :eieio-show-name)
|
||||
(setq chil (cons (widget-create-child-and-convert
|
||||
widget 'string :tag "Object "
|
||||
:sample-face 'bold
|
||||
(object-name-string obj))
|
||||
(eieio-object-name-string obj))
|
||||
chil)))
|
||||
;; Display information about the group being shown
|
||||
(when master-group
|
||||
(let ((groups (class-option (object-class-fast obj) :custom-groups)))
|
||||
(let ((groups (class-option (eieio--object-class obj) :custom-groups)))
|
||||
(widget-insert "Groups:")
|
||||
(while groups
|
||||
(widget-insert " ")
|
||||
|
|
@ -260,7 +260,7 @@ Optional argument IGNORE is an extraneous parameter."
|
|||
(let ((s (symbol-name
|
||||
(or
|
||||
(class-slot-initarg
|
||||
(object-class-fast obj)
|
||||
(eieio--object-class obj)
|
||||
(car slots))
|
||||
(car slots)))))
|
||||
(capitalize
|
||||
|
|
@ -287,17 +287,17 @@ Optional argument IGNORE is an extraneous parameter."
|
|||
"Get the value of WIDGET."
|
||||
(let* ((obj (widget-get widget :value))
|
||||
(master-group eieio-cog)
|
||||
(cv (class-v (object-class-fast obj)))
|
||||
(fgroup (aref cv class-public-custom-group))
|
||||
(cv (class-v (eieio--object-class obj)))
|
||||
(fgroup (eieio--class-public-custom-group cv))
|
||||
(wids (widget-get widget :children))
|
||||
(name (if (widget-get widget :eieio-show-name)
|
||||
(car (widget-apply (car wids) :value-inline))
|
||||
nil))
|
||||
(chil (if (widget-get widget :eieio-show-name)
|
||||
(nthcdr 1 wids) wids))
|
||||
(cv (class-v (object-class-fast obj)))
|
||||
(slots (aref cv class-public-a))
|
||||
(fcust (aref cv class-public-custom)))
|
||||
(cv (class-v (eieio--object-class obj)))
|
||||
(slots (eieio--class-public-a cv))
|
||||
(fcust (eieio--class-public-custom cv)))
|
||||
;; If there are any prefix widgets, clear them.
|
||||
;; -- None yet
|
||||
;; Create a batch of initargs for each slot.
|
||||
|
|
@ -316,7 +316,7 @@ Optional argument IGNORE is an extraneous parameter."
|
|||
fgroup (cdr fgroup)
|
||||
fcust (cdr fcust)))
|
||||
;; Set any name updates on it.
|
||||
(if name (aset obj object-name name))
|
||||
(if name (setf (eieio--object-name obj) name))
|
||||
;; This is the same object we had before.
|
||||
obj))
|
||||
|
||||
|
|
@ -354,7 +354,7 @@ These groups are specified with the `:group' slot flag."
|
|||
(let* ((g (or group 'default)))
|
||||
(switch-to-buffer (get-buffer-create
|
||||
(concat "*CUSTOMIZE "
|
||||
(object-name obj) " "
|
||||
(eieio-object-name obj) " "
|
||||
(symbol-name g) "*")))
|
||||
(setq buffer-read-only nil)
|
||||
(kill-all-local-variables)
|
||||
|
|
@ -367,7 +367,7 @@ These groups are specified with the `:group' slot flag."
|
|||
;; Add an apply reset option at the top of the buffer.
|
||||
(eieio-custom-object-apply-reset obj)
|
||||
(widget-insert "\n\n")
|
||||
(widget-insert "Edit object " (object-name obj) "\n\n")
|
||||
(widget-insert "Edit object " (eieio-object-name obj) "\n\n")
|
||||
;; Create the widget editing the object.
|
||||
(make-local-variable 'eieio-wo)
|
||||
(setq eieio-wo (eieio-custom-widget-insert obj :eieio-group g))
|
||||
|
|
@ -452,7 +452,7 @@ Must return the created widget."
|
|||
(vector (concat "Group " (symbol-name group))
|
||||
(list 'customize-object obj (list 'quote group))
|
||||
t))
|
||||
(class-option (object-class-fast obj) :custom-groups)))
|
||||
(class-option (eieio--object-class obj) :custom-groups)))
|
||||
|
||||
(defvar eieio-read-custom-group-history nil
|
||||
"History for the custom group reader.")
|
||||
|
|
@ -460,7 +460,7 @@ Must return the created widget."
|
|||
(defmethod eieio-read-customization-group ((obj eieio-default-superclass))
|
||||
"Do a completing read on the name of a customization group in OBJ.
|
||||
Return the symbol for the group, or nil"
|
||||
(let ((g (class-option (object-class-fast obj) :custom-groups)))
|
||||
(let ((g (class-option (eieio--object-class obj) :custom-groups)))
|
||||
(if (= (length g) 1)
|
||||
(car g)
|
||||
;; Make the association list
|
||||
|
|
|
|||
|
|
@ -58,9 +58,9 @@ PREBUTTONTEXT is some text between PREFIX and the object button."
|
|||
(end nil)
|
||||
(str (object-print object))
|
||||
(tip (format "Object %s\nClass: %S\nParent(s): %S\n%d slots"
|
||||
(object-name-string object)
|
||||
(object-class object)
|
||||
(class-parents (object-class object))
|
||||
(eieio-object-name-string object)
|
||||
(eieio-object-class object)
|
||||
(eieio-class-parents (eieio-object-class object))
|
||||
(length (object-slots object))
|
||||
))
|
||||
)
|
||||
|
|
@ -82,16 +82,16 @@ PREBUTTONTEXT is some text between PREFIX and the object button."
|
|||
(defmethod data-debug/eieio-insert-slots ((obj eieio-default-superclass)
|
||||
prefix)
|
||||
"Insert the slots of OBJ into the current DDEBUG buffer."
|
||||
(data-debug-insert-thing (object-name-string obj)
|
||||
(data-debug-insert-thing (eieio-object-name-string obj)
|
||||
prefix
|
||||
"Name: ")
|
||||
(let* ((cl (object-class obj))
|
||||
(let* ((cl (eieio-object-class obj))
|
||||
(cv (class-v cl)))
|
||||
(data-debug-insert-thing (class-constructor cl)
|
||||
prefix
|
||||
"Class: ")
|
||||
;; Loop over all the public slots
|
||||
(let ((publa (aref cv class-public-a))
|
||||
(let ((publa (eieio--class-public-a cv))
|
||||
)
|
||||
(while publa
|
||||
(if (slot-boundp obj (car publa))
|
||||
|
|
@ -123,7 +123,7 @@ PREBUTTONTEXT is some text between PREFIX and the object button."
|
|||
;;
|
||||
(defmethod data-debug-show ((obj eieio-default-superclass))
|
||||
"Run ddebug against any EIEIO object OBJ."
|
||||
(data-debug-new-buffer (format "*%s DDEBUG*" (object-name obj)))
|
||||
(data-debug-new-buffer (format "*%s DDEBUG*" (eieio-object-name obj)))
|
||||
(data-debug-insert-object-slots obj "]"))
|
||||
|
||||
;;; DEBUG FUNCTIONS
|
||||
|
|
|
|||
|
|
@ -45,7 +45,7 @@ variable `eieio-default-superclass'."
|
|||
nil t)))
|
||||
nil))
|
||||
(if (not root-class) (setq root-class 'eieio-default-superclass))
|
||||
(if (not (class-p root-class)) (signal 'wrong-type-argument (list 'class-p root-class)))
|
||||
(eieio--check-type class-p root-class)
|
||||
(display-buffer (get-buffer-create "*EIEIO OBJECT BROWSE*") t)
|
||||
(with-current-buffer (get-buffer "*EIEIO OBJECT BROWSE*")
|
||||
(erase-buffer)
|
||||
|
|
@ -58,9 +58,9 @@ variable `eieio-default-superclass'."
|
|||
Argument THIS-ROOT is the local root of the tree.
|
||||
Argument PREFIX is the character prefix to use.
|
||||
Argument CH-PREFIX is another character prefix to display."
|
||||
(if (not (class-p (eval this-root))) (signal 'wrong-type-argument (list 'class-p this-root)))
|
||||
(eieio--check-type class-p this-root)
|
||||
(let ((myname (symbol-name this-root))
|
||||
(chl (aref (class-v this-root) class-children))
|
||||
(chl (eieio--class-children (class-v this-root)))
|
||||
(fprefix (concat ch-prefix " +--"))
|
||||
(mprefix (concat ch-prefix " | "))
|
||||
(lprefix (concat ch-prefix " ")))
|
||||
|
|
@ -99,7 +99,7 @@ Optional HEADERFCN should be called to insert a few bits of info first."
|
|||
(princ "'"))
|
||||
(terpri)
|
||||
;; Inheritance tree information
|
||||
(let ((pl (class-parents class)))
|
||||
(let ((pl (eieio-class-parents class)))
|
||||
(when pl
|
||||
(princ " Inherits from ")
|
||||
(while pl
|
||||
|
|
@ -107,7 +107,7 @@ Optional HEADERFCN should be called to insert a few bits of info first."
|
|||
(setq pl (cdr pl))
|
||||
(if pl (princ ", ")))
|
||||
(terpri)))
|
||||
(let ((ch (class-children class)))
|
||||
(let ((ch (eieio-class-children class)))
|
||||
(when ch
|
||||
(princ " Children ")
|
||||
(while ch
|
||||
|
|
@ -177,13 +177,13 @@ Optional HEADERFCN should be called to insert a few bits of info first."
|
|||
"Describe the slots in CLASS.
|
||||
Outputs to the standard output."
|
||||
(let* ((cv (class-v class))
|
||||
(docs (aref cv class-public-doc))
|
||||
(names (aref cv class-public-a))
|
||||
(deflt (aref cv class-public-d))
|
||||
(types (aref cv class-public-type))
|
||||
(publp (aref cv class-public-printer))
|
||||
(docs (eieio--class-public-doc cv))
|
||||
(names (eieio--class-public-a cv))
|
||||
(deflt (eieio--class-public-d cv))
|
||||
(types (eieio--class-public-type cv))
|
||||
(publp (eieio--class-public-printer cv))
|
||||
(i 0)
|
||||
(prot (aref cv class-protection))
|
||||
(prot (eieio--class-protection cv))
|
||||
)
|
||||
(princ "Instance Allocated Slots:")
|
||||
(terpri)
|
||||
|
|
@ -213,11 +213,11 @@ Outputs to the standard output."
|
|||
publp (cdr publp)
|
||||
prot (cdr prot)
|
||||
i (1+ i)))
|
||||
(setq docs (aref cv class-class-allocation-doc)
|
||||
names (aref cv class-class-allocation-a)
|
||||
types (aref cv class-class-allocation-type)
|
||||
(setq docs (eieio--class-class-allocation-doc cv)
|
||||
names (eieio--class-class-allocation-a cv)
|
||||
types (eieio--class-class-allocation-type cv)
|
||||
i 0
|
||||
prot (aref cv class-class-allocation-protection))
|
||||
prot (eieio--class-class-allocation-protection cv))
|
||||
(when names
|
||||
(terpri)
|
||||
(princ "Class Allocated Slots:"))
|
||||
|
|
@ -281,7 +281,7 @@ Uses `eieio-describe-class' to describe the class being constructed."
|
|||
(mapcar
|
||||
(lambda (c)
|
||||
(append (list c) (eieio-build-class-list c)))
|
||||
(class-children-fast class)))
|
||||
(eieio-class-children-fast class)))
|
||||
(list class)))
|
||||
|
||||
(defun eieio-build-class-alist (&optional class instantiable-only buildlist)
|
||||
|
|
@ -291,7 +291,7 @@ If INSTANTIABLE-ONLY is non nil, only allow names of classes which
|
|||
are not abstract, otherwise allow all classes.
|
||||
Optional argument BUILDLIST is more list to attach and is used internally."
|
||||
(let* ((cc (or class eieio-default-superclass))
|
||||
(sublst (aref (class-v cc) class-children)))
|
||||
(sublst (eieio--class-children (class-v cc))))
|
||||
(unless (assoc (symbol-name cc) buildlist)
|
||||
(when (or (not instantiable-only) (not (class-abstract-p cc)))
|
||||
(setq buildlist (cons (cons (symbol-name cc) 1) buildlist))))
|
||||
|
|
@ -335,8 +335,7 @@ are not abstract."
|
|||
"Describe the generic function GENERIC.
|
||||
Also extracts information about all methods specific to this generic."
|
||||
(interactive (list (eieio-read-generic "Generic Method: ")))
|
||||
(if (not (generic-p generic))
|
||||
(signal 'wrong-type-argument '(generic-p generic)))
|
||||
(eieio--check-type generic-p generic)
|
||||
(with-output-to-temp-buffer (help-buffer) ; "*Help*"
|
||||
(help-setup-xref (list #'eieio-describe-generic generic)
|
||||
(called-interactively-p 'interactive))
|
||||
|
|
@ -757,9 +756,8 @@ current expansion depth."
|
|||
|
||||
(defun eieio-class-button (class depth)
|
||||
"Draw a speedbar button at the current point for CLASS at DEPTH."
|
||||
(if (not (class-p class))
|
||||
(signal 'wrong-type-argument (list 'class-p class)))
|
||||
(let ((subclasses (aref (class-v class) class-children)))
|
||||
(eieio--check-type class-p class)
|
||||
(let ((subclasses (eieio--class-children (class-v class))))
|
||||
(if subclasses
|
||||
(speedbar-make-tag-line 'angle ?+
|
||||
'eieio-sb-expand
|
||||
|
|
@ -784,7 +782,7 @@ Argument INDENT is the depth of indentation."
|
|||
(speedbar-with-writable
|
||||
(save-excursion
|
||||
(end-of-line) (forward-char 1)
|
||||
(let ((subclasses (aref (class-v class) class-children)))
|
||||
(let ((subclasses (eieio--class-children (class-v class))))
|
||||
(while subclasses
|
||||
(eieio-class-button (car subclasses) (1+ indent))
|
||||
(setq subclasses (cdr subclasses)))))))
|
||||
|
|
|
|||
|
|
@ -198,7 +198,7 @@ that path."
|
|||
|
||||
(defmethod eieio-speedbar-description (object)
|
||||
"Return a string describing OBJECT."
|
||||
(object-name-string object))
|
||||
(eieio-object-name-string object))
|
||||
|
||||
(defmethod eieio-speedbar-derive-line-path (object)
|
||||
"Return the path which OBJECT has something to do with."
|
||||
|
|
@ -206,7 +206,7 @@ that path."
|
|||
|
||||
(defmethod eieio-speedbar-object-buttonname (object)
|
||||
"Return a string to use as a speedbar button for OBJECT."
|
||||
(object-name-string object))
|
||||
(eieio-object-name-string object))
|
||||
|
||||
(defmethod eieio-speedbar-make-tag-line (object depth)
|
||||
"Insert a tag line into speedbar at point for OBJECT.
|
||||
|
|
@ -324,7 +324,7 @@ Argument DEPTH is the depth at which the tag line is inserted."
|
|||
(defmethod eieio-speedbar-child-make-tag-lines ((object eieio-speedbar) depth)
|
||||
"Base method for creating tag lines for non-object children."
|
||||
(error "You must implement `eieio-speedbar-child-make-tag-lines' for %s"
|
||||
(object-name object)))
|
||||
(eieio-object-name object)))
|
||||
|
||||
(defmethod eieio-speedbar-expand ((object eieio-speedbar) depth)
|
||||
"Expand OBJECT at indentation DEPTH.
|
||||
|
|
@ -365,7 +365,7 @@ TOKEN is the object. INDENT is the current indentation level."
|
|||
(defmethod eieio-speedbar-child-description ((obj eieio-speedbar))
|
||||
"Return a description for a child of OBJ which is not an object."
|
||||
(error "You must implement `eieio-speedbar-child-description' for %s"
|
||||
(object-name obj)))
|
||||
(eieio-object-name obj)))
|
||||
|
||||
(defun eieio-speedbar-item-info ()
|
||||
"Display info for the current line when in EDE display mode."
|
||||
|
|
|
|||
File diff suppressed because it is too large
Load diff
|
|
@ -1040,6 +1040,7 @@ Show wall-clock time elapsed during execution of COMMAND.")
|
|||
|
||||
(defun eshell/su (&rest args)
|
||||
"Alias \"su\" to call Tramp."
|
||||
(require 'tramp)
|
||||
(setq args (eshell-stringify-list (eshell-flatten-list args)))
|
||||
(let ((orig-args (copy-tree args)))
|
||||
(eshell-eval-using-options
|
||||
|
|
@ -1077,6 +1078,7 @@ Become another USER during a login session.")
|
|||
|
||||
(defun eshell/sudo (&rest args)
|
||||
"Alias \"sudo\" to call Tramp."
|
||||
(require 'tramp)
|
||||
(setq args (eshell-stringify-list (eshell-flatten-list args)))
|
||||
(let ((orig-args (copy-tree args)))
|
||||
(eshell-eval-using-options
|
||||
|
|
@ -1111,8 +1113,6 @@ Execute a COMMAND as the superuser or another USER.")
|
|||
(format "%s|sudo:%s@%s:%s"
|
||||
(substring prefix 0 -1) user host dir)
|
||||
(format "/sudo:%s@%s:%s" user host dir))))
|
||||
;; Ensure, that Tramp has connected to that construct already.
|
||||
(ignore (file-exists-p default-directory))
|
||||
(eshell-named-command (car orig-args) (cdr orig-args))))))))
|
||||
|
||||
(put 'eshell/sudo 'eshell-no-numeric-conversions t)
|
||||
|
|
|
|||
|
|
@ -27,6 +27,14 @@
|
|||
;; Really cool code to lookup info indexes.
|
||||
;; Try especially info-lookup-symbol (aka C-h S).
|
||||
|
||||
;; Some additional sources of (Tex)info files for non-GNU packages:
|
||||
;;
|
||||
;; Scheme: <URL:http://groups.csail.mit.edu/mac/ftpdir/scm/r5rs.info.tar.gz>
|
||||
;; LaTeX:
|
||||
;; <URL:ftp://ctan.tug.org/tex-archive/info/latex2e-help-texinfo/latex2e.texi>
|
||||
;; (or CTAN mirrors)
|
||||
;; Perl: <URL:ftp://ftp.cpan.org/pub/CPAN/doc/manual/texinfo/> (or CPAN mirrors)
|
||||
|
||||
;;; Code:
|
||||
|
||||
(require 'info)
|
||||
|
|
|
|||
|
|
@ -98,16 +98,30 @@ matching entry in for PROPERTY in `tramp-cache-data'."
|
|||
(defvar tramp-cache-data-changed nil
|
||||
"Whether persistent cache data have been changed.")
|
||||
|
||||
(defun tramp-get-hash-table (key)
|
||||
"Returns the hash table for KEY.
|
||||
If it doesn't exist yet, it is created and initialized with
|
||||
matching entries of `tramp-connection-properties'."
|
||||
(or (gethash key tramp-cache-data)
|
||||
(let ((hash
|
||||
(puthash key (make-hash-table :test 'equal) tramp-cache-data)))
|
||||
(when (vectorp key)
|
||||
(dolist (elt tramp-connection-properties)
|
||||
(when (string-match
|
||||
(or (nth 0 elt) "")
|
||||
(tramp-make-tramp-file-name
|
||||
(aref key 0) (aref key 1) (aref key 2) nil))
|
||||
(tramp-set-connection-property key (nth 1 elt) (nth 2 elt)))))
|
||||
hash)))
|
||||
|
||||
;;;###tramp-autoload
|
||||
(defun tramp-get-file-property (vec file property default)
|
||||
"Get the PROPERTY of FILE from the cache context of VEC.
|
||||
(defun tramp-get-file-property (key file property default)
|
||||
"Get the PROPERTY of FILE from the cache context of KEY.
|
||||
Returns DEFAULT if not set."
|
||||
;; Unify localname.
|
||||
(setq vec (copy-sequence vec))
|
||||
(aset vec 3 (tramp-run-real-handler 'directory-file-name (list file)))
|
||||
(let* ((hash (or (gethash vec tramp-cache-data)
|
||||
(puthash vec (make-hash-table :test 'equal)
|
||||
tramp-cache-data)))
|
||||
(setq key (copy-sequence key))
|
||||
(aset key 3 (tramp-run-real-handler 'directory-file-name (list file)))
|
||||
(let* ((hash (tramp-get-hash-table key))
|
||||
(value (when (hash-table-p hash) (gethash property hash))))
|
||||
(if
|
||||
;; We take the value only if there is any, and
|
||||
|
|
@ -125,7 +139,7 @@ Returns DEFAULT if not set."
|
|||
(setq value (cdr value))
|
||||
(setq value default))
|
||||
|
||||
(tramp-message vec 8 "%s %s %s" file property value)
|
||||
(tramp-message key 8 "%s %s %s" file property value)
|
||||
(when (>= tramp-verbose 10)
|
||||
(let* ((var (intern (concat "tramp-cache-get-count-" property)))
|
||||
(val (or (ignore-errors (symbol-value var)) 0)))
|
||||
|
|
@ -133,18 +147,16 @@ Returns DEFAULT if not set."
|
|||
value))
|
||||
|
||||
;;;###tramp-autoload
|
||||
(defun tramp-set-file-property (vec file property value)
|
||||
"Set the PROPERTY of FILE to VALUE, in the cache context of VEC.
|
||||
(defun tramp-set-file-property (key file property value)
|
||||
"Set the PROPERTY of FILE to VALUE, in the cache context of KEY.
|
||||
Returns VALUE."
|
||||
;; Unify localname.
|
||||
(setq vec (copy-sequence vec))
|
||||
(aset vec 3 (tramp-run-real-handler 'directory-file-name (list file)))
|
||||
(let ((hash (or (gethash vec tramp-cache-data)
|
||||
(puthash vec (make-hash-table :test 'equal)
|
||||
tramp-cache-data))))
|
||||
(setq key (copy-sequence key))
|
||||
(aset key 3 (tramp-run-real-handler 'directory-file-name (list file)))
|
||||
(let ((hash (tramp-get-hash-table key)))
|
||||
;; We put the timestamp there.
|
||||
(puthash property (cons (current-time) value) hash)
|
||||
(tramp-message vec 8 "%s %s %s" file property value)
|
||||
(tramp-message key 8 "%s %s %s" file property value)
|
||||
(when (>= tramp-verbose 10)
|
||||
(let* ((var (intern (concat "tramp-cache-set-count-" property)))
|
||||
(val (or (ignore-errors (symbol-value var)) 0)))
|
||||
|
|
@ -152,26 +164,26 @@ Returns VALUE."
|
|||
value))
|
||||
|
||||
;;;###tramp-autoload
|
||||
(defun tramp-flush-file-property (vec file)
|
||||
"Remove all properties of FILE in the cache context of VEC."
|
||||
(defun tramp-flush-file-property (key file)
|
||||
"Remove all properties of FILE in the cache context of KEY."
|
||||
;; Remove file property of symlinks.
|
||||
(let ((truename (tramp-get-file-property vec file "file-truename" nil)))
|
||||
(let ((truename (tramp-get-file-property key file "file-truename" nil)))
|
||||
(when (and (stringp truename)
|
||||
(not (string-equal file truename)))
|
||||
(tramp-flush-file-property vec truename)))
|
||||
(tramp-flush-file-property key truename)))
|
||||
;; Unify localname.
|
||||
(setq vec (copy-sequence vec))
|
||||
(aset vec 3 (tramp-run-real-handler 'directory-file-name (list file)))
|
||||
(tramp-message vec 8 "%s" file)
|
||||
(remhash vec tramp-cache-data))
|
||||
(setq key (copy-sequence key))
|
||||
(aset key 3 (tramp-run-real-handler 'directory-file-name (list file)))
|
||||
(tramp-message key 8 "%s" file)
|
||||
(remhash key tramp-cache-data))
|
||||
|
||||
;;;###tramp-autoload
|
||||
(defun tramp-flush-directory-property (vec directory)
|
||||
"Remove all properties of DIRECTORY in the cache context of VEC.
|
||||
(defun tramp-flush-directory-property (key directory)
|
||||
"Remove all properties of DIRECTORY in the cache context of KEY.
|
||||
Remove also properties of all files in subdirectories."
|
||||
(let ((directory (tramp-run-real-handler
|
||||
'directory-file-name (list directory))))
|
||||
(tramp-message vec 8 "%s" directory)
|
||||
(tramp-message key 8 "%s" directory)
|
||||
(maphash
|
||||
(lambda (key value)
|
||||
(when (and (stringp (tramp-file-name-localname key))
|
||||
|
|
@ -216,28 +228,10 @@ If the value is not set for the connection, returns DEFAULT."
|
|||
(when (vectorp key)
|
||||
(setq key (copy-sequence key))
|
||||
(aset key 3 nil))
|
||||
(let* ((hash (gethash key tramp-cache-data))
|
||||
(value
|
||||
(catch 'result
|
||||
(or
|
||||
;; Check for dynamic properties.
|
||||
(and
|
||||
(hash-table-p hash)
|
||||
(maphash
|
||||
(lambda (x y) (when (equal x property) (throw 'result y)))
|
||||
hash))
|
||||
;; Check for static properties.
|
||||
(and
|
||||
(vectorp key)
|
||||
(dolist (elt tramp-connection-properties)
|
||||
(when (and (string-match
|
||||
(or (nth 0 elt) "")
|
||||
(tramp-make-tramp-file-name
|
||||
(aref key 0) (aref key 1) (aref key 2) nil))
|
||||
(string-equal (or (nth 1 elt) "") (or property "")))
|
||||
(throw 'result (nth 2 elt)))))
|
||||
;; The default value.
|
||||
default))))
|
||||
(let* ((hash (tramp-get-hash-table key))
|
||||
(value (if (hash-table-p hash)
|
||||
(gethash property hash default)
|
||||
default)))
|
||||
(tramp-message key 7 "%s %s" property value)
|
||||
value))
|
||||
|
||||
|
|
@ -251,14 +245,18 @@ PROPERTY is set persistent when KEY is a vector."
|
|||
(when (vectorp key)
|
||||
(setq key (copy-sequence key))
|
||||
(aset key 3 nil))
|
||||
(let ((hash (or (gethash key tramp-cache-data)
|
||||
(puthash key (make-hash-table :test 'equal)
|
||||
tramp-cache-data))))
|
||||
(let ((hash (tramp-get-hash-table key)))
|
||||
(puthash property value hash)
|
||||
(setq tramp-cache-data-changed t)
|
||||
(tramp-message key 7 "%s %s" property value)
|
||||
value))
|
||||
|
||||
;;;###tramp-autoload
|
||||
(defun tramp-connection-property-p (key property)
|
||||
"Check whether named PROPERTY of a connection is defined.
|
||||
KEY identifies the connection, it is either a process or a vector."
|
||||
(not (eq (tramp-get-connection-property key property 'undef) 'undef)))
|
||||
|
||||
;;;###tramp-autoload
|
||||
(defun tramp-flush-connection-property (key)
|
||||
"Remove all properties identified by KEY.
|
||||
|
|
@ -272,10 +270,8 @@ KEY identifies the connection, it is either a process or a vector."
|
|||
key 7 "%s %s" key
|
||||
(let ((hash (gethash key tramp-cache-data))
|
||||
properties)
|
||||
(if (hash-table-p hash)
|
||||
(maphash
|
||||
(lambda (x y) (add-to-list 'properties x 'append))
|
||||
(gethash key tramp-cache-data)))
|
||||
(when (hash-table-p hash)
|
||||
(maphash (lambda (x y) (add-to-list 'properties x 'append)) hash))
|
||||
properties))
|
||||
(setq tramp-cache-data-changed t)
|
||||
(remhash key tramp-cache-data))
|
||||
|
|
@ -396,7 +392,11 @@ for all methods. Resulting data are derived from connection history."
|
|||
(while (setq element (pop list))
|
||||
(setq key (pop element))
|
||||
(while (setq item (pop element))
|
||||
(tramp-set-connection-property key (pop item) (car item)))))
|
||||
;; We set only values which are not contained in
|
||||
;; `tramp-connection-properties'. The cache is
|
||||
;; initialized properly by side effect.
|
||||
(unless (tramp-connection-property-p key (car item))
|
||||
(tramp-set-connection-property key (pop item) (car item))))))
|
||||
(setq tramp-cache-data-changed nil))
|
||||
(file-error
|
||||
;; Most likely because the file doesn't exist yet. No message.
|
||||
|
|
|
|||
|
|
@ -2784,7 +2784,11 @@ the result will be a local, non-Tramp, filename."
|
|||
(or (null program) tramp-process-connection-type))
|
||||
(bmp (and (buffer-live-p buffer) (buffer-modified-p buffer)))
|
||||
(name1 name)
|
||||
(i 0))
|
||||
(i 0)
|
||||
;; We do not want to raise an error when
|
||||
;; `start-file-process' has been started several time in
|
||||
;; `eshell' and friends.
|
||||
(tramp-current-connection nil))
|
||||
|
||||
(unless buffer
|
||||
;; BUFFER can be nil. We use a temporary buffer.
|
||||
|
|
|
|||
|
|
@ -708,10 +708,9 @@ START is the buffer position where the sexp starts."
|
|||
;; After backslash
|
||||
((setq start (when (not (or (python-syntax-context 'string ppss)
|
||||
(python-syntax-context 'comment ppss)))
|
||||
(let ((line-beg-pos (line-beginning-position)))
|
||||
(when (python-info-line-ends-backslash-p
|
||||
(1- line-beg-pos))
|
||||
(- line-beg-pos 2)))))
|
||||
(let ((line-beg-pos (line-number-at-pos)))
|
||||
(python-info-line-ends-backslash-p
|
||||
(1- line-beg-pos)))))
|
||||
'after-backslash)
|
||||
;; After beginning of block
|
||||
((setq start (save-excursion
|
||||
|
|
@ -3115,7 +3114,7 @@ With optional argument LINE-NUMBER, check that line instead."
|
|||
(save-restriction
|
||||
(widen)
|
||||
(when line-number
|
||||
(goto-char line-number))
|
||||
(python-util-goto-line line-number))
|
||||
(while (and (not (eobp))
|
||||
(goto-char (line-end-position))
|
||||
(python-syntax-context 'paren)
|
||||
|
|
@ -3131,7 +3130,7 @@ Optional argument LINE-NUMBER forces the line number to check against."
|
|||
(save-restriction
|
||||
(widen)
|
||||
(when line-number
|
||||
(goto-char line-number))
|
||||
(python-util-goto-line line-number))
|
||||
(when (python-info-line-ends-backslash-p)
|
||||
(while (save-excursion
|
||||
(goto-char (line-beginning-position))
|
||||
|
|
@ -3210,7 +3209,9 @@ operator."
|
|||
|
||||
(defun python-info-current-line-comment-p ()
|
||||
"Check if current line is a comment line."
|
||||
(char-equal (or (char-after (+ (point) (current-indentation))) ?_) ?#))
|
||||
(char-equal
|
||||
(or (char-after (+ (line-beginning-position) (current-indentation))) ?_)
|
||||
?#))
|
||||
|
||||
(defun python-info-current-line-empty-p ()
|
||||
"Check if current line is empty, ignoring whitespace."
|
||||
|
|
@ -3225,12 +3226,10 @@ operator."
|
|||
|
||||
;;; Utility functions
|
||||
|
||||
(defun python-util-position (item seq)
|
||||
"Find the first occurrence of ITEM in SEQ.
|
||||
Return the index of the matching item, or nil if not found."
|
||||
(let ((member-result (member item seq)))
|
||||
(when member-result
|
||||
(- (length seq) (length member-result)))))
|
||||
(defun python-util-goto-line (line-number)
|
||||
"Move point to LINE-NUMBER."
|
||||
(goto-char (point-min))
|
||||
(forward-line (1- line-number)))
|
||||
|
||||
;; Stolen from org-mode
|
||||
(defun python-util-clone-local-variables (from-buffer &optional regexp)
|
||||
|
|
|
|||
|
|
@ -1,3 +1,8 @@
|
|||
2013-02-19 Eli Zaretskii <eliz@gnu.org>
|
||||
|
||||
* w32proc.c (new_child): Avoid leaking handles if the subprocess
|
||||
resources were not orderly released.
|
||||
|
||||
2013-02-17 Eli Zaretskii <eliz@gnu.org>
|
||||
|
||||
* xdisp.c (x_draw_vertical_border): For a window that is neither
|
||||
|
|
|
|||
|
|
@ -19171,7 +19171,7 @@
|
|||
* coding.c (code_convert_region_unwind):
|
||||
Set Vlast_coding_system_used to the argument.
|
||||
(code_convert_region): If post-read-conversion function changed
|
||||
the value of last-coding-sytem, keep the new value in
|
||||
the value of last-coding-system, keep the new value in
|
||||
coding->symbol so that it won't be overridden.
|
||||
(run_pre_post_conversion_on_str): Likewise.
|
||||
(coding_system_accept_latin_extra_p): New function.
|
||||
|
|
|
|||
|
|
@ -3053,7 +3053,7 @@ extern Lisp_Object Qautomatic_gc;
|
|||
extern Lisp_Object Qchar_table_extra_slots;
|
||||
extern struct Lisp_Vector *allocate_vector (EMACS_INT);
|
||||
|
||||
/* Make an unitialized vector for SIZE objects. NOTE: you must
|
||||
/* Make an uninitialized vector for SIZE objects. NOTE: you must
|
||||
be sure that GC cannot happen until the vector is completely
|
||||
initialized. E.g. the following code is likely to crash:
|
||||
|
||||
|
|
|
|||
|
|
@ -500,7 +500,7 @@ set_marker_internal (Lisp_Object marker, Lisp_Object position,
|
|||
register ptrdiff_t charpos, bytepos;
|
||||
|
||||
/* Do not use CHECK_NUMBER_COERCE_MARKER because we
|
||||
don't want to call buf_charpos_to_bytepos if POSTION
|
||||
don't want to call buf_charpos_to_bytepos if POSITION
|
||||
is a marker and so we know the bytepos already. */
|
||||
if (INTEGERP (position))
|
||||
charpos = XINT (position), bytepos = -1;
|
||||
|
|
|
|||
|
|
@ -849,6 +849,12 @@ new_child (void)
|
|||
cp = &child_procs[child_proc_count++];
|
||||
|
||||
Initialize:
|
||||
/* Last opportunity to avoid leaking handles before we forget them
|
||||
for good. */
|
||||
if (cp->procinfo.hProcess)
|
||||
CloseHandle (cp->procinfo.hProcess);
|
||||
if (cp->procinfo.hThread)
|
||||
CloseHandle (cp->procinfo.hThread);
|
||||
memset (cp, 0, sizeof (*cp));
|
||||
cp->fd = -1;
|
||||
cp->pid = -1;
|
||||
|
|
|
|||
|
|
@ -28496,7 +28496,7 @@ x_draw_vertical_border (struct window *w)
|
|||
if (FRAME_HAS_VERTICAL_SCROLL_BARS (XFRAME (w->frame)))
|
||||
return;
|
||||
|
||||
/* Note: It is necessary to redraw bot the left and the right
|
||||
/* Note: It is necessary to redraw both the left and the right
|
||||
borders, for when only this single window W is being
|
||||
redisplayed. */
|
||||
if (!WINDOW_RIGHTMOST_P (w)
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue