Subject: 24.0.50; Movement past end of screen causes weird jump
From: Ivan Andrus <[email-masked]>
To: [email-masked]
Date: Thu, 18 Aug 2011 22:48:07 +0200
List-Id: <debbugs-submit.debbugs.gnu.org>

Please describe exactly what actions triggered the bug, and
the precise symptoms of the bug.  If you can, give a recipe
starting from `emacs -Q':

This bug has been plaguing me for some time, but I was finally able to
create a minimal recipe.  I can't reproduce it with this test in the
terminal and I don't use emacs in the terminal much so I don't know if
it happens there.  It might also be specific to Mac OS X.

It seems (at least in this case) to be dependent on there being a
continued line at the top, and the line that should be moved to just off
the screen so that it would have to rescroll.  Anyway here is the data
that can be used to reproduce it from `emacs -Q`:

Create a buffer with the data and place your cursor after the
first block of elisp code (line 21).  Use C-x C-e to evaluate it
to get all the parameters set up (it will move to the next line),
then C-x C-e again which _should_ move to the end of the file.
However, it moves to the beginning of the current line, so that
repeating C-x C-e will jump back and forth between the beginning
and end of the line.  At least that's what happens to me
today :-) I'm running bzr revno 105479.

-- This is not part of the file --
208. look at docs for `mouse-autoselect-window' to see if there is a better value that I should be using
209. make scroll-bar inactive when full buffer in view
210. make isearch ignore diactritics by default (until one is used or something)
211. use `declare-function' to silence warnings in init.el
212. Change all key bindings to C-c C-f for compiling/linting/syntax checking, C-c C-d for debugging, and C-c C-v for viewing/running
213. Make `to-do' update an org file which contains all the todos
214. Make a `find-nearby' to find 2 things within several lines
215. Make `zap-up-to-char-but-not-including' a la `zap-to-char' (maybe on S-M-z ?)
216. Use `align-regexp' with args to create `align-words' and `align-strings'

-------------------------------------------------------

(progn (set-frame-parameter (selected-frame) 'height 47)
       (set-frame-parameter (selected-frame) 'width (/ 178 2))
       ;; (delete-other-windows)
       ;; (split-window-side-by-side)
       (goto-line 22)
       (recenter -22)
       (move-end-of-line 1)
       (emacs-lisp-mode)
       )
(forward-sexp)

(defadvice server-goto-line-column (after server-visit-region.tex
                                         (line-col)
                                         activate)
 "When visiting a file from an external source, make sure that we
are not narrowed, since the external source almost certainly
uses absolute file line numbers."
 (when (string-match "_region_.tex\\'" (buffer-file-name))
   (save-excursion ;; in case we don't find the other file we at least want the right line...
     (if (re-search-backward
          "\message{ !name(\\([^)]+\\))\\(?: !offset(\\([-0-9]+\\))\\)?\\s *}" nil nil)
         (let ((file-name (match-string 1))
               (offset (match-string 2))
               (line (car (ad-get-arg 0)))
               (col (cdr (ad-get-arg 0))))
           (if offset (setq line (+ line (string-to-number offset))))
           (find-file file-name nil)
           ;; Ironic, but I think cleaner then reimplementing...
           (server-goto-line-column (cons line col))
           (message "Moved from _region_.tex to line %s of %s." line file-name))

       ;; else
       (message "This is _region_.tex, but I couldn't find the original file!")))))
-- This is not part of the file --

The file should be 48 lines, 2275 bytes.

In GNU Emacs 24.0.50.1 (i386-apple-darwin10.8.0, NS apple-appkit-1038.36)
of 2011-08-17 on oroszlan.local
Windowing system distributor `Apple', version 10.3.1038
configured using `configure  '--with-ns''

Important settings:
  value of $LC_ALL: nil
  value of $LC_COLLATE: nil
  value of $LC_CTYPE: nil
  value of $LC_MESSAGES: nil
  value of $LC_MONETARY: nil
  value of $LC_NUMERIC: nil
  value of $LC_TIME: nil
  value of $LANG: nil
  value of $XMODIFIERS: nil
  locale-coding-system: nil
  default enable-multibyte-characters: t

Major mode: Emacs-Lisp

Minor modes in effect:
  diff-auto-refine-mode: t
  shell-dirtrack-mode: t
  gd-enabled: t
  fold-mode-active: t
  TeX-PDF-mode: t
  highlight-parentheses-mode: t
  eldoc-mode: t
  hl-sexp-mode: t
  highlight-symbol-mode: t
  hi-lock-mode: t
  drag-stuff-global-mode: t
  drag-stuff-mode: t
  which-function-mode: t
  show-paren-mode: t
  recentf-mode: t
  msb-mode: t
  ido-everywhere: t
  global-hl-line-mode: t
  delete-selection-mode: t
  auto-image-file-mode: t
  auto-insert-mode: t
  yas/global-mode: t
  global-visible-mark-mode: t
  visible-mark-mode: t
  gvol-mode: t
  desktop-save-mode: t
  command-frequency-autosave-mode: t
  command-frequency-mode: t
  itunes-mode: t
  tooltip-mode: t
  mouse-wheel-mode: t
  tool-bar-mode: t
  menu-bar-mode: t
  file-name-shadow-mode: t
  global-font-lock-mode: t
  font-lock-mode: t
  blink-cursor-mode: t
  auto-composition-mode: t
  auto-encryption-mode: t
  auto-compression-mode: t
  column-number-mode: t
  line-number-mode: t
  transient-mark-mode: t

Recent input:
<backspace> <backspace> <backspace> m a c s - l i s 
p = m <backspace> <backspace> - m o d e <tab> C-e C-x 
C-e C-k C-k <up> C-x C-e <C-up> <C-up> <C-up> <down> 
<down> <down> <down> <down> <down> <down> <down> <down> 
<down> <up> <up> <up> <up> <up> C-e <left> <left> <backspace> 
<C-down> <up> C-x C-e C-x C-e C-e C-x C-e C-x C-e C-x 
C-e C-x C-e C-x C-e C-x C-e <C-up> <C-up> <C-up> <C-up> 
<C-up> C-x C-s C-x 1 <C-down> <C-down> <C-down> <up> 
C-x C-e C-x C-e C-x C-e C-x C-e C-x C-e TAB TAB TAB 
TAB TAB TAB C-; TAB C-; C-k C-k C-k C-k C-k C-k C-k 
TAB C-x C-e C-x C-e C-x 1 C-x C-e C-x C-e C-x C-e C-M-j 
C-M-j C-x 3 TAB TAB TAB TAB TAB TAB TAB TAB C-e C-u 
C-1 M-( / SPC C-M-l SPC 2 C-k C-k C-k C-k C-k C-k C-k 
C-x 1 C-x C-e C-x C-e C-x C-e C-x C-e C-x C-e C-x C-e 
C-x C-e C-x C-e C-x C-s <down> <down> <down> <down> 
<down> <down> <down> <down> <down> <down> <down> <down> 
<down> <down> <down> <down> <down> <down> <down> <down> 
<down> <down> <down> <down> <down> <down> <down> <down> 
C-x C-r C-x C-r C-x C-r C-S-z C-S-z C-S-z C-S-z <down-mouse-1> 
<mouse-1> C-SPC 0 C-e C-x C-e C-j C-SPC 1 C-e C-x C-e 
C-j C-SPC 8 C-e C-x C-e C-j C-SPC 7 C-e C-M-o C-x C-e 
C-x C-e C-x C-e C-M-j C-M-j TAB TAB TAB TAB C-e C-k 
C-k C-k C-x C-e TAB TAB TAB TAB C-o C-o C-SPC 2 C-k 
C-k C-k C-x C-e C-x C-e C-x C-e C-x C-e C-x C-e <help-echo> 
<ns-toggle-toolbar> TAB C-x C-e C-x C-e C-x C-e C-x 
C-e C-e C-x C-e C-x C-e M-x r e p o <tab> r <tab> e 
m <tab> <return>

Recent messages:
nil [2 times]
Mark set
nil
Mark set
nil [2 times]
Mark set
nil [3 times]
Mark set
nil
Making completion list...

Load-path shadows:
None found.

Features:
(shadow message rfc822 mml mml-sec mm-decode mm-bodies mm-encode
mailabbrev gmm-utils mailheader emacsbug mail-utils url-cache timezone
parse-time network-stream starttls url-http tls mail-parse rfc2231
rfc2047 rfc2045 ietf-drums url-gw url-auth url url-proxy url-privacy
url-expand url-methods url-history url-cookie url-util url-parse
url-vars mailcap org-feed align reftex-sel reftex-parse reftex-cite
texmathp sgml-mode ibuf-ext ibuffer smerge-mode diff-mode epa-file epa
epg epg-config autorevert follow vc-dir ewoc mail-extr ffap sort repeat
tabify org-table calc-misc calc-menu calc-ext calc calc-loaddefs
calc-macs shell shell-toggle two-column elide-head vc-bzr find-func
apropos debug subword dabbrev multi-isearch latexenc newcomment
hideshow-org reftex-vcr reftex-dcr reftex-auc reftex reftex-vars preview
prv-emacs tex-fold tex-bar tex-buf toolbar-x font-latex latex tex-style
tex highlight-parentheses reveal org-habit org-wl org-w3m org-vm
org-rmail org-mhe org-mew org-irc org-jsinfo org-infojs org-html org-exp
ob-exp org-exp-blocks org-info org-gnus org-docview org-bibtex bibtex
org-bbdb org-agenda ob-python org ob-emacs-lisp ob-tangle ob-ref ob-lob
ob-table org-footnote org-src ob-comint ob-keys ob ob-eval org-pcomplete
pcomplete org-list org-faces org-compat org-entities org-macs noutline
outline eldoc hl-sexp gvol-light-theme greedy-delete sage-mode
ansi-color hideshow python-21 python gap-mode gap-process
highlight-symbol thingatpt hi-lock drag-stuff vc-hg compile comint
sh-script executable applescript-mode-autoloads auctex-autoloads
tex-site info browse-kill-ring-autoloads columnify-autoloads
drag-stuff-autoloads highlight-parentheses-autoloads
highlight-symbol-autoloads speck-autoloads xml-rpc-autoloads package
tabulated-list saveplace uniquify jka-compr which-func imenu paren
recentf tree-widget wid-edit msb ido icomplete hl-line delsel image-file
cus-start cus-load diary-lib diary-loaddefs cal-menu calendar
cal-loaddefs warnings autoinsert yasnippet dropdown-list derived edmacro
kmacro help-mode view tramp tramp-compat auth-source eieio byte-opt
bytecomp byte-compile cconv macroexp gnus-util mm-util mail-prsvr
password-cache format-spec tramp-loaddefs visible-mark parenface fold cl
commit-patch-buffer log-edit ring pcvs-util add-log vc ediff
vc-dispatcher xml desktop backtr command-frequency uptimes pp server
easy-mmode assoc dired+ dired-x easymenu ediff-merg ediff-diff
ediff-wind ediff-mult ediff-help ediff-init ediff-util dired-aux dired
regexp-opt advice help-fns advice-preload windmove time-date tooltip
ediff-hook vc-hooks lisp-float-type mwheel ns-win tool-bar dnd fontset
image fringe lisp-mode register page menu-bar rfn-eshadow timer select
scroll-bar mouse jit-lock font-lock syntax facemenu font-core frame cham
georgian utf-8-lang misc-lang vietnamese tibetan thai tai-viet lao
korean japanese hebrew greek romanian slovak czech european ethiopic
indian cyrillic chinese case-table epa-hook jka-cmpr-hook help simple
abbrev minibuffer loaddefs button faces cus-face files text-properties
overlay sha1 md5 base64 format env code-pages mule custom widget
hashtable-print-readable backquote make-network-process ns multi-tty
emacs)