Subject: bug#13111: 24.3.50; C-p moves cursor 2 lines up when global-linum-mode is enabled

From: vineet naik <[email-masked]>
Date: Fri, 7 Dec 2012 10:58:55 +0530

Hello,

I am using the latest version of Damien Cassou's emacs-snapshot[1] on
Ubuntu 12.04. After it was updated a few days back, I noticed a weird
behaviour of `C-p` skipping a line when moving up, ie. C-p moves the
cursor 2 lines up instead of 1

After disabling some of my initializations, I figured out that this
happens only if global-linum-mode is enabled.

Recipe
------

1. Start emacs with "emacs -Q"
2. Open any file having multiple lines of text/code and try
   using C-p to move up a line. This works as expected.
3. Enable global-linum-mode
4. Try it again. C-p moves two lines up

In GNU Emacs 24.3.50.1 (i686-pc-linux-gnu, GTK+ Version 3.4.2)
 of 2012-12-03 on chindi02, modified by Debian
 (emacs-snapshot package, version 2:20121202-1~ppa1~precise1)
Windowing system distributor `The X.Org Foundation', version 11.0.11103000
System Description: Ubuntu 12.04.1 LTS

Configured using:
 `configure '--build' 'i686-linux-gnu' '--host' 'i686-linux-gnu'
 '--prefix=/usr' '--sharedstatedir=/var/lib' '--libexecdir=/usr/lib'
 '--localstatedir=/var' '--infodir=/usr/share/info'
 '--mandir=/usr/share/man' '--with-pop=yes'
 '--enable-locallisppath=/etc/emacs-snapshot:/etc/emacs:/usr/local/share/emacs/24.3.50/site-lisp:/usr/local/share/emacs/site-lisp:/usr/share/emacs/24.3.50/site-lisp:/usr/share/emacs/site-lisp'
 '--without-compress-info' '--with-crt-dir=/usr/lib/i386-linux-gnu/'
 '--with-x=yes' '--with-x-toolkit=gtk3' '--with-imagemagick=yes'
 'build_alias=i686-linux-gnu' 'host_alias=i686-linux-gnu'
 'CFLAGS=-DDEBIAN -DSITELOAD_PURESIZE_EXTRA=5000 -g -O2' 'LDFLAGS=-g
 -Wl,--as-needed -znocombreloc' 'CPPFLAGS=-D_FORTIFY_SOURCE=2''

Important settings:
  value of $LANG: en_IN
  locale-coding-system: iso-latin-1-unix
  default enable-multibyte-characters: t

Major mode: Lisp Interaction

Minor modes in effect:
  show-paren-mode: t
  which-function-mode: t
  icomplete-mode: t
  iswitchb-mode: t
  tooltip-mode: t
  mouse-wheel-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
  line-number-mode: t
  transient-mark-mode: t

Recent input:
M-x r e p o r t - e m <tab> <return>

Recent messages:
`flet' is an obsolete macro (as of 24.3); use either `cl-flet' or
`cl-letf'. [3 times]
Loading /home/vineet/emacs/site/org.el (source)...
`flet' is an obsolete macro (as of 24.3); use either `cl-flet' or
`cl-letf'. [5 times]
`labels' is an obsolete macro (as of 24.3); use `cl-labels' instead.
`flet' is an obsolete macro (as of 24.3); use either `cl-flet' or
`cl-letf'. [17 times]
Loading /home/vineet/emacs/site/org.el (source)...done
`flet' is an obsolete macro (as of 24.3); use either `cl-flet' or `cl-letf'.
Loading /home/vineet/emacs/site/ondemand.el (source)...done
Loading /home/vineet/emacs/site/init.el (source)...done
For information about GNU Emacs and the GNU system, type C-h C-a.

Load-path shadows:
/usr/share/emacs/24.3.50/site-lisp/debian-startup hides
/usr/share/emacs/site-lisp/debian-startup
~/emacs/site/org-mode/lisp/org-vm hides
/usr/share/emacs/24.3.50/lisp/org/org-vm
~/emacs/site/org-mode/lisp/org-colview hides
/usr/share/emacs/24.3.50/lisp/org/org-colview
~/emacs/site/org-mode/lisp/org-agenda hides
/usr/share/emacs/24.3.50/lisp/org/org-agenda
~/emacs/site/org-mode/lisp/org-crypt hides
/usr/share/emacs/24.3.50/lisp/org/org-crypt
~/emacs/site/org-mode/lisp/org-mobile hides
/usr/share/emacs/24.3.50/lisp/org/org-mobile
~/emacs/site/org-mode/lisp/ob-io hides
/usr/share/emacs/24.3.50/lisp/org/ob-io
~/emacs/site/org-mode/lisp/org-src hides
/usr/share/emacs/24.3.50/lisp/org/org-src
~/emacs/site/org-mode/lisp/org-xoxo hides
/usr/share/emacs/24.3.50/lisp/org/org-xoxo
~/emacs/site/org-mode/lisp/org-mac-message hides
/usr/share/emacs/24.3.50/lisp/org/org-mac-message
~/emacs/site/org-mode/lisp/org-mks hides
/usr/share/emacs/24.3.50/lisp/org/org-mks
~/emacs/site/org-mode/lisp/org-exp hides
/usr/share/emacs/24.3.50/lisp/org/org-exp
~/emacs/site/org-mode/lisp/org-irc hides
/usr/share/emacs/24.3.50/lisp/org/org-irc
~/emacs/site/org-mode/lisp/org-ctags hides
/usr/share/emacs/24.3.50/lisp/org/org-ctags
~/emacs/site/org-mode/lisp/ob-ref hides
/usr/share/emacs/24.3.50/lisp/org/ob-ref
~/emacs/site/org-mode/lisp/org-attach hides
/usr/share/emacs/24.3.50/lisp/org/org-attach
~/emacs/site/org-mode/lisp/ob-C hides /usr/share/emacs/24.3.50/lisp/org/ob-C
~/emacs/site/org-mode/lisp/ob-dot hides
/usr/share/emacs/24.3.50/lisp/org/ob-dot
~/emacs/site/org-mode/lisp/ob-awk hides
/usr/share/emacs/24.3.50/lisp/org/ob-awk
~/emacs/site/org-mode/lisp/ob-eval hides
/usr/share/emacs/24.3.50/lisp/org/ob-eval
~/emacs/site/org-mode/lisp/ob-maxima hides
/usr/share/emacs/24.3.50/lisp/org/ob-maxima
~/emacs/site/org-mode/lisp/ob-shen hides
/usr/share/emacs/24.3.50/lisp/org/ob-shen
~/emacs/site/org-mode/lisp/ob hides /usr/share/emacs/24.3.50/lisp/org/ob
~/emacs/site/org-mode/lisp/org-info hides
/usr/share/emacs/24.3.50/lisp/org/org-info
~/emacs/site/org-mode/lisp/ob-picolisp hides
/usr/share/emacs/24.3.50/lisp/org/ob-picolisp
~/emacs/site/org-mode/lisp/org-docbook hides
/usr/share/emacs/24.3.50/lisp/org/org-docbook
~/emacs/site/org-mode/lisp/org hides /usr/share/emacs/24.3.50/lisp/org/org
~/emacs/site/org-mode/lisp/org-special-blocks hides
/usr/share/emacs/24.3.50/lisp/org/org-special-blocks
~/emacs/site/org-mode/lisp/org-clock hides
/usr/share/emacs/24.3.50/lisp/org/org-clock
~/emacs/site/org-mode/lisp/ob-org hides
/usr/share/emacs/24.3.50/lisp/org/ob-org
~/emacs/site/org-mode/lisp/ob-lisp hides
/usr/share/emacs/24.3.50/lisp/org/ob-lisp
~/emacs/site/org-mode/lisp/org-bibtex hides
/usr/share/emacs/24.3.50/lisp/org/org-bibtex
~/emacs/site/org-mode/lisp/org-icalendar hides
/usr/share/emacs/24.3.50/lisp/org/org-icalendar
~/emacs/site/org-mode/lisp/org-odt hides
/usr/share/emacs/24.3.50/lisp/org/org-odt
~/emacs/site/org-mode/lisp/ob-asymptote hides
/usr/share/emacs/24.3.50/lisp/org/ob-asymptote
~/emacs/site/org-mode/lisp/ob-python hides
/usr/share/emacs/24.3.50/lisp/org/ob-python
~/emacs/site/org-mode/lisp/ob-scheme hides
/usr/share/emacs/24.3.50/lisp/org/ob-scheme
~/emacs/site/org-mode/lisp/org-pcomplete hides
/usr/share/emacs/24.3.50/lisp/org/org-pcomplete
~/emacs/site/org-mode/lisp/ob-keys hides
/usr/share/emacs/24.3.50/lisp/org/ob-keys
~/emacs/site/org-mode/lisp/ob-sqlite hides
/usr/share/emacs/24.3.50/lisp/org/ob-sqlite
~/emacs/site/org-mode/lisp/ob-R hides /usr/share/emacs/24.3.50/lisp/org/ob-R
~/emacs/site/org-mode/lisp/ob-table hides
/usr/share/emacs/24.3.50/lisp/org/ob-table
~/emacs/site/org-mode/lisp/org-feed hides
/usr/share/emacs/24.3.50/lisp/org/org-feed
~/emacs/site/org-mode/lisp/ob-exp hides
/usr/share/emacs/24.3.50/lisp/org/ob-exp
~/emacs/site/org-mode/lisp/org-ascii hides
/usr/share/emacs/24.3.50/lisp/org/org-ascii
~/emacs/site/org-mode/lisp/org-html hides
/usr/share/emacs/24.3.50/lisp/org/org-html
~/emacs/site/org-mode/lisp/org-macs hides
/usr/share/emacs/24.3.50/lisp/org/org-macs
~/emacs/site/org-mode/lisp/ob-matlab hides
/usr/share/emacs/24.3.50/lisp/org/ob-matlab
~/emacs/site/org-mode/lisp/org-indent hides
/usr/share/emacs/24.3.50/lisp/org/org-indent
~/emacs/site/org-mode/lisp/ob-ocaml hides
/usr/share/emacs/24.3.50/lisp/org/ob-ocaml
~/emacs/site/org-mode/lisp/ob-sass hides
/usr/share/emacs/24.3.50/lisp/org/ob-sass
~/emacs/site/org-mode/lisp/org-rmail hides
/usr/share/emacs/24.3.50/lisp/org/org-rmail
~/emacs/site/org-mode/lisp/org-footnote hides
/usr/share/emacs/24.3.50/lisp/org/org-footnote
~/emacs/site/org-mode/lisp/ob-screen hides
/usr/share/emacs/24.3.50/lisp/org/ob-screen
~/emacs/site/org-mode/lisp/org-timer hides
/usr/share/emacs/24.3.50/lisp/org/org-timer
~/emacs/site/org-mode/lisp/ob-ledger hides
/usr/share/emacs/24.3.50/lisp/org/ob-ledger
~/emacs/site/org-mode/lisp/org-beamer hides
/usr/share/emacs/24.3.50/lisp/org/org-beamer
~/emacs/site/org-mode/lisp/ob-lob hides
/usr/share/emacs/24.3.50/lisp/org/ob-lob
~/emacs/site/org-mode/lisp/org-jsinfo hides
/usr/share/emacs/24.3.50/lisp/org/org-jsinfo
~/emacs/site/org-mode/lisp/ob-comint hides
/usr/share/emacs/24.3.50/lisp/org/ob-comint
~/emacs/site/org-mode/lisp/ob-mscgen hides
/usr/share/emacs/24.3.50/lisp/org/ob-mscgen
~/emacs/site/org-mode/lisp/org-wl hides
/usr/share/emacs/24.3.50/lisp/org/org-wl
~/emacs/site/org-mode/lisp/ob-plantuml hides
/usr/share/emacs/24.3.50/lisp/org/ob-plantuml
~/emacs/site/org-mode/lisp/org-protocol hides
/usr/share/emacs/24.3.50/lisp/org/org-protocol
~/emacs/site/org-mode/lisp/ob-latex hides
/usr/share/emacs/24.3.50/lisp/org/ob-latex
~/emacs/site/org-mode/lisp/org-eshell hides
/usr/share/emacs/24.3.50/lisp/org/org-eshell
~/emacs/site/org-mode/lisp/org-plot hides
/usr/share/emacs/24.3.50/lisp/org/org-plot
~/emacs/site/org-mode/lisp/ob-java hides
/usr/share/emacs/24.3.50/lisp/org/ob-java
~/emacs/site/org-mode/lisp/org-remember hides
/usr/share/emacs/24.3.50/lisp/org/org-remember
~/emacs/site/org-mode/lisp/ob-tangle hides
/usr/share/emacs/24.3.50/lisp/org/ob-tangle
~/emacs/site/org-mode/lisp/org-lparse hides
/usr/share/emacs/24.3.50/lisp/org/org-lparse
~/emacs/site/org-mode/lisp/ob-css hides
/usr/share/emacs/24.3.50/lisp/org/ob-css
~/emacs/site/org-mode/lisp/org-datetree hides
/usr/share/emacs/24.3.50/lisp/org/org-datetree
~/emacs/site/org-mode/contrib/lisp/org-element hides
/usr/share/emacs/24.3.50/lisp/org/org-element
~/emacs/site/org-mode/lisp/org-mhe hides
/usr/share/emacs/24.3.50/lisp/org/org-mhe
~/emacs/site/org-mode/lisp/org-list hides
/usr/share/emacs/24.3.50/lisp/org/org-list
~/emacs/site/org-mode/lisp/ob-scala hides
/usr/share/emacs/24.3.50/lisp/org/ob-scala
~/emacs/site/org-mode/lisp/ob-calc hides
/usr/share/emacs/24.3.50/lisp/org/ob-calc
~/emacs/site/org-mode/lisp/org-id hides
/usr/share/emacs/24.3.50/lisp/org/org-id
~/emacs/site/org-mode/lisp/ob-haskell hides
/usr/share/emacs/24.3.50/lisp/org/ob-haskell
~/emacs/site/org-mode/lisp/org-w3m hides
/usr/share/emacs/24.3.50/lisp/org/org-w3m
~/emacs/site/org-mode/lisp/org-taskjuggler hides
/usr/share/emacs/24.3.50/lisp/org/org-taskjuggler
~/emacs/site/org-mode/lisp/org-latex hides
/usr/share/emacs/24.3.50/lisp/org/org-latex
~/emacs/site/org-mode/lisp/ob-sql hides
/usr/share/emacs/24.3.50/lisp/org/ob-sql
~/emacs/site/org-mode/lisp/ob-octave hides
/usr/share/emacs/24.3.50/lisp/org/ob-octave
~/emacs/site/org-mode/lisp/ob-ditaa hides
/usr/share/emacs/24.3.50/lisp/org/ob-ditaa
~/emacs/site/org-mode/lisp/ob-js hides
/usr/share/emacs/24.3.50/lisp/org/ob-js
~/emacs/site/org-mode/lisp/org-faces hides
/usr/share/emacs/24.3.50/lisp/org/org-faces
~/emacs/site/org-mode/lisp/ob-fortran hides
/usr/share/emacs/24.3.50/lisp/org/ob-fortran
~/emacs/site/org-mode/lisp/org-compat hides
/usr/share/emacs/24.3.50/lisp/org/org-compat
~/emacs/site/org-mode/lisp/org-bbdb hides
/usr/share/emacs/24.3.50/lisp/org/org-bbdb
~/emacs/site/org-mode/lisp/org-inlinetask hides
/usr/share/emacs/24.3.50/lisp/org/org-inlinetask
~/emacs/site/org-mode/lisp/ob-sh hides
/usr/share/emacs/24.3.50/lisp/org/ob-sh
~/emacs/site/org-mode/lisp/org-publish hides
/usr/share/emacs/24.3.50/lisp/org/org-publish
~/emacs/site/org-mode/lisp/org-table hides
/usr/share/emacs/24.3.50/lisp/org/org-table
~/emacs/site/org-mode/lisp/ob-clojure hides
/usr/share/emacs/24.3.50/lisp/org/ob-clojure
~/emacs/site/org-mode/lisp/org-capture hides
/usr/share/emacs/24.3.50/lisp/org/org-capture
~/emacs/site/org-mode/lisp/org-mew hides
/usr/share/emacs/24.3.50/lisp/org/org-mew
~/emacs/site/org-mode/lisp/ob-ruby hides
/usr/share/emacs/24.3.50/lisp/org/ob-ruby
~/emacs/site/org-mode/lisp/org-docview hides
/usr/share/emacs/24.3.50/lisp/org/org-docview
~/emacs/site/org-mode/lisp/org-exp-blocks hides
/usr/share/emacs/24.3.50/lisp/org/org-exp-blocks
~/emacs/site/org-mode/lisp/org-archive hides
/usr/share/emacs/24.3.50/lisp/org/org-archive
~/emacs/site/org-mode/lisp/org-freemind hides
/usr/share/emacs/24.3.50/lisp/org/org-freemind
~/emacs/site/org-mode/lisp/ob-perl hides
/usr/share/emacs/24.3.50/lisp/org/ob-perl
~/emacs/site/org-mode/lisp/org-gnus hides
/usr/share/emacs/24.3.50/lisp/org/org-gnus
~/emacs/site/org-mode/lisp/ob-lilypond hides
/usr/share/emacs/24.3.50/lisp/org/ob-lilypond
~/emacs/site/org-mode/lisp/org-entities hides
/usr/share/emacs/24.3.50/lisp/org/org-entities
~/emacs/site/org-mode/lisp/ob-gnuplot hides
/usr/share/emacs/24.3.50/lisp/org/ob-gnuplot
~/emacs/site/org-mode/lisp/org-mouse hides
/usr/share/emacs/24.3.50/lisp/org/org-mouse
~/emacs/site/org-mode/lisp/ob-emacs-lisp hides
/usr/share/emacs/24.3.50/lisp/org/ob-emacs-lisp
~/emacs/site/org-mode/lisp/org-habit hides
/usr/share/emacs/24.3.50/lisp/org/org-habit

Features:
(shadow sort mail-extr emacsbug sendmail server solarized-dark-theme
solarized-definitions org org-fixup autoload 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 easy-mmode find-func cal-menu calendar
cal-loaddefs gnus-sum nnoo gnus-group gnus-undo nnmail mail-source
gnus-start gnus-spec gnus-int gnus-range message format-spec rfc822 mml
mml-sec mm-decode mm-bodies mm-encode mail-parse rfc2231 rfc2047 rfc2045
ietf-drums mailabbrev gmm-utils mailheader gnus-win gnus gnus-ems
nnheader gnus-util mail-utils mm-util mail-prsvr wid-edit jinja2-mode
sgml-mode php-mode derived rx etags cc-langs cc-mode cc-fonts cc-guess
cc-menus cc-cmds cc-styles cc-align cc-engine cc-vars cc-defs speedbar
sb-image ezimage dframe easymenu add-log byte-opt warnings bytecomp
byte-compile cconv advice flymake compile comint ansi-color ring
flymake-cursor edmacro kmacro ace-jump-mode help-fns cl-macs gv cl
cl-lib uniquify nadvice paren which-func imenu icomplete iswitchb avoid
erlang-start time-date tooltip ediff-hook vc-hooks lisp-float-type
mwheel x-win x-dnd tool-bar dnd fontset image regexp-opt fringe
tabulated-list newcomment 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 macroexp files text-properties overlay sha1 md5 base64 format
env code-pages mule custom widget hashtable-print-readable backquote
make-network-process dbusbind dynamic-setting system-font-setting
font-render-setting move-toolbar gtk x-toolkit x multi-tty emacs)

-- 
Vineet Naik

-- 
Vineet Naik