unofficial mirror of bug-gnu-emacs@gnu.org 
 help / color / mirror / code / Atom feed
* bug#11697: 24.1.50; ERC scroll-to-bottom functionality 'broken' in emacs 24.1.x
@ 2012-06-13 16:22 Brian Fransioli
  2012-06-13 20:03 ` Deniz Dogan
  0 siblings, 1 reply; 10+ messages in thread
From: Brian Fransioli @ 2012-06-13 16:22 UTC (permalink / raw)
  To: 11697


After updating to emacs 24.1.x I noticed ERC scroll functionality
changed.  Originally, it would recenter to force the prompt to be near
the bottom of the screen (according to `erc-input-line-position').  Now,
this recentering only happens when I enter text, or perform a mouse
event.  Channel joins/parts and new messages hit the bottom of the
screen, and recentering moves the bottom line to the center of the
buffer.

The overall effect is input by the user moves the screen to the bottom,
while channel/server inputs bounce around from middle to bottom and back
again.

Looking in erc-goodies.el at `erc-add-scroll-bottom', it's easy to see
the documentation is also out of date.  It states it uses
`window-scroll-functions' but instead adds the hook to
`post-command-hook'.

Examining commits, I found the culprit:

commit:
a1d63e03c3eda51dcec158d6027adf9dbdcfd8dd

view changes via git emacs web:
http://git.savannah.gnu.org/cgit/emacs.git/commit/lisp/erc/erc-goodies.el?id=a1d63e03c3eda51dcec158d6027adf9dbdcfd8dd


I see that the changes were reported to fix a bug on tty's, but the
results are severe motion sickness for even moderately chatty channels.

Reproduce by:
(erc-scrolltobottom-mode)
(setq erc-input-line-position -2)

Regards,
Brian

=====

In GNU Emacs 24.1.50.1 (i686-pc-linux-gnu, GTK+ Version 2.20.1)
 of 2012-06-13 on pringles
Bzr revision: 108574 rgm@gnu.org-20120612101728-uysxmgrcvjbitpp9
Windowing system distributor `NetSarang Computer, Inc.', version 11.0.4004
Important settings:
  value of $LANG: en_US.UTF-8
  locale-coding-system: utf-8-unix
  default enable-multibyte-characters: t

Major mode: ERC

Minor modes in effect:
  erc-list-mode: t
  erc-menu-mode: t
  erc-autojoin-mode: t
  erc-ring-mode: t
  erc-networks-mode: t
  erc-track-mode: t
  erc-track-minor-mode: t
  erc-match-mode: t
  erc-button-mode: t
  erc-fill-mode: t
  erc-stamp-mode: t
  erc-netsplit-mode: t
  erc-pcomplete-mode: t
  yas/global-mode: t
  yas/minor-mode: t
  erc-irccontrols-mode: t
  erc-noncommands-mode: t
  erc-move-to-prompt-mode: t
  erc-readonly-mode: t
  which-function-mode: t
  ido-everywhere: 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
  column-number-mode: t
  line-number-mode: t
  transient-mark-mode: t

Recent messages:
Type C-x 1 to delete the help window.
Quit
mouse-2, RET: find variable's definition
Loading cc-langs...done
Loading semanticdb-file...done [2 times]
Loading vc-bzr...done [5 times]
Making completion list...
Quit [2 times]
Mark set
Quit
Quit

Load-path shadows:
~/code/org-mode/contrib/lisp/htmlize hides /home/terranpro/elisp/htmlize
/home/terranpro/code/cedet/speedbar/speedbar hides /usr/local/share/emacs/24.1.50/lisp/speedbar
/home/terranpro/code/gnus/lisp/color hides /usr/local/share/emacs/24.1.50/lisp/color
/home/terranpro/code/gnus/lisp/format-spec hides /usr/local/share/emacs/24.1.50/lisp/format-spec
/home/terranpro/code/gnus/lisp/hex-util hides /usr/local/share/emacs/24.1.50/lisp/hex-util
/home/terranpro/code/cedet/speedbar/dframe hides /usr/local/share/emacs/24.1.50/lisp/dframe
/home/terranpro/code/gnus/lisp/password-cache hides /usr/local/share/emacs/24.1.50/lisp/password-cache
/home/terranpro/code/cedet/common/ezimage hides /usr/local/share/emacs/24.1.50/lisp/ezimage
/home/terranpro/code/cedet/speedbar/sb-image hides /usr/local/share/emacs/24.1.50/lisp/sb-image
/home/terranpro/code/gnus/lisp/md4 hides /usr/local/share/emacs/24.1.50/lisp/md4
/home/terranpro/code/gnus/lisp/dns-mode hides /usr/local/share/emacs/24.1.50/lisp/textmodes/dns-mode
~/code/org-mode/lisp/org-xoxo hides /usr/local/share/emacs/24.1.50/lisp/org/org-xoxo
~/code/org-mode/lisp/ob-table hides /usr/local/share/emacs/24.1.50/lisp/org/ob-table
~/code/org-mode/lisp/ob-calc hides /usr/local/share/emacs/24.1.50/lisp/org/ob-calc
~/code/org-mode/lisp/ob-latex hides /usr/local/share/emacs/24.1.50/lisp/org/ob-latex
~/code/org-mode/lisp/ob-R hides /usr/local/share/emacs/24.1.50/lisp/org/ob-R
~/code/org-mode/lisp/ob-awk hides /usr/local/share/emacs/24.1.50/lisp/org/ob-awk
~/code/org-mode/lisp/org-eshell hides /usr/local/share/emacs/24.1.50/lisp/org/org-eshell
~/code/org-mode/lisp/org-install hides /usr/local/share/emacs/24.1.50/lisp/org/org-install
~/code/org-mode/lisp/ob-gnuplot hides /usr/local/share/emacs/24.1.50/lisp/org/ob-gnuplot
~/code/org-mode/lisp/ob-octave hides /usr/local/share/emacs/24.1.50/lisp/org/ob-octave
~/code/org-mode/lisp/ob-python hides /usr/local/share/emacs/24.1.50/lisp/org/ob-python
~/code/org-mode/lisp/org-mew hides /usr/local/share/emacs/24.1.50/lisp/org/org-mew
~/code/org-mode/lisp/org-habit hides /usr/local/share/emacs/24.1.50/lisp/org/org-habit
~/code/org-mode/lisp/org-ctags hides /usr/local/share/emacs/24.1.50/lisp/org/org-ctags
~/code/org-mode/lisp/org-icalendar hides /usr/local/share/emacs/24.1.50/lisp/org/org-icalendar
~/code/org-mode/lisp/ob-eval hides /usr/local/share/emacs/24.1.50/lisp/org/ob-eval
~/code/org-mode/lisp/org-docview hides /usr/local/share/emacs/24.1.50/lisp/org/org-docview
~/code/org-mode/lisp/org-indent hides /usr/local/share/emacs/24.1.50/lisp/org/org-indent
~/code/org-mode/lisp/ob-ref hides /usr/local/share/emacs/24.1.50/lisp/org/ob-ref
~/code/org-mode/lisp/org-table hides /usr/local/share/emacs/24.1.50/lisp/org/org-table
~/code/org-mode/lisp/org-special-blocks hides /usr/local/share/emacs/24.1.50/lisp/org/org-special-blocks
~/code/org-mode/lisp/ob-emacs-lisp hides /usr/local/share/emacs/24.1.50/lisp/org/ob-emacs-lisp
~/code/org-mode/lisp/org-freemind hides /usr/local/share/emacs/24.1.50/lisp/org/org-freemind
~/code/org-mode/lisp/org-crypt hides /usr/local/share/emacs/24.1.50/lisp/org/org-crypt
~/code/org-mode/lisp/ob-sass hides /usr/local/share/emacs/24.1.50/lisp/org/ob-sass
~/code/org-mode/lisp/org-plot hides /usr/local/share/emacs/24.1.50/lisp/org/org-plot
~/code/org-mode/lisp/org-datetree hides /usr/local/share/emacs/24.1.50/lisp/org/org-datetree
~/code/org-mode/lisp/org-mac-message hides /usr/local/share/emacs/24.1.50/lisp/org/org-mac-message
~/code/org-mode/lisp/org-bibtex hides /usr/local/share/emacs/24.1.50/lisp/org/org-bibtex
~/code/org-mode/lisp/org-macs hides /usr/local/share/emacs/24.1.50/lisp/org/org-macs
~/code/org-mode/lisp/ob hides /usr/local/share/emacs/24.1.50/lisp/org/ob
~/code/org-mode/lisp/ob-perl hides /usr/local/share/emacs/24.1.50/lisp/org/ob-perl
~/code/org-mode/lisp/ob-dot hides /usr/local/share/emacs/24.1.50/lisp/org/ob-dot
~/code/org-mode/lisp/ob-ruby hides /usr/local/share/emacs/24.1.50/lisp/org/ob-ruby
~/code/org-mode/lisp/ob-org hides /usr/local/share/emacs/24.1.50/lisp/org/ob-org
~/code/org-mode/lisp/ob-screen hides /usr/local/share/emacs/24.1.50/lisp/org/ob-screen
~/code/org-mode/lisp/ob-sqlite hides /usr/local/share/emacs/24.1.50/lisp/org/ob-sqlite
~/code/org-mode/lisp/org-info hides /usr/local/share/emacs/24.1.50/lisp/org/org-info
~/code/org-mode/lisp/org-inlinetask hides /usr/local/share/emacs/24.1.50/lisp/org/org-inlinetask
~/code/org-mode/lisp/ob-ledger hides /usr/local/share/emacs/24.1.50/lisp/org/ob-ledger
~/code/org-mode/lisp/org-timer hides /usr/local/share/emacs/24.1.50/lisp/org/org-timer
~/code/org-mode/lisp/org-wl hides /usr/local/share/emacs/24.1.50/lisp/org/org-wl
~/code/org-mode/lisp/ob-plantuml hides /usr/local/share/emacs/24.1.50/lisp/org/ob-plantuml
~/code/org-mode/lisp/ob-scheme hides /usr/local/share/emacs/24.1.50/lisp/org/ob-scheme
~/code/org-mode/lisp/org-remember hides /usr/local/share/emacs/24.1.50/lisp/org/org-remember
~/code/org-mode/lisp/org-feed hides /usr/local/share/emacs/24.1.50/lisp/org/org-feed
~/code/org-mode/lisp/org-id hides /usr/local/share/emacs/24.1.50/lisp/org/org-id
~/code/org-mode/lisp/ob-C hides /usr/local/share/emacs/24.1.50/lisp/org/ob-C
~/code/org-mode/lisp/ob-ditaa hides /usr/local/share/emacs/24.1.50/lisp/org/ob-ditaa
~/code/org-mode/lisp/org-entities hides /usr/local/share/emacs/24.1.50/lisp/org/org-entities
~/code/org-mode/lisp/ob-java hides /usr/local/share/emacs/24.1.50/lisp/org/ob-java
~/code/org-mode/lisp/org-bbdb hides /usr/local/share/emacs/24.1.50/lisp/org/org-bbdb
~/code/org-mode/lisp/org-w3m hides /usr/local/share/emacs/24.1.50/lisp/org/org-w3m
~/code/org-mode/lisp/ob-maxima hides /usr/local/share/emacs/24.1.50/lisp/org/ob-maxima
~/code/org-mode/lisp/org-taskjuggler hides /usr/local/share/emacs/24.1.50/lisp/org/org-taskjuggler
~/code/org-mode/lisp/org-mouse hides /usr/local/share/emacs/24.1.50/lisp/org/org-mouse
~/code/org-mode/lisp/ob-tangle hides /usr/local/share/emacs/24.1.50/lisp/org/ob-tangle
~/code/org-mode/lisp/ob-lilypond hides /usr/local/share/emacs/24.1.50/lisp/org/ob-lilypond
~/code/org-mode/lisp/ob-mscgen hides /usr/local/share/emacs/24.1.50/lisp/org/ob-mscgen
~/code/org-mode/lisp/ob-css hides /usr/local/share/emacs/24.1.50/lisp/org/ob-css
~/code/org-mode/lisp/org-protocol hides /usr/local/share/emacs/24.1.50/lisp/org/org-protocol
~/code/org-mode/lisp/ob-clojure hides /usr/local/share/emacs/24.1.50/lisp/org/ob-clojure
~/code/org-mode/lisp/ob-sh hides /usr/local/share/emacs/24.1.50/lisp/org/ob-sh
~/code/org-mode/lisp/org-compat hides /usr/local/share/emacs/24.1.50/lisp/org/org-compat
~/code/org-mode/lisp/org-vm hides /usr/local/share/emacs/24.1.50/lisp/org/org-vm
~/code/org-mode/lisp/org-latex hides /usr/local/share/emacs/24.1.50/lisp/org/org-latex
~/code/org-mode/lisp/ob-lob hides /usr/local/share/emacs/24.1.50/lisp/org/ob-lob
~/code/org-mode/lisp/org-html hides /usr/local/share/emacs/24.1.50/lisp/org/org-html
~/code/org-mode/lisp/ob-matlab hides /usr/local/share/emacs/24.1.50/lisp/org/ob-matlab
~/code/org-mode/lisp/org-pcomplete hides /usr/local/share/emacs/24.1.50/lisp/org/org-pcomplete
~/code/org-mode/lisp/org-gnus hides /usr/local/share/emacs/24.1.50/lisp/org/org-gnus
~/code/org-mode/lisp/org-irc hides /usr/local/share/emacs/24.1.50/lisp/org/org-irc
~/code/org-mode/lisp/org-faces hides /usr/local/share/emacs/24.1.50/lisp/org/org-faces
~/code/org-mode/lisp/org-attach hides /usr/local/share/emacs/24.1.50/lisp/org/org-attach
~/code/org-mode/lisp/org-exp-blocks hides /usr/local/share/emacs/24.1.50/lisp/org/org-exp-blocks
~/code/org-mode/lisp/org-jsinfo hides /usr/local/share/emacs/24.1.50/lisp/org/org-jsinfo
~/code/org-mode/lisp/org-publish hides /usr/local/share/emacs/24.1.50/lisp/org/org-publish
~/code/org-mode/lisp/ob-js hides /usr/local/share/emacs/24.1.50/lisp/org/ob-js
~/code/org-mode/lisp/ob-picolisp hides /usr/local/share/emacs/24.1.50/lisp/org/ob-picolisp
~/code/org-mode/lisp/ob-comint hides /usr/local/share/emacs/24.1.50/lisp/org/ob-comint
~/code/org-mode/lisp/org-colview hides /usr/local/share/emacs/24.1.50/lisp/org/org-colview
~/code/org-mode/lisp/org-docbook hides /usr/local/share/emacs/24.1.50/lisp/org/org-docbook
~/code/org-mode/lisp/ob-lisp hides /usr/local/share/emacs/24.1.50/lisp/org/ob-lisp
~/code/org-mode/lisp/ob-keys hides /usr/local/share/emacs/24.1.50/lisp/org/ob-keys
~/code/org-mode/lisp/org-capture hides /usr/local/share/emacs/24.1.50/lisp/org/org-capture
~/code/org-mode/lisp/ob-asymptote hides /usr/local/share/emacs/24.1.50/lisp/org/ob-asymptote
~/code/org-mode/lisp/org-mks hides /usr/local/share/emacs/24.1.50/lisp/org/org-mks
~/code/org-mode/lisp/org-odt hides /usr/local/share/emacs/24.1.50/lisp/org/org-odt
~/code/org-mode/lisp/ob-ocaml hides /usr/local/share/emacs/24.1.50/lisp/org/ob-ocaml
~/code/org-mode/lisp/ob-haskell hides /usr/local/share/emacs/24.1.50/lisp/org/ob-haskell
~/code/org-mode/lisp/org-ascii hides /usr/local/share/emacs/24.1.50/lisp/org/org-ascii
~/code/org-mode/lisp/org hides /usr/local/share/emacs/24.1.50/lisp/org/org
~/code/org-mode/lisp/org-clock hides /usr/local/share/emacs/24.1.50/lisp/org/org-clock
~/code/org-mode/lisp/org-agenda hides /usr/local/share/emacs/24.1.50/lisp/org/org-agenda
~/code/org-mode/lisp/org-lparse hides /usr/local/share/emacs/24.1.50/lisp/org/org-lparse
~/code/org-mode/lisp/org-rmail hides /usr/local/share/emacs/24.1.50/lisp/org/org-rmail
~/code/org-mode/lisp/org-mhe hides /usr/local/share/emacs/24.1.50/lisp/org/org-mhe
~/code/org-mode/lisp/ob-shen hides /usr/local/share/emacs/24.1.50/lisp/org/ob-shen
~/code/org-mode/lisp/org-footnote hides /usr/local/share/emacs/24.1.50/lisp/org/org-footnote
~/code/org-mode/lisp/org-src hides /usr/local/share/emacs/24.1.50/lisp/org/org-src
~/code/org-mode/lisp/ob-fortran hides /usr/local/share/emacs/24.1.50/lisp/org/ob-fortran
~/code/org-mode/lisp/org-list hides /usr/local/share/emacs/24.1.50/lisp/org/org-list
~/code/org-mode/lisp/ob-sql hides /usr/local/share/emacs/24.1.50/lisp/org/ob-sql
~/code/org-mode/lisp/org-exp hides /usr/local/share/emacs/24.1.50/lisp/org/org-exp
~/code/org-mode/lisp/org-beamer hides /usr/local/share/emacs/24.1.50/lisp/org/org-beamer
~/code/org-mode/lisp/org-mobile hides /usr/local/share/emacs/24.1.50/lisp/org/org-mobile
~/code/org-mode/lisp/ob-exp hides /usr/local/share/emacs/24.1.50/lisp/org/ob-exp
~/code/org-mode/lisp/org-archive hides /usr/local/share/emacs/24.1.50/lisp/org/org-archive
/home/terranpro/code/gnus/lisp/sasl hides /usr/local/share/emacs/24.1.50/lisp/net/sasl
/home/terranpro/code/gnus/lisp/dig hides /usr/local/share/emacs/24.1.50/lisp/net/dig
/home/terranpro/code/gnus/lisp/dns hides /usr/local/share/emacs/24.1.50/lisp/net/dns
/home/terranpro/code/gnus/lisp/imap hides /usr/local/share/emacs/24.1.50/lisp/net/imap
/home/terranpro/code/gnus/lisp/sasl-ntlm hides /usr/local/share/emacs/24.1.50/lisp/net/sasl-ntlm
/home/terranpro/code/gnus/lisp/ntlm hides /usr/local/share/emacs/24.1.50/lisp/net/ntlm
/home/terranpro/code/gnus/lisp/sasl-cram hides /usr/local/share/emacs/24.1.50/lisp/net/sasl-cram
/home/terranpro/code/gnus/lisp/netrc hides /usr/local/share/emacs/24.1.50/lisp/net/netrc
/home/terranpro/code/gnus/lisp/hmac-def hides /usr/local/share/emacs/24.1.50/lisp/net/hmac-def
/home/terranpro/code/gnus/lisp/hmac-md5 hides /usr/local/share/emacs/24.1.50/lisp/net/hmac-md5
/home/terranpro/code/gnus/lisp/tls hides /usr/local/share/emacs/24.1.50/lisp/net/tls
/home/terranpro/code/gnus/lisp/sasl-digest hides /usr/local/share/emacs/24.1.50/lisp/net/sasl-digest
/home/terranpro/code/gnus/lisp/uudecode hides /usr/local/share/emacs/24.1.50/lisp/mail/uudecode
/home/terranpro/code/gnus/lisp/binhex hides /usr/local/share/emacs/24.1.50/lisp/mail/binhex
/home/terranpro/code/gnus/lisp/hashcash hides /usr/local/share/emacs/24.1.50/lisp/mail/hashcash
/home/terranpro/code/gnus/lisp/gnus hides /usr/local/share/emacs/24.1.50/lisp/gnus/gnus
/home/terranpro/code/gnus/lisp/gnus-score hides /usr/local/share/emacs/24.1.50/lisp/gnus/gnus-score
/home/terranpro/code/gnus/lisp/nnimap hides /usr/local/share/emacs/24.1.50/lisp/gnus/nnimap
/home/terranpro/code/gnus/lisp/gnus-start hides /usr/local/share/emacs/24.1.50/lisp/gnus/gnus-start
/home/terranpro/code/gnus/lisp/mml2015 hides /usr/local/share/emacs/24.1.50/lisp/gnus/mml2015
/home/terranpro/code/gnus/lisp/gravatar hides /usr/local/share/emacs/24.1.50/lisp/gnus/gravatar
/home/terranpro/code/gnus/lisp/nnoo hides /usr/local/share/emacs/24.1.50/lisp/gnus/nnoo
/home/terranpro/code/gnus/lisp/gnus-undo hides /usr/local/share/emacs/24.1.50/lisp/gnus/gnus-undo
/home/terranpro/code/gnus/lisp/nngateway hides /usr/local/share/emacs/24.1.50/lisp/gnus/nngateway
/home/terranpro/code/gnus/lisp/nnir hides /usr/local/share/emacs/24.1.50/lisp/gnus/nnir
/home/terranpro/code/gnus/lisp/gnus-fun hides /usr/local/share/emacs/24.1.50/lisp/gnus/gnus-fun
/home/terranpro/code/gnus/lisp/gmm-utils hides /usr/local/share/emacs/24.1.50/lisp/gnus/gmm-utils
/home/terranpro/code/gnus/lisp/sieve-manage hides /usr/local/share/emacs/24.1.50/lisp/gnus/sieve-manage
/home/terranpro/code/gnus/lisp/ecomplete hides /usr/local/share/emacs/24.1.50/lisp/gnus/ecomplete
/home/terranpro/code/gnus/lisp/gnus-cite hides /usr/local/share/emacs/24.1.50/lisp/gnus/gnus-cite
/home/terranpro/code/gnus/lisp/nnmh hides /usr/local/share/emacs/24.1.50/lisp/gnus/nnmh
/home/terranpro/code/gnus/lisp/mail-parse hides /usr/local/share/emacs/24.1.50/lisp/gnus/mail-parse
/home/terranpro/code/gnus/lisp/mml hides /usr/local/share/emacs/24.1.50/lisp/gnus/mml
/home/terranpro/code/gnus/lisp/smiley hides /usr/local/share/emacs/24.1.50/lisp/gnus/smiley
/home/terranpro/code/gnus/lisp/mail-prsvr hides /usr/local/share/emacs/24.1.50/lisp/gnus/mail-prsvr
/home/terranpro/code/gnus/lisp/nntp hides /usr/local/share/emacs/24.1.50/lisp/gnus/nntp
/home/terranpro/code/gnus/lisp/sieve-mode hides /usr/local/share/emacs/24.1.50/lisp/gnus/sieve-mode
/home/terranpro/code/gnus/lisp/gnus-async hides /usr/local/share/emacs/24.1.50/lisp/gnus/gnus-async
/home/terranpro/code/gnus/lisp/gnus-range hides /usr/local/share/emacs/24.1.50/lisp/gnus/gnus-range
/home/terranpro/code/gnus/lisp/mml-smime hides /usr/local/share/emacs/24.1.50/lisp/gnus/mml-smime
/home/terranpro/code/gnus/lisp/nndir hides /usr/local/share/emacs/24.1.50/lisp/gnus/nndir
/home/terranpro/code/gnus/lisp/gnus-sync hides /usr/local/share/emacs/24.1.50/lisp/gnus/gnus-sync
/home/terranpro/code/gnus/lisp/utf7 hides /usr/local/share/emacs/24.1.50/lisp/gnus/utf7
/home/terranpro/code/gnus/lisp/gnus-setup hides /usr/local/share/emacs/24.1.50/lisp/gnus/gnus-setup
/home/terranpro/code/gnus/lisp/pop3 hides /usr/local/share/emacs/24.1.50/lisp/gnus/pop3
/home/terranpro/code/gnus/lisp/score-mode hides /usr/local/share/emacs/24.1.50/lisp/gnus/score-mode
/home/terranpro/code/gnus/lisp/nnmaildir hides /usr/local/share/emacs/24.1.50/lisp/gnus/nnmaildir
/home/terranpro/code/gnus/lisp/nndraft hides /usr/local/share/emacs/24.1.50/lisp/gnus/nndraft
/home/terranpro/code/gnus/lisp/registry hides /usr/local/share/emacs/24.1.50/lisp/gnus/registry
/home/terranpro/code/gnus/lisp/mm-url hides /usr/local/share/emacs/24.1.50/lisp/gnus/mm-url
/home/terranpro/code/gnus/lisp/mm-util hides /usr/local/share/emacs/24.1.50/lisp/gnus/mm-util
/home/terranpro/code/gnus/lisp/mm-decode hides /usr/local/share/emacs/24.1.50/lisp/gnus/mm-decode
/home/terranpro/code/gnus/lisp/nnvirtual hides /usr/local/share/emacs/24.1.50/lisp/gnus/nnvirtual
/home/terranpro/code/gnus/lisp/gnus-bcklg hides /usr/local/share/emacs/24.1.50/lisp/gnus/gnus-bcklg
/home/terranpro/code/gnus/lisp/nnbabyl hides /usr/local/share/emacs/24.1.50/lisp/gnus/nnbabyl
/home/terranpro/code/gnus/lisp/gnus-srvr hides /usr/local/share/emacs/24.1.50/lisp/gnus/gnus-srvr
/home/terranpro/code/gnus/lisp/nnagent hides /usr/local/share/emacs/24.1.50/lisp/gnus/nnagent
/home/terranpro/code/gnus/lisp/nnmbox hides /usr/local/share/emacs/24.1.50/lisp/gnus/nnmbox
/home/terranpro/code/gnus/lisp/nnmail hides /usr/local/share/emacs/24.1.50/lisp/gnus/nnmail
/home/terranpro/code/gnus/lisp/nnspool hides /usr/local/share/emacs/24.1.50/lisp/gnus/nnspool
/home/terranpro/code/gnus/lisp/nneething hides /usr/local/share/emacs/24.1.50/lisp/gnus/nneething
/home/terranpro/code/gnus/lisp/mm-uu hides /usr/local/share/emacs/24.1.50/lisp/gnus/mm-uu
/home/terranpro/code/gnus/lisp/gnus-dup hides /usr/local/share/emacs/24.1.50/lisp/gnus/gnus-dup
/home/terranpro/code/gnus/lisp/gnus-eform hides /usr/local/share/emacs/24.1.50/lisp/gnus/gnus-eform
/home/terranpro/code/gnus/lisp/auth-source hides /usr/local/share/emacs/24.1.50/lisp/gnus/auth-source
/home/terranpro/code/gnus/lisp/nnfolder hides /usr/local/share/emacs/24.1.50/lisp/gnus/nnfolder
/home/terranpro/code/gnus/lisp/flow-fill hides /usr/local/share/emacs/24.1.50/lisp/gnus/flow-fill
/home/terranpro/code/gnus/lisp/nnml hides /usr/local/share/emacs/24.1.50/lisp/gnus/nnml
/home/terranpro/code/gnus/lisp/rtree hides /usr/local/share/emacs/24.1.50/lisp/gnus/rtree
/home/terranpro/code/gnus/lisp/gnus-spec hides /usr/local/share/emacs/24.1.50/lisp/gnus/gnus-spec
/home/terranpro/code/gnus/lisp/nnmairix hides /usr/local/share/emacs/24.1.50/lisp/gnus/nnmairix
/home/terranpro/code/gnus/lisp/mm-partial hides /usr/local/share/emacs/24.1.50/lisp/gnus/mm-partial
/home/terranpro/code/gnus/lisp/gnus-topic hides /usr/local/share/emacs/24.1.50/lisp/gnus/gnus-topic
/home/terranpro/code/gnus/lisp/messcompat hides /usr/local/share/emacs/24.1.50/lisp/gnus/messcompat
/home/terranpro/code/gnus/lisp/gnus-html hides /usr/local/share/emacs/24.1.50/lisp/gnus/gnus-html
/home/terranpro/code/gnus/lisp/yenc hides /usr/local/share/emacs/24.1.50/lisp/gnus/yenc
/home/terranpro/code/gnus/lisp/mailcap hides /usr/local/share/emacs/24.1.50/lisp/gnus/mailcap
/home/terranpro/code/gnus/lisp/rfc2231 hides /usr/local/share/emacs/24.1.50/lisp/gnus/rfc2231
/home/terranpro/code/gnus/lisp/spam hides /usr/local/share/emacs/24.1.50/lisp/gnus/spam
/home/terranpro/code/gnus/lisp/gnus-kill hides /usr/local/share/emacs/24.1.50/lisp/gnus/gnus-kill
/home/terranpro/code/gnus/lisp/legacy-gnus-agent hides /usr/local/share/emacs/24.1.50/lisp/gnus/legacy-gnus-agent
/home/terranpro/code/gnus/lisp/mml-sec hides /usr/local/share/emacs/24.1.50/lisp/gnus/mml-sec
/home/terranpro/code/gnus/lisp/gnus-msg hides /usr/local/share/emacs/24.1.50/lisp/gnus/gnus-msg
/home/terranpro/code/gnus/lisp/gnus-bookmark hides /usr/local/share/emacs/24.1.50/lisp/gnus/gnus-bookmark
/home/terranpro/code/gnus/lisp/gnus-ml hides /usr/local/share/emacs/24.1.50/lisp/gnus/gnus-ml
/home/terranpro/code/gnus/lisp/mail-source hides /usr/local/share/emacs/24.1.50/lisp/gnus/mail-source
/home/terranpro/code/gnus/lisp/spam-stat hides /usr/local/share/emacs/24.1.50/lisp/gnus/spam-stat
/home/terranpro/code/gnus/lisp/qp hides /usr/local/share/emacs/24.1.50/lisp/gnus/qp
/home/terranpro/code/gnus/lisp/gnus-salt hides /usr/local/share/emacs/24.1.50/lisp/gnus/gnus-salt
/home/terranpro/code/gnus/lisp/gnus-vm hides /usr/local/share/emacs/24.1.50/lisp/gnus/gnus-vm
/home/terranpro/code/gnus/lisp/gnus-group hides /usr/local/share/emacs/24.1.50/lisp/gnus/gnus-group
/home/terranpro/code/gnus/lisp/shr-color hides /usr/local/share/emacs/24.1.50/lisp/gnus/shr-color
/home/terranpro/code/gnus/lisp/gnus-gravatar hides /usr/local/share/emacs/24.1.50/lisp/gnus/gnus-gravatar
/home/terranpro/code/gnus/lisp/gnus-art hides /usr/local/share/emacs/24.1.50/lisp/gnus/gnus-art
/home/terranpro/code/gnus/lisp/spam-report hides /usr/local/share/emacs/24.1.50/lisp/gnus/spam-report
/home/terranpro/code/gnus/lisp/mm-view hides /usr/local/share/emacs/24.1.50/lisp/gnus/mm-view
/home/terranpro/code/gnus/lisp/canlock hides /usr/local/share/emacs/24.1.50/lisp/gnus/canlock
/home/terranpro/code/gnus/lisp/rfc2047 hides /usr/local/share/emacs/24.1.50/lisp/gnus/rfc2047
/home/terranpro/code/gnus/lisp/message hides /usr/local/share/emacs/24.1.50/lisp/gnus/message
/home/terranpro/code/gnus/lisp/gnus-util hides /usr/local/share/emacs/24.1.50/lisp/gnus/gnus-util
/home/terranpro/code/gnus/lisp/html2text hides /usr/local/share/emacs/24.1.50/lisp/gnus/html2text
/home/terranpro/code/gnus/lisp/ietf-drums hides /usr/local/share/emacs/24.1.50/lisp/gnus/ietf-drums
/home/terranpro/code/gnus/lisp/gnus-mh hides /usr/local/share/emacs/24.1.50/lisp/gnus/gnus-mh
/home/terranpro/code/gnus/lisp/mm-extern hides /usr/local/share/emacs/24.1.50/lisp/gnus/mm-extern
/home/terranpro/code/gnus/lisp/mm-bodies hides /usr/local/share/emacs/24.1.50/lisp/gnus/mm-bodies
/home/terranpro/code/gnus/lisp/spam-wash hides /usr/local/share/emacs/24.1.50/lisp/gnus/spam-wash
/home/terranpro/code/gnus/lisp/gnus-agent hides /usr/local/share/emacs/24.1.50/lisp/gnus/gnus-agent
/home/terranpro/code/gnus/lisp/gssapi hides /usr/local/share/emacs/24.1.50/lisp/gnus/gssapi
/home/terranpro/code/gnus/lisp/smime hides /usr/local/share/emacs/24.1.50/lisp/gnus/smime
/home/terranpro/code/gnus/lisp/gnus-sum hides /usr/local/share/emacs/24.1.50/lisp/gnus/gnus-sum
/home/terranpro/code/gnus/lisp/gnus-picon hides /usr/local/share/emacs/24.1.50/lisp/gnus/gnus-picon
/home/terranpro/code/gnus/lisp/nnregistry hides /usr/local/share/emacs/24.1.50/lisp/gnus/nnregistry
/home/terranpro/code/gnus/lisp/gnus-cus hides /usr/local/share/emacs/24.1.50/lisp/gnus/gnus-cus
/home/terranpro/code/gnus/lisp/gnus-diary hides /usr/local/share/emacs/24.1.50/lisp/gnus/gnus-diary
/home/terranpro/code/gnus/lisp/nndiary hides /usr/local/share/emacs/24.1.50/lisp/gnus/nndiary
/home/terranpro/code/gnus/lisp/gnus-dired hides /usr/local/share/emacs/24.1.50/lisp/gnus/gnus-dired
/home/terranpro/code/gnus/lisp/shr hides /usr/local/share/emacs/24.1.50/lisp/gnus/shr
/home/terranpro/code/gnus/lisp/nnweb hides /usr/local/share/emacs/24.1.50/lisp/gnus/nnweb
/home/terranpro/code/gnus/lisp/gnus-int hides /usr/local/share/emacs/24.1.50/lisp/gnus/gnus-int
/home/terranpro/code/gnus/lisp/gnus-ems hides /usr/local/share/emacs/24.1.50/lisp/gnus/gnus-ems
/home/terranpro/code/gnus/lisp/starttls hides /usr/local/share/emacs/24.1.50/lisp/gnus/starttls
/home/terranpro/code/gnus/lisp/nnheader hides /usr/local/share/emacs/24.1.50/lisp/gnus/nnheader
/home/terranpro/code/gnus/lisp/gnus-mlspl hides /usr/local/share/emacs/24.1.50/lisp/gnus/gnus-mlspl
/home/terranpro/code/gnus/lisp/gnus-demon hides /usr/local/share/emacs/24.1.50/lisp/gnus/gnus-demon
/home/terranpro/code/gnus/lisp/rfc1843 hides /usr/local/share/emacs/24.1.50/lisp/gnus/rfc1843
/home/terranpro/code/gnus/lisp/gnus-draft hides /usr/local/share/emacs/24.1.50/lisp/gnus/gnus-draft
/home/terranpro/code/gnus/lisp/gnus-registry hides /usr/local/share/emacs/24.1.50/lisp/gnus/gnus-registry
/home/terranpro/code/gnus/lisp/gnus-uu hides /usr/local/share/emacs/24.1.50/lisp/gnus/gnus-uu
/home/terranpro/code/gnus/lisp/nndoc hides /usr/local/share/emacs/24.1.50/lisp/gnus/nndoc
/home/terranpro/code/gnus/lisp/gnus-sieve hides /usr/local/share/emacs/24.1.50/lisp/gnus/gnus-sieve
/home/terranpro/code/gnus/lisp/mml1991 hides /usr/local/share/emacs/24.1.50/lisp/gnus/mml1991
/home/terranpro/code/gnus/lisp/sieve hides /usr/local/share/emacs/24.1.50/lisp/gnus/sieve
/home/terranpro/code/gnus/lisp/plstore hides /usr/local/share/emacs/24.1.50/lisp/gnus/plstore
/home/terranpro/code/gnus/lisp/rfc2045 hides /usr/local/share/emacs/24.1.50/lisp/gnus/rfc2045
/home/terranpro/code/gnus/lisp/.dir-locals hides /usr/local/share/emacs/24.1.50/lisp/gnus/.dir-locals
/home/terranpro/code/gnus/lisp/gnus-win hides /usr/local/share/emacs/24.1.50/lisp/gnus/gnus-win
/home/terranpro/code/gnus/lisp/mm-encode hides /usr/local/share/emacs/24.1.50/lisp/gnus/mm-encode
/home/terranpro/code/gnus/lisp/nnnil hides /usr/local/share/emacs/24.1.50/lisp/gnus/nnnil
/home/terranpro/code/gnus/lisp/rfc2104 hides /usr/local/share/emacs/24.1.50/lisp/gnus/rfc2104
/home/terranpro/code/gnus/lisp/deuglify hides /usr/local/share/emacs/24.1.50/lisp/gnus/deuglify
/home/terranpro/code/gnus/lisp/nnrss hides /usr/local/share/emacs/24.1.50/lisp/gnus/nnrss
/home/terranpro/code/gnus/lisp/gnus-delay hides /usr/local/share/emacs/24.1.50/lisp/gnus/gnus-delay
/home/terranpro/code/gnus/lisp/gnus-logic hides /usr/local/share/emacs/24.1.50/lisp/gnus/gnus-logic
/home/terranpro/code/gnus/lisp/gnus-cache hides /usr/local/share/emacs/24.1.50/lisp/gnus/gnus-cache
/home/terranpro/code/gnus/lisp/compface hides /usr/local/share/emacs/24.1.50/lisp/gnus/compface
/home/terranpro/code/cedet/eieio/eieio hides /usr/local/share/emacs/24.1.50/lisp/emacs-lisp/eieio
/home/terranpro/code/cedet/eieio/eieio-opt hides /usr/local/share/emacs/24.1.50/lisp/emacs-lisp/eieio-opt
/home/terranpro/code/cedet/eieio/eieio-base hides /usr/local/share/emacs/24.1.50/lisp/emacs-lisp/eieio-base
/home/terranpro/code/cedet/eieio/chart hides /usr/local/share/emacs/24.1.50/lisp/emacs-lisp/chart
/home/terranpro/code/cedet/eieio/eieio-datadebug hides /usr/local/share/emacs/24.1.50/lisp/emacs-lisp/eieio-datadebug
/home/terranpro/code/cedet/eieio/eieio-speedbar hides /usr/local/share/emacs/24.1.50/lisp/emacs-lisp/eieio-speedbar
/home/terranpro/code/cedet/eieio/eieio-custom hides /usr/local/share/emacs/24.1.50/lisp/emacs-lisp/eieio-custom
/home/terranpro/code/cedet/semantic/semantic hides /usr/local/share/emacs/24.1.50/lisp/cedet/semantic
/home/terranpro/code/cedet/ede/ede hides /usr/local/share/emacs/24.1.50/lisp/cedet/ede
/home/terranpro/code/cedet/common/data-debug hides /usr/local/share/emacs/24.1.50/lisp/cedet/data-debug
/home/terranpro/code/cedet/common/cedet-cscope hides /usr/local/share/emacs/24.1.50/lisp/cedet/cedet-cscope
/home/terranpro/code/cedet/common/cedet-files hides /usr/local/share/emacs/24.1.50/lisp/cedet/cedet-files
/home/terranpro/code/cedet/common/mode-local hides /usr/local/share/emacs/24.1.50/lisp/cedet/mode-local
/home/terranpro/code/cedet/srecode/srecode hides /usr/local/share/emacs/24.1.50/lisp/cedet/srecode
/home/terranpro/code/cedet/common/cedet hides /usr/local/share/emacs/24.1.50/lisp/cedet/cedet
/home/terranpro/code/cedet/common/pulse hides /usr/local/share/emacs/24.1.50/lisp/cedet/pulse
/home/terranpro/code/cedet/common/inversion hides /usr/local/share/emacs/24.1.50/lisp/cedet/inversion
/home/terranpro/code/cedet/common/cedet-global hides /usr/local/share/emacs/24.1.50/lisp/cedet/cedet-global
/home/terranpro/code/cedet/common/cedet-idutils hides /usr/local/share/emacs/24.1.50/lisp/cedet/cedet-idutils
/home/terranpro/code/gnus/lisp/parse-time hides /usr/local/share/emacs/24.1.50/lisp/calendar/parse-time
/home/terranpro/code/gnus/lisp/time-date hides /usr/local/share/emacs/24.1.50/lisp/calendar/time-date
/home/terranpro/code/gnus/lisp/pgg-pgp5 hides /usr/local/share/emacs/24.1.50/lisp/obsolete/pgg-pgp5
/home/terranpro/code/gnus/lisp/pgg hides /usr/local/share/emacs/24.1.50/lisp/obsolete/pgg
/home/terranpro/code/gnus/lisp/pgg-parse hides /usr/local/share/emacs/24.1.50/lisp/obsolete/pgg-parse
/home/terranpro/code/gnus/lisp/pgg-gpg hides /usr/local/share/emacs/24.1.50/lisp/obsolete/pgg-gpg
/home/terranpro/code/gnus/lisp/pgg-def hides /usr/local/share/emacs/24.1.50/lisp/obsolete/pgg-def
/home/terranpro/code/gnus/lisp/pgg-pgp hides /usr/local/share/emacs/24.1.50/lisp/obsolete/pgg-pgp

Features:
(shadow sort mail-extr emacsbug message rfc822 mml mml-sec mm-decode
mm-bodies mm-encode mail-parse rfc2231 mailabbrev gmm-utils mailheader
semantic-tag-write erc-imenu semanticdb-typecache semantic-tag-file
add-log ede-emacs vc-bzr semanticdb-file cedet-files semantic-c
semantic-gcc hideif semantic-c-by semantic-lex-spp cc-langs cc-mode
cc-fonts cc-guess cc-menus cc-cmds gnutls network-stream starttls
erc-menu erc-join auth-source gnus-util password-cache erc-ring
erc-networks erc-track erc-match erc-button erc-fill erc-stamp
erc-netsplit erc-pcomplete semantic-el semantic-bovine bovine-debug
semantic-debug paredit yasnippet dropdown-list org-drill org-learn
org-id hi-lock ob-plantuml ob-ditaa org-habit org-latex org-export-latex
org-beamer org-exp ob-exp org-exp-blocks org-agenda 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 comint ansi-color org-list org-faces
org-compat org-entities org-macs noutline outline easy-mmode cal-menu
calendar cal-loaddefs footnote org-install tls erc-goodies erc
erc-backend erc-compat format-spec thingatpt pp color-theme-solarized
solarized-definitions color-theme sendmail rfc2047 rfc2045 ietf-drums
mm-util mail-prsvr mail-utils reporter bbdb timezone bbdb-loaddefs
w3m-load gnus-load semanticdb-global semantic-symref-global
semantic-symref cedet-global cedet-cscope cogre-uml cogre eieio-opt
help-mode view semantic-dep semantic-decorate-include semanticdb-find
semantic-decorate-mode semantic-decorate pulse semantic-m3
semantic-analyze-refs cedet-m3 semantic-mru-bookmark semanticdb-mode
semantic-idle eldoc srecode-mode senator ring which-func semantic-imenu
semantic-sb imenu cogre-srecode semantic-edit srecode-template-mode
srecode-template srecode-template-wy semantic-wisent wisent srecode-map
srecode-insert srecode-args srecode-dictionary srecode-find srecode-ctxt
srecode-compile srecode-table cedet cedet-contrib-load contrib-loaddefs
cogre-load cogre-loaddefs speedbar-load speedbar-loaddefs sb-info
ede-load ede-loaddefs ede-speedbar ede-files ede ede-base ede-auto
eieio-speedbar semantic-ia-sb semantic-analyze semantic-scope
semantic-analyze-fcn semantic-sort semanticdb-javap cedet-java
semanticdb-el semanticdb-ref semantic-find semanticdb semantic-ctxt
semantic-format semantic-util-modes semantic-util semantic semantic-lex
semantic-tag-ls semantic-tag working fame speedbar sb-image ezimage
dframe assoc eieio-custom ede-source eieio-base srecode-load srecode
srecode-loaddefs semantic-load semantic-fw semantic-loaddefs mode-local
find-func eieio-load eieio-loaddefs cedet-load cedet-compat
cedet-loaddefs eieio warnings advice advice-preload byte-opt bytecomp
byte-compile cconv inversion muse-wiki muse-colors muse-docbook
muse-texinfo texnfo-upd texinfo muse-latex muse-html muse-xml-common
cus-edit cus-start cus-load muse-publish muse-project muse-protocols
info easymenu muse-regexps wid-edit derived muse muse-nested-tags
muse-mode htmlize help-fns cl-macs cl macroexp cl-lib brian-config
cc-styles cc-align cc-engine cc-vars cc-defs dired ido edmacro kmacro
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 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)





^ permalink raw reply	[flat|nested] 10+ messages in thread

* bug#11697: 24.1.50; ERC scroll-to-bottom functionality 'broken' in emacs 24.1.x
  2012-06-13 16:22 bug#11697: 24.1.50; ERC scroll-to-bottom functionality 'broken' in emacs 24.1.x Brian Fransioli
@ 2012-06-13 20:03 ` Deniz Dogan
  2012-06-14  7:35   ` Kevin Rodgers
  2012-06-14  9:49   ` Antoine Levitt
  0 siblings, 2 replies; 10+ messages in thread
From: Deniz Dogan @ 2012-06-13 20:03 UTC (permalink / raw)
  To: Brian Fransioli; +Cc: 11697

[-- Attachment #1: Type: text/plain, Size: 1913 bytes --]

On 2012-06-13 18:22,, Brian Fransioli wrote:
>
> After updating to emacs 24.1.x I noticed ERC scroll functionality
> changed.  Originally, it would recenter to force the prompt to be near
> the bottom of the screen (according to `erc-input-line-position').  Now,
> this recentering only happens when I enter text, or perform a mouse
> event.  Channel joins/parts and new messages hit the bottom of the
> screen, and recentering moves the bottom line to the center of the
> buffer.
>
> The overall effect is input by the user moves the screen to the bottom,
> while channel/server inputs bounce around from middle to bottom and back
> again.
>
> Looking in erc-goodies.el at `erc-add-scroll-bottom', it's easy to see
> the documentation is also out of date.  It states it uses
> `window-scroll-functions' but instead adds the hook to
> `post-command-hook'.
>
> Examining commits, I found the culprit:
>
> commit:
> a1d63e03c3eda51dcec158d6027adf9dbdcfd8dd
>
> view changes via git emacs web:
> http://git.savannah.gnu.org/cgit/emacs.git/commit/lisp/erc/erc-goodies.el?id=a1d63e03c3eda51dcec158d6027adf9dbdcfd8dd
>
>
> I see that the changes were reported to fix a bug on tty's, but the
> results are severe motion sickness for even moderately chatty channels.
>
> Reproduce by:
> (erc-scrolltobottom-mode)
> (setq erc-input-line-position -2)
>
> Regards,
> Brian
>

Firstly, I agree with you completely that scrolltobottom needs 
improvements.  I can't be sure why they changed the behavior, since the 
new method is clearly inferior, but I believe it's because 
window-scroll-functions is never meant to change "the way the window is 
scrolled".

I've monkey-patched ERC myself to handle the whole thing better.  I've 
attached the Lisp.  Just evaluate all the code and you'll be all set. 
(I know it's not production-quality code, but it does the job and 
relieves you from ever thinking about it again.)

Deniz

[-- Attachment #2: erc-better-scroll.el --]
[-- Type: text/plain, Size: 2880 bytes --]

(defun erc-display-line-1 (string buffer)
  "Display STRING in `erc-mode' BUFFER.
Auxiliary function used in `erc-display-line'.  The line gets filtered to
interpret the control characters.  Then, `erc-insert-pre-hook' gets called.
If `erc-insert-this' is still t, STRING gets inserted into the buffer.
Afterwards, `erc-insert-modify' and `erc-insert-post-hook' get called.
If STRING is nil, the function does nothing."
  (when string
    (with-current-buffer (or buffer (process-buffer erc-server-process))
      (let ((insert-position (or (marker-position erc-insert-marker)
				 (point-max))))
	(let ((string string) ;; FIXME! Can this be removed?
	      (buffer-undo-list t)
	      (inhibit-read-only t))
	  (unless (string-match "\n$" string)
	    (setq string (concat string "\n"))
	    (when (erc-string-invisible-p string)
	      (erc-put-text-properties 0 (length string)
				       '(invisible intangible) string)))
	  (erc-log (concat "erc-display-line: " string
			   (format "(%S)" string) " in buffer "
			   (format "%s" buffer)))
	  (setq erc-insert-this t)
	  (run-hook-with-args 'erc-insert-pre-hook string)
	  (if (null erc-insert-this)
	      ;; Leave erc-insert-this set to t as much as possible.  Fran
	      ;; Litterio <franl> has seen erc-insert-this set to nil while
	      ;; erc-send-pre-hook is running, which should never happen.  This
	      ;; may cure it.
	      (setq erc-insert-this t)
	    (save-excursion ;; to restore point in the new buffer
	      (save-restriction
		(widen)
		(goto-char insert-position)
		(insert-before-markers string)
		;; run insertion hook, with point at restored location
		(save-restriction
		  (narrow-to-region insert-position (point))
		  (run-hooks 'erc-insert-modify-hook)
		  (run-hooks 'erc-insert-post-hook)
		  (when erc-remove-parsed-property
		    (remove-text-properties (point-min) (point-max)
					    '(erc-parsed nil))))))))
	(erc-update-undo-list (- (or (marker-position erc-insert-marker)
				     (point-max))
				 insert-position)))
      (run-hooks 'erc-display-post-hook)))) ;;; this line and only this line was added

(defvar erc-display-post-hook nil
  "New hook!")

(defun damd-erc-display-post-hook ()
  (let ((windows (get-buffer-window-list (current-buffer) nil 'visible)))
    (dolist (w windows)
      (when (>= (point) erc-input-marker)
        (with-selected-window w
          (recenter -1))))))
(add-hook 'erc-display-post-hook 'damd-erc-display-post-hook)

(defun damd-erc-send-post-hook ()
  (when (>= (point) erc-input-marker)
    (goto-char (point-max))
    (widen)
    (recenter -1)))
(add-hook 'erc-send-post-hook 'damd-erc-send-post-hook)

(defun damd-window-configuration-change-hook ()
  (when (and (eq major-mode 'erc-mode)
             (>= (point) erc-input-marker))
    (recenter -1)))
(add-hook 'window-configuration-change-hook 'damd-window-configuration-change-hook)

^ permalink raw reply	[flat|nested] 10+ messages in thread

* bug#11697: 24.1.50; ERC scroll-to-bottom functionality 'broken' in emacs 24.1.x
  2012-06-13 20:03 ` Deniz Dogan
@ 2012-06-14  7:35   ` Kevin Rodgers
  2012-06-14  9:49   ` Antoine Levitt
  1 sibling, 0 replies; 10+ messages in thread
From: Kevin Rodgers @ 2012-06-14  7:35 UTC (permalink / raw)
  To: 11697

On 6/13/12 2:03 PM, Deniz Dogan wrote:
...
> (I know it's not
> production-quality code, but it does the job and relieves you from ever thinking
> about it again.)

Hah!

-- 
Kevin Rodgers
Denver, Colorado, USA






^ permalink raw reply	[flat|nested] 10+ messages in thread

* bug#11697: 24.1.50; ERC scroll-to-bottom functionality 'broken' in emacs 24.1.x
  2012-06-13 20:03 ` Deniz Dogan
  2012-06-14  7:35   ` Kevin Rodgers
@ 2012-06-14  9:49   ` Antoine Levitt
  2012-06-14 20:51     ` Deniz Dogan
  1 sibling, 1 reply; 10+ messages in thread
From: Antoine Levitt @ 2012-06-14  9:49 UTC (permalink / raw)
  To: 11697

13/06/12 22:03, Deniz Dogan
> On 2012-06-13 18:22,, Brian Fransioli wrote:
>>
>> After updating to emacs 24.1.x I noticed ERC scroll functionality
>> changed.  Originally, it would recenter to force the prompt to be near
>> the bottom of the screen (according to `erc-input-line-position').  Now,
>> this recentering only happens when I enter text, or perform a mouse
>> event.  Channel joins/parts and new messages hit the bottom of the
>> screen, and recentering moves the bottom line to the center of the
>> buffer.
>>
>> The overall effect is input by the user moves the screen to the bottom,
>> while channel/server inputs bounce around from middle to bottom and back
>> again.
>>
>> Looking in erc-goodies.el at `erc-add-scroll-bottom', it's easy to see
>> the documentation is also out of date.  It states it uses
>> `window-scroll-functions' but instead adds the hook to
>> `post-command-hook'.
>>
>> Examining commits, I found the culprit:
>>
>> commit:
>> a1d63e03c3eda51dcec158d6027adf9dbdcfd8dd
>>
>> view changes via git emacs web:
>> http://git.savannah.gnu.org/cgit/emacs.git/commit/lisp/erc/erc-goodies.el?id=a1d63e03c3eda51dcec158d6027adf9dbdcfd8dd
>>
>>
>> I see that the changes were reported to fix a bug on tty's, but the
>> results are severe motion sickness for even moderately chatty channels.
>>
>> Reproduce by:
>> (erc-scrolltobottom-mode)
>> (setq erc-input-line-position -2)
>>
>> Regards,
>> Brian
>>
>
> Firstly, I agree with you completely that scrolltobottom needs
> improvements.  I can't be sure why they changed the behavior, since
> the new method is clearly inferior, but I believe it's because
> window-scroll-functions is never meant to change "the way the window
> is scrolled".

Hi,

I'm responsible for the mess. Sorry, I don't customize
erc-input-line-position, and it didn't occur to me that it might mess
things up. I tried to think of something better for erc-scrolltobottom,
but I'm not familiar with erc internals and that was the best I could
do. The reason for the change was that as you said,
window-scroll-functions is not intended to be used like that, and it
caused weird bugs.

> I've monkey-patched ERC myself to handle the whole thing better.  I've
> attached the Lisp.  Just evaluate all the code and you'll be all
> set. (I know it's not production-quality code, but it does the job and
> relieves you from ever thinking about it again.)

Great! Could you submit a proper patch, so that Someone (tm; there seems
to be a lack of maintainers for ERC) can review it and merge it into
trunk? erc-scrolltobottom has been broken for years, with weird bugs and
excessive CPU consumption, and it's high time it changed.






^ permalink raw reply	[flat|nested] 10+ messages in thread

* bug#11697: 24.1.50; ERC scroll-to-bottom functionality 'broken' in emacs 24.1.x
  2012-06-14  9:49   ` Antoine Levitt
@ 2012-06-14 20:51     ` Deniz Dogan
  2012-06-14 21:03       ` Antoine Levitt
  0 siblings, 1 reply; 10+ messages in thread
From: Deniz Dogan @ 2012-06-14 20:51 UTC (permalink / raw)
  To: Antoine Levitt; +Cc: 11697

On 2012-06-14 11:49,, Antoine Levitt wrote:
> 13/06/12 22:03, Deniz Dogan
>> On 2012-06-13 18:22,, Brian Fransioli wrote:
>>>
>>> After updating to emacs 24.1.x I noticed ERC scroll functionality
>>> changed.  Originally, it would recenter to force the prompt to be near
>>> the bottom of the screen (according to `erc-input-line-position').  Now,
>>> this recentering only happens when I enter text, or perform a mouse
>>> event.  Channel joins/parts and new messages hit the bottom of the
>>> screen, and recentering moves the bottom line to the center of the
>>> buffer.
>>>
>>> The overall effect is input by the user moves the screen to the bottom,
>>> while channel/server inputs bounce around from middle to bottom and back
>>> again.
>>>
>>> Looking in erc-goodies.el at `erc-add-scroll-bottom', it's easy to see
>>> the documentation is also out of date.  It states it uses
>>> `window-scroll-functions' but instead adds the hook to
>>> `post-command-hook'.
>>>
>>> Examining commits, I found the culprit:
>>>
>>> commit:
>>> a1d63e03c3eda51dcec158d6027adf9dbdcfd8dd
>>>
>>> view changes via git emacs web:
>>> http://git.savannah.gnu.org/cgit/emacs.git/commit/lisp/erc/erc-goodies.el?id=a1d63e03c3eda51dcec158d6027adf9dbdcfd8dd
>>>
>>>
>>> I see that the changes were reported to fix a bug on tty's, but the
>>> results are severe motion sickness for even moderately chatty channels.
>>>
>>> Reproduce by:
>>> (erc-scrolltobottom-mode)
>>> (setq erc-input-line-position -2)
>>>
>>> Regards,
>>> Brian
>>>
>>
>> Firstly, I agree with you completely that scrolltobottom needs
>> improvements.  I can't be sure why they changed the behavior, since
>> the new method is clearly inferior, but I believe it's because
>> window-scroll-functions is never meant to change "the way the window
>> is scrolled".
>
> Hi,
>
> I'm responsible for the mess. Sorry, I don't customize
> erc-input-line-position, and it didn't occur to me that it might mess
> things up. I tried to think of something better for erc-scrolltobottom,
> but I'm not familiar with erc internals and that was the best I could
> do. The reason for the change was that as you said,
> window-scroll-functions is not intended to be used like that, and it
> caused weird bugs.
>
>> I've monkey-patched ERC myself to handle the whole thing better.  I've
>> attached the Lisp.  Just evaluate all the code and you'll be all
>> set. (I know it's not production-quality code, but it does the job and
>> relieves you from ever thinking about it again.)
>
> Great! Could you submit a proper patch, so that Someone (tm; there seems
> to be a lack of maintainers for ERC) can review it and merge it into
> trunk? erc-scrolltobottom has been broken for years, with weird bugs and
> excessive CPU consumption, and it's high time it changed.
>

The excessive CPU consumption comes from the fact that it nowadays uses 
post-command-hook, which is executed just about all the time.  :)

Unfortunately, my patch (ab)uses window-scroll-functions, so it's really 
no better than the way ERC was before.





^ permalink raw reply	[flat|nested] 10+ messages in thread

* bug#11697: 24.1.50; ERC scroll-to-bottom functionality 'broken' in emacs 24.1.x
  2012-06-14 20:51     ` Deniz Dogan
@ 2012-06-14 21:03       ` Antoine Levitt
  2012-06-14 21:10         ` Deniz Dogan
  2012-06-15  2:00         ` Stefan Monnier
  0 siblings, 2 replies; 10+ messages in thread
From: Antoine Levitt @ 2012-06-14 21:03 UTC (permalink / raw)
  To: Deniz Dogan; +Cc: 11697

14/06/12 22:51, Deniz Dogan
>>> Firstly, I agree with you completely that scrolltobottom needs
>>> improvements.  I can't be sure why they changed the behavior, since
>>> the new method is clearly inferior, but I believe it's because
>>> window-scroll-functions is never meant to change "the way the window
>>> is scrolled".
>>
>> Hi,
>>
>> I'm responsible for the mess. Sorry, I don't customize
>> erc-input-line-position, and it didn't occur to me that it might mess
>> things up. I tried to think of something better for erc-scrolltobottom,
>> but I'm not familiar with erc internals and that was the best I could
>> do. The reason for the change was that as you said,
>> window-scroll-functions is not intended to be used like that, and it
>> caused weird bugs.
>>
>>> I've monkey-patched ERC myself to handle the whole thing better.  I've
>>> attached the Lisp.  Just evaluate all the code and you'll be all
>>> set. (I know it's not production-quality code, but it does the job and
>>> relieves you from ever thinking about it again.)
>>
>> Great! Could you submit a proper patch, so that Someone (tm; there seems
>> to be a lack of maintainers for ERC) can review it and merge it into
>> trunk? erc-scrolltobottom has been broken for years, with weird bugs and
>> excessive CPU consumption, and it's high time it changed.
>>
>
> The excessive CPU consumption comes from the fact that it nowadays
> uses post-command-hook, which is executed just about all the time.  :)

I don't think so, I had excessive CPU consumption before the code used
post-command-hook (main way to trigger is to hold a random key down
while watching the result of top. It's already appalling in ERC without
erc-scrolltobottom, but it's even worth with it).

The way I see it, this scrolltobottom thing is a problem that is global
to emacs and has nothing to do with ERC in particular. For instance, I
also want my shell buffers not to scroll past the end of
buffers. Actually I think (but am not sure ; it would require testing)
I'd want all buffers to behave that way, and never, ever display
anything past the end of the buffer. An ideal solution would be a local
variable, that'd inhibit "bad" recentering (and therefore would not
incur any performance loss, as I believe the main loss is when a hook
recenters after it has already been recentered). But that's more
ambitious.





^ permalink raw reply	[flat|nested] 10+ messages in thread

* bug#11697: 24.1.50; ERC scroll-to-bottom functionality 'broken' in emacs 24.1.x
  2012-06-14 21:03       ` Antoine Levitt
@ 2012-06-14 21:10         ` Deniz Dogan
  2012-06-15  2:00         ` Stefan Monnier
  1 sibling, 0 replies; 10+ messages in thread
From: Deniz Dogan @ 2012-06-14 21:10 UTC (permalink / raw)
  To: Antoine Levitt; +Cc: 11697

On 2012-06-14 23:03,, Antoine Levitt wrote:
> 14/06/12 22:51, Deniz Dogan
>> The excessive CPU consumption comes from the fact that it nowadays
>> uses post-command-hook, which is executed just about all the time.  :)
>
> I don't think so, I had excessive CPU consumption before the code used
> post-command-hook (main way to trigger is to hold a random key down
> while watching the result of top. It's already appalling in ERC without
> erc-scrolltobottom, but it's even worth with it).
>
> The way I see it, this scrolltobottom thing is a problem that is global
> to emacs and has nothing to do with ERC in particular. For instance, I
> also want my shell buffers not to scroll past the end of
> buffers. Actually I think (but am not sure ; it would require testing)
> I'd want all buffers to behave that way, and never, ever display
> anything past the end of the buffer. An ideal solution would be a local
> variable, that'd inhibit "bad" recentering (and therefore would not
> incur any performance loss, as I believe the main loss is when a hook
> recenters after it has already been recentered). But that's more
> ambitious.
>

I agree.  Another improvement, especially for IRC clients, would be to 
allow for buffers to start growing from the bottom of the window, much 
like Irssi and mIRC.





^ permalink raw reply	[flat|nested] 10+ messages in thread

* bug#11697: 24.1.50; ERC scroll-to-bottom functionality 'broken' in emacs 24.1.x
  2012-06-14 21:03       ` Antoine Levitt
  2012-06-14 21:10         ` Deniz Dogan
@ 2012-06-15  2:00         ` Stefan Monnier
  2012-06-15  6:49           ` Antoine Levitt
       [not found]           ` <mailman.2844.1339743011.855.bug-gnu-emacs@gnu.org>
  1 sibling, 2 replies; 10+ messages in thread
From: Stefan Monnier @ 2012-06-15  2:00 UTC (permalink / raw)
  To: Antoine Levitt; +Cc: 11697

> to emacs and has nothing to do with ERC in particular. For instance, I
> also want my shell buffers not to scroll past the end of
> buffers. Actually I think (but am not sure ; it would require testing)
> I'd want all buffers to behave that way, and never, ever display
> anything past the end of the buffer.

How 'bout setting scroll-conservatively to 1000?


        Stefan





^ permalink raw reply	[flat|nested] 10+ messages in thread

* bug#11697: 24.1.50; ERC scroll-to-bottom functionality 'broken' in emacs 24.1.x
  2012-06-15  2:00         ` Stefan Monnier
@ 2012-06-15  6:49           ` Antoine Levitt
       [not found]           ` <mailman.2844.1339743011.855.bug-gnu-emacs@gnu.org>
  1 sibling, 0 replies; 10+ messages in thread
From: Antoine Levitt @ 2012-06-15  6:49 UTC (permalink / raw)
  To: Stefan Monnier; +Cc: 11697

15/06/12 04:00, Stefan Monnier
>> to emacs and has nothing to do with ERC in particular. For instance, I
>> also want my shell buffers not to scroll past the end of
>> buffers. Actually I think (but am not sure ; it would require testing)
>> I'd want all buffers to behave that way, and never, ever display
>> anything past the end of the buffer.
>
> How 'bout setting scroll-conservatively to 1000?
>
>
>         Stefan

Even with scroll-conservatively, there are situations where the
centering displays stuff after the buffer end, by playing around with
C-v / M-v. Another way is to find a file, M->, then C-x 2 and C-x
1. There's a lot of other ways. This is in contrast with most
editors/browsers, which don't allow you to scroll past the end of the
buffer, ever. I'm not 100% sure whether I want that behavior for emacs
generally. However, I do want it for ERC / shells.





^ permalink raw reply	[flat|nested] 10+ messages in thread

* bug#11697: 24.1.50; ERC scroll-to-bottom functionality 'broken' in emacs 24.1.x
       [not found]           ` <mailman.2844.1339743011.855.bug-gnu-emacs@gnu.org>
@ 2013-02-08  5:06             ` maden.ldm
  0 siblings, 0 replies; 10+ messages in thread
From: maden.ldm @ 2013-02-08  5:06 UTC (permalink / raw)
  To: gnu.emacs.bug; +Cc: 11697

On Friday, June 15, 2012 2:49:43 AM UTC-4, Antoine Levitt wrote:
> 15/06/12 04:00, Stefan Monnier
> 
> >> to emacs and has nothing to do with ERC in particular. For instance, I
> 
> >> also want my shell buffers not to scroll past the end of
> 
> >> buffers. Actually I think (but am not sure ; it would require testing)
> 
> >> I'd want all buffers to behave that way, and never, ever display
> 
> >> anything past the end of the buffer.
> 
> >
> 
> > How 'bout setting scroll-conservatively to 1000?
> 
> >
> 
> >
> 
> >         Stefan
> 
> 
> 
> Even with scroll-conservatively, there are situations where the
> 
> centering displays stuff after the buffer end, by playing around with
> 
> C-v / M-v. Another way is to find a file, M->, then C-x 2 and C-x
> 
> 1. There's a lot of other ways. This is in contrast with most
> 
> editors/browsers, which don't allow you to scroll past the end of the
> 
> buffer, ever. I'm not 100% sure whether I want that behavior for emacs
> 
> generally. However, I do want it for ERC / shells.

Was this ever resolved? I personally still experience it with a freshly compiled version.

GNU Emacs 24.2.1 (x86_64-unknown-linux-gnu, GTK+ Version 2.24.10) of 2013-02-07 on linux-e2bl
ERC Version 5.3 (GNU Emacs 24.2.1)





^ permalink raw reply	[flat|nested] 10+ messages in thread

end of thread, other threads:[~2013-02-08  5:06 UTC | newest]

Thread overview: 10+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2012-06-13 16:22 bug#11697: 24.1.50; ERC scroll-to-bottom functionality 'broken' in emacs 24.1.x Brian Fransioli
2012-06-13 20:03 ` Deniz Dogan
2012-06-14  7:35   ` Kevin Rodgers
2012-06-14  9:49   ` Antoine Levitt
2012-06-14 20:51     ` Deniz Dogan
2012-06-14 21:03       ` Antoine Levitt
2012-06-14 21:10         ` Deniz Dogan
2012-06-15  2:00         ` Stefan Monnier
2012-06-15  6:49           ` Antoine Levitt
     [not found]           ` <mailman.2844.1339743011.855.bug-gnu-emacs@gnu.org>
2013-02-08  5:06             ` maden.ldm

Code repositories for project(s) associated with this public inbox

	https://git.savannah.gnu.org/cgit/emacs.git

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).