unofficial mirror of emacs-devel@gnu.org 
 help / color / mirror / code / Atom feed
From: Mark Lillibridge <mark.lillibridge@hp.com>
To: Glenn Morris <rgm@gnu.org>
Cc: lekktu@gmail.com, eliz@gnu.org, monnier@iro.umontreal.ca,
	emacs-devel@gnu.org
Subject: Re: Emacs's handling of line numbers [from bug#5042]
Date: Wed, 23 Jun 2010 19:24:19 -0700	[thread overview]
Message-ID: <qmh39wd417w.fsf@ts-rhel4.hpl.hp.com> (raw)
In-Reply-To: <18eigg4spl.fsf@fencepost.gnu.org> (message from Glenn Morris on Wed, 9 Jun 2010 02:37:26 -0400)


Glenn wrote:
>  Mark Lillibridge wrote:
>  
>  >>  Grep counts 8 such calls only.  Doesn't seem unmanageable at all.
>  >
>  > I think you missed some:
>  >
>  > ts-rhel4 [58]% pwd
>  > /nfs/pm-data1/mnt/d4/home/mdl/bin/emacs-23.1/lisp
>  
>  You should check the trunk (or even Emacs 23.2), where the
>  documentation and usage of goto-line is different to that in 23.1.

Finally got a chance to do that; you are correct:

    GNU Emacs 24.0.50.1 (i386-mingw-nt6.0.6002) of 2010-06-23 on LENNART-69DE564

    
    goto-line is an interactive compiled Lisp function in `simple.el'.
    
    It is bound to M-g, <menu-bar> <edit> <goto> <go-to-line>.
    
    (goto-line LINE &optional BUFFER)
    
    Goto LINE, counting from line 1 at beginning of buffer.
    Normally, move point in the current buffer, and leave mark at the
    previous position.  With just C-u as argument,
    move point in the most recently selected other buffer, and switch to it.
    
    If there's a number in the buffer at point, it is the default for LINE.
    
    This function is usually the wrong thing to use in a Lisp program.
    What you probably want instead is something like:
      (goto-char (point-min)) (forward-line (1- N))
    If at all possible, an even better solution is to use char counts
    rather than line counts.


    Mark@MDL2 /cygdrive/c/Program Files (x86)/Emacs_24/emacs/lisp
    $ find . -name \*.el -exec grep '(goto-line' {} \; -print
        (with-no-warnings (goto-line line))
    ./cedet/semantic/symref/list.el
                  ;; (goto-line line)
    ./cedet/semantic/symref.el
         (with-no-warnings (goto-line (vi-prefix-numeric-value arg)))))
    ./emulation/vi.el
                `(goto-line (string-to-int (elt ,elt 1))))
    ./progmodes/cperl-mode.el
                (goto-line ,current-line)
    ./vc/vc-annotate.el
    ;;  (if line (goto-line (prefix-numeric-value line))
    ./view.el

So, am I hearing that we should change goto-line to the following
functionality:

    goto-line is an interactive compiled Lisp function in `simple.el'.
    
    It is bound to M-g, <menu-bar> <edit> <goto> <go-to-line>.
    
    (goto-line LINE &optional BUFFER)
    
|   Goto line with line number LINE; use linum mode to see what line
|   numbers each line is assigned.
    Normally, move point in the current buffer, and leave mark at the
    previous position.  With just C-u as argument,
    move point in the most recently selected other buffer, and switch to it.
    
    If there's a number in the buffer at point, it is the default for LINE.
    
    This function is usually the wrong thing to use in a Lisp program.
    What you probably want instead is something like:
      (goto-char (point-min)) (forward-line (1- N))
    If at all possible, an even better solution is to use char counts
    rather than line counts.

Amusingly, the core of the first implementation would be the elisp above:

      (goto-char (point-min)) (forward-line (1- N))

which is *not* what goto-line actually does!  (It does a widen, which
this change would remove.)

- Mark



      reply	other threads:[~2010-06-24  2:24 UTC|newest]

Thread overview: 56+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2010-02-15 18:47 Emacs's handling of line numbers [from bug#5042] Mark Lillibridge
     [not found] ` <jwvd4068dsr.fsf-monnier+emacs@gnu.org>
2010-04-11 22:22   ` Mark Lillibridge
2010-04-12  2:27     ` Stefan Monnier
2010-04-17  1:57       ` Mark Lillibridge
2010-04-17  7:29         ` Eli Zaretskii
2010-04-17 14:45           ` Stefan Monnier
2010-04-17 15:57             ` Eli Zaretskii
2010-04-17 19:51               ` Mark Lillibridge
2010-04-17 21:04                 ` Eli Zaretskii
2010-04-17 21:17                   ` Juanma Barranquero
2010-04-17 21:31                     ` Drew Adams
2010-04-18 18:15                       ` widen-one-level [was: Emacs's handling of line numbers] Drew Adams
2010-04-18 21:31                         ` Juri Linkov
2010-04-19  0:25                           ` Drew Adams
2010-04-18 23:30                         ` Davis Herring
2010-04-19 19:57                           ` Richard Stallman
2010-04-19 20:22                             ` Drew Adams
2010-04-19 22:52                             ` Juri Linkov
2010-04-19  1:56                         ` Leo
2010-04-19  2:04                           ` Drew Adams
2010-04-19 11:34                             ` Leo
2010-04-19 16:31                             ` Drew Adams
2010-04-19 17:57                               ` Leo
2010-04-19 22:56                                 ` Drew Adams
2010-04-22  9:59                                   ` Leo
2010-04-18  3:12                     ` Emacs's handling of line numbers [from bug#5042] Eli Zaretskii
2010-04-18  3:49                       ` Juanma Barranquero
2010-04-18  8:05                         ` Juri Linkov
2010-04-18 13:44                           ` Drew Adams
2010-04-18 13:50                             ` Lennart Borgman
2010-04-18 16:40                               ` Drew Adams
2010-04-18 14:03                             ` Juanma Barranquero
2010-04-18 14:14                               ` David Kastrup
2010-04-18 16:41                               ` Drew Adams
2010-04-18 17:03                                 ` Juanma Barranquero
2010-04-18 21:29                                   ` Juri Linkov
2010-04-18 13:45                           ` Drew Adams
2010-04-18 17:29                         ` Eli Zaretskii
2010-04-18 17:52                           ` Juanma Barranquero
2010-04-18 17:56                             ` Eli Zaretskii
2010-04-18 17:00                       ` Mark Lillibridge
2010-04-18 17:38                         ` Eli Zaretskii
2010-04-18 18:11                           ` Lennart Borgman
2010-04-22  2:17                           ` Mark Lillibridge
2010-04-22  8:06                             ` David Kastrup
2010-04-22  8:38                               ` Juri Linkov
2010-04-22  8:45                               ` Juanma Barranquero
2010-06-06 18:18                             ` Mark Lillibridge
2010-06-07  1:30                               ` Stefan Monnier
2010-06-07  1:41                                 ` Lennart Borgman
2010-06-07 13:45                                   ` Stefan Monnier
2010-06-09  2:20                                     ` Mark Lillibridge
2010-06-09  3:44                                       ` Miles Bader
2010-06-09  2:19                                 ` Mark Lillibridge
2010-06-09  6:37                                   ` Glenn Morris
2010-06-24  2:24                                     ` Mark Lillibridge [this message]

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

  List information: https://www.gnu.org/software/emacs/

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=qmh39wd417w.fsf@ts-rhel4.hpl.hp.com \
    --to=mark.lillibridge@hp.com \
    --cc=eliz@gnu.org \
    --cc=emacs-devel@gnu.org \
    --cc=lekktu@gmail.com \
    --cc=monnier@iro.umontreal.ca \
    --cc=rgm@gnu.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
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).