Commit 5c9cf0a3 authored by Glenn Morris's avatar Glenn Morris
Browse files

Merge from emacs-24; up to 2012-11-20T20:06:17Z!

parents 848a2dd1 369f945d
2012-11-27 Eli Zaretskii <>
* make-dist (nt): Adjust to changes in names of the *.manifest files.
2012-11-24 Ken Brown <>
* (HAVE_MOUSE): Remove.
......@@ -57,8 +57,7 @@ For each step, check for possible errors.
M-x ediff. Especially check that Info files aren't built.
10. cd EMACS_ROOT_DIR; bzr tag TAG
TAG is EMACS_PRETEST_XX_YY_ZZZ for a pretest, EMACS_XX_YY for a
TAG is emacs-XX.Y.ZZ for a pretest, emacs-XX.Y for a release.
Shortly before the release, cut the version branch also, and open
a Savannah support request asking for commits to the new branch to
2012-11-27 Stefan Monnier <>
* textmodes/table.el (table-insert): Don't use `symbol-name' on
lexically scoped variables (bug#13005).
2012-11-27 Glenn Morris <>
* vc/vc-hooks.el (vc-mistrust-permissions):
Default to t, to avoid data-loss. (Bug#11490)
2012-11-27 Fabián Ezequiel Gallina <fgallina@cuca>
* progmodes/python.el (python-indent-guess-indent-offset):
If indentation is guessed make python-indent-offset buffer-local.
Fix Imenu regression.
* progmodes/python.el (python-nav-beginning-of-defun):
Fix forward movement when statement(s) separates point from defun.
(python-imenu-prev-index-position): New function.
2012-11-27 Eli Zaretskii <>
* subr.el (buffer-file-type): Declare with defvar-local. Doc fix.
* dos-w32.el (find-file-not-found-set-buffer-file-coding-system):
Don't set buffer-file-type. Return nil. (Bug#12989)
2012-11-27 Glenn Morris <>
* hippie-exp.el (hippie-expand-try-functions-list):
Re-autoload it. (Bug#12982)
2012-11-27 Eli Zaretskii <>
* descr-text.el (describe-char-padded-string):
Call internal-char-font only on GUI frames. (Bug#11964)
2012-11-27 Andreas Schwab <>
* buff-menu.el (Buffer-menu-buffer+size-width): Fix customize type
and obsoletion message.
2012-11-27 Stefan Monnier <>
* emacs-lisp/cl-macs.el (cl--transform-lambda): Add back `declare' in
the constructs to keep outside of the `cl-block' (bug#12977).
2012-11-27 Chong Yidong <>
* mouse.el (mouse-drag-line): Even if the line is not draggable,
keep reading until we get the up-event anyway, in order to process
the up-event for mouse-1-click-follows-link (Bug#12971).
2012-11-26 Stefan Monnier <>
* emacs-lisp/advice.el (ad-should-compile): Don't compile advice if the
......@@ -55,12 +55,12 @@ If nil, use `Buffer-menu-name-width' and `Buffer-menu-size-width'.
If non-nil, the value of `Buffer-menu-name-width' is overridden;
the name column is assigned width `Buffer-menu-buffer+size-width'
minus `Buffer-menu-size-width'. This use is deprecated."
:type 'number
:type '(choice (const nil) number)
:group 'Buffer-menu
:version "24.3")
(make-obsolete-variable 'Buffer-menu-buffer+size-width
"`Buffer-menu-name-width' and `Buffer-menu-size-width'"
"use `Buffer-menu-name-width' and `Buffer-menu-size-width' instead."
(defcustom Buffer-menu-name-width 19
......@@ -354,7 +354,8 @@ This function is semi-obsolete. Use `get-char-code-property'."
;; Return a string of CH with composition for padding on both sides.
;; It is displayed without overlapping with the left/right columns.
(defsubst describe-char-padded-string (ch)
(if (internal-char-font nil ch)
(if (and (display-multi-font-p)
(internal-char-font nil ch))
(compose-string (string ch) 0 1 (format "\t%c\t" ch))
(string ch)))
......@@ -210,7 +210,7 @@ set to the appropriate coding system, and the value of
(untranslated-file-p (buffer-file-name))))
(setq coding (coding-system-change-eol-conversion coding 0))
(setq buffer-file-coding-system coding))
(setq buffer-file-type (eq buffer-file-coding-system 'no-conversion)))))
;;; To set the default coding system on new files.
(add-hook 'find-file-not-found-functions
......@@ -216,12 +216,17 @@ The name is made by appending a number to PREFIX, default \"G\"."
(defvar cl--bind-inits) (defvar cl--bind-lets) (defvar cl--bind-forms)
(defun cl--transform-lambda (form bind-block)
"Transform a function form FORM of name BIND-BLOCK.
BIND-BLOCK is the name of the symbol to which the function will be bound,
and which will be used for the name of the `cl-block' surrounding the
function's body.
FORM is of the form (ARGS . BODY)."
(let* ((args (car form)) (body (cdr form)) (orig-args args)
(cl--bind-block bind-block) (cl--bind-defs nil) (cl--bind-enquote nil)
(cl--bind-inits nil) (cl--bind-lets nil) (cl--bind-forms nil)
(header nil) (simple-args nil))
(while (or (stringp (car body))
(memq (car-safe (car body)) '(interactive cl-declare)))
(memq (car-safe (car body)) '(interactive declare cl-declare)))
(push (pop body) header))
(setq args (if (listp args) (cl-copy-list args) (list '&rest args)))
(let ((p (last args))) (if (cdr p) (setcdr p (list '&rest (cdr p)))))
......@@ -199,6 +199,8 @@
(defvar he-search-window ())
;;; Autoloaded for historical reasons (bug#12982)
(defcustom hippie-expand-try-functions-list
......@@ -425,7 +425,7 @@ must be one of the symbols `header', `mode', or `vertical'."
(frame-parameters frame)))
(draggable t)
event position growth dragged)
finished event position growth dragged)
((eq line 'header)
;; Check whether header-line can be dragged at all.
......@@ -457,7 +457,7 @@ must be one of the symbols `header', `mode', or `vertical'."
;; Start tracking.
;; Loop reading events and sampling the position of the mouse.
(while draggable
(while (not finished)
(setq event (read-event))
(setq position (mouse-position))
;; Do nothing if
......@@ -472,7 +472,7 @@ must be one of the symbols `header', `mode', or `vertical'."
;; - there is a keyboard event or some other unknown event.
((not (consp event))
(setq draggable nil))
(setq finished t))
((memq (car event) '(switch-frame select-window))
((not (memq (car event) '(mouse-movement scroll-bar-movement)))
......@@ -480,15 +480,15 @@ must be one of the symbols `header', `mode', or `vertical'."
;; Do not unread a drag-mouse-1 event to avoid selecting
;; some other window. For vertical line dragging do not
;; unread mouse-1 events either (but only if we dragged at
;; least once to allow mouse-1 clicks get through.
;; least once to allow mouse-1 clicks get through).
(unless (and dragged
(if (eq line 'vertical)
(memq (car event) '(drag-mouse-1 mouse-1))
(eq (car event) 'drag-mouse-1)))
(push event unread-command-events)))
(setq draggable nil))
((or (not (eq (car position) frame))
(null (car (cdr position))))
(setq finished t))
((not (and (eq (car position) frame)
(cadr position)))
((eq line 'vertical)
;; Drag vertical divider.
......@@ -33,7 +33,7 @@
;; Implements Syntax highlighting, Indentation, Movement, Shell
;; interaction, Shell completion, Shell virtualenv support, Pdb
;; tracking, Symbol completion, Skeletons, FFAP, Code Check, Eldoc,
;; imenu.
;; Imenu.
;; Syntax highlighting: Fontification of code is provided and supports
;; python's triple quoted strings properly.
......@@ -169,10 +169,12 @@
;; might guessed you should run `python-shell-send-buffer' from time
;; to time to get better results too.
;; imenu: This mode supports imenu in its most basic form, letting it
;; Imenu: This mode supports Imenu in its most basic form, letting it
;; build the necessary alist via `imenu-default-create-index-function'
;; by having set `imenu-extract-index-name-function' to
;; `python-info-current-defun'.
;; `python-info-current-defun' and
;; `imenu-prev-index-position-function' to
;; `python-imenu-prev-index-position'.
;; If you used python-mode.el you probably will miss auto-indentation
;; when inserting newlines. To achieve the same behavior you have
......@@ -656,7 +658,7 @@ These make `python-indent-calculate-indentation' subtract the value of
(if indentation
(setq python-indent-offset indentation)
(set (make-local-variable 'python-indent-offset) indentation)
(message "Can't guess python-indent-offset, using defaults: %s"
......@@ -1098,12 +1100,12 @@ With positive ARG search backwards, else search forwards."
(and (> arg 0)
(and (python-info-current-line-empty-p)
(python-util-forward-comment -1))
(if (python-info-looking-at-beginning-of-defun)
(+ (current-indentation) python-indent-offset)
(while (and
(not (python-info-looking-at-beginning-of-defun))
(or (and (python-info-looking-at-beginning-of-defun)
(+ (current-indentation) python-indent-offset))
(when (and (< arg 0)
......@@ -2880,6 +2882,19 @@ Interactively, prompt for symbol."
(add-to-list 'debug-ignored-errors
"^Eldoc needs an inferior Python process running.")
;;; Imenu
(defun python-imenu-prev-index-position ()
"Python mode's `imenu-prev-index-position-function'."
(let ((found))
(while (and (setq found
(re-search-backward python-nav-beginning-of-defun-regexp nil t))
(not (python-info-looking-at-beginning-of-defun))))
(and found
;;; Misc helpers
......@@ -3225,6 +3240,9 @@ if that value is non-nil."
(set (make-local-variable 'imenu-extract-index-name-function)
(set (make-local-variable 'imenu-prev-index-position-function)
(set (make-local-variable 'add-log-current-defun-function)
......@@ -2622,13 +2622,14 @@ When the hook runs, the temporary buffer is current.
This hook is normally set up with a function to put the buffer in Help
;; Avoid compiler warnings about this variable,
;; which has a special meaning on certain system types.
(defvar buffer-file-type nil
(defvar-local buffer-file-type nil
"Non-nil if the visited file is a binary file.
This variable is meaningful on MS-DOG and Windows NT.
This variable is meaningful on MS-DOG and MS-Windows.
On those systems, it is automatically local in every buffer.
On other systems, this variable is normally always nil.")
On other systems, this variable is normally always nil.
WARNING: This variable is obsolete and will disapper Real Soon Now.
Don't use it!")
;; The `assert' macro from the cl package signals
;; `cl-assertion-failed' at runtime so always define it.
......@@ -1570,8 +1570,7 @@ results.
Inside a table cell has a special keymap.
......@@ -1583,41 +1582,47 @@ Inside a table cell has a special keymap.
("Cell width(s)" . table-cell-width-history)
("Cell height(s)" . table-cell-height-history)))))
;; reform the arguments.
;; Reform the arguments.
(if (null cell-width) (setq cell-width (car table-cell-width-history)))
(if (null cell-height) (setq cell-height (car table-cell-height-history)))
(if (stringp columns) (setq columns (string-to-number columns)))
(if (stringp rows) (setq rows (string-to-number rows)))
(if (stringp cell-width) (setq cell-width (table--string-to-number-list cell-width)))
(if (stringp cell-height) (setq cell-height (table--string-to-number-list cell-height)))
(if (stringp cell-width)
(setq cell-width (table--string-to-number-list cell-width)))
(if (stringp cell-height)
(setq cell-height (table--string-to-number-list cell-height)))
(if (numberp cell-width) (setq cell-width (cons cell-width nil)))
(if (numberp cell-height) (setq cell-height (cons cell-height nil)))
;; test validity of the arguments.
(mapc (lambda (arg)
(let* ((value (symbol-value arg))
(function (lambda ()
(error "%s must be a positive integer%s" arg
(if (listp value) " or a list of positive integers" ""))))))
(if (null value) (funcall error-handler))
(mapcar (function (lambda (arg1)
(if (or (not (integerp arg1))
(< arg1 1))
(funcall error-handler))))
(if (listp value) value
(cons value nil)))))
'(columns rows cell-width cell-height))
;; Test validity of the arguments.
(dolist (arg `((columns . ,columns)
(rows . ,rows)
(cell-width . ,cell-width)
(cell-height . ,cell-height)))
(let* ((value (cdr arg))
(lambda ()
(error "%s must be a positive integer%s" (car arg)
(if (listp value)
" or a list of positive integers" "")))))
(if (null value) (funcall error-handler))
(dolist (arg1 (if (listp value) value
(cons value nil)))
(if (or (not (integerp arg1))
(< arg1 1))
(funcall error-handler)))))
(let ((orig-coord (table--get-coordinate))
(coord (table--get-coordinate))
r i cw ch cell-str border-str)
;; prefabricate the building blocks border-str and cell-str.
;; Prefabricate the building blocks border-str and cell-str.
;; construct border-str
;; Construct border-str.
(insert table-cell-intersection-char)
(setq cw cell-width)
(setq i 0)
(while (< i columns)
(insert (make-string (car cw) (string-to-char table-cell-horizontal-chars)) table-cell-intersection-char)
(insert (make-string (car cw)
(string-to-char table-cell-horizontal-chars))
(if (cdr cw) (setq cw (cdr cw)))
(setq i (1+ i)))
(setq border-str (buffer-substring (point-min) (point-max)))
......@@ -107,10 +107,12 @@ control systems."
:type 'boolean
:group 'vc)
(defcustom vc-mistrust-permissions nil
;; If you fix bug#11490, probably you can set this back to nil.
(defcustom vc-mistrust-permissions t
"If non-nil, don't assume permissions/ownership track version-control status.
If nil, do rely on the permissions.
See also variable `vc-consult-headers'."
:version "24.3" ; nil->t, bug#11490
:type 'boolean
:group 'vc)
......@@ -381,9 +381,9 @@ echo "Making links to \`m4'"
echo "Making links to \`nt'"
(cd nt
ln emacs.manifest emacs.rc emacsclient.rc config.nt ../${tempdir}/nt
ln emacs-src.tags nmake.defs gmake.defs subdirs.el ../${tempdir}/nt
ln [a-z]*.bat [a-z]*.[ch] ../${tempdir}/nt
ln emacs-x86.manifest emacs-x64.manifest emacs.rc ../${tempdir}/nt
ln config.nt emacsclient.rc emacs-src.tags ../${tempdir}/nt
ln nmake.defs gmake.defs subdirs.el [a-z]*.bat [a-z]*.[ch] ../${tempdir}/nt
ln ChangeLog INSTALL README README.W32 makefile.w32-in ../${tempdir}/nt)
echo "Making links to \`nt/inc' and its subdirectories"
2012-11-27 Eli Zaretskii <>
* fontset.c (Finternal_char_font): Return nil on non-GUI frames.
* xdisp.c (draw_glyphs): Don't draw in mouse face if mouse
highlighting on the frame was cleared. Prevents assertion
violations when repeatedly clicking on the "Top" link of the
"bread-crumbs" in Info buffers.
2012-11-25 Paul Eggert <>
* sysdep.c (sys_subshell): Don't assume pid_t fits in int.
......@@ -1876,6 +1876,8 @@ DEFUN ("internal-char-font", Finternal_char_font, Sinternal_char_font, 1, 2, 0,
if (! CHAR_VALID_P (c))
return Qnil;
if (!FRAME_WINDOW_P (f))
return Qnil;
face_id = FACE_FOR_CHAR (f, FACE_FROM_ID (f, face_id), c, pos, Qnil);
face = FACE_FROM_ID (f, face_id);
if (face->font)
......@@ -23506,7 +23506,9 @@ draw_glyphs (struct window *w, int x, struct glyph_row *row,
/* If mouse highlighting is on, we may need to draw adjacent
glyphs using mouse-face highlighting. */
if (area == TEXT_AREA && row->mouse_face_p)
if (area == TEXT_AREA && row->mouse_face_p
&& hlinfo->mouse_face_beg_row >= 0
&& hlinfo->mouse_face_end_row >= 0)
struct glyph_row *mouse_beg_row, *mouse_end_row;
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment