GNU bug report logs - #8253
23.2; variable-at-point on ' of 'foo

Previous Next

Package: emacs;

Reported by: Kevin Ryde <user42 <at> zip.com.au>

Date: Mon, 14 Mar 2011 22:59:02 UTC

Severity: minor

Found in version 23.2

Done: Stefan Monnier <monnier <at> iro.umontreal.ca>

Bug is archived. No further changes may be made.

Full log


View this message in rfc822 format

From: help-debbugs <at> gnu.org (GNU bug Tracking System)
To: Stefan Monnier <monnier <at> iro.umontreal.ca>
Cc: tracker <at> debbugs.gnu.org
Subject: bug#8253: closed (23.2; variable-at-point on ' of 'foo)
Date: Tue, 15 Mar 2011 02:37:01 +0000
[Message part 1 (text/plain, inline)]
Your message dated Mon, 14 Mar 2011 22:36:28 -0400
with message-id <jwvlj0h5dpu.fsf-monnier+emacs <at> gnu.org>
and subject line Re: bug#8253: 23.2; variable-at-point on ' of 'foo
has caused the GNU bug report #8253,
regarding 23.2; variable-at-point on ' of 'foo
to be marked as done.

(If you believe you have received this mail in error, please contact
help-debbugs <at> gnu.org.)


-- 
8253: http://debbugs.gnu.org/cgi/bugreport.cgi?bug=8253
GNU Bug Tracking System
Contact help-debbugs <at> gnu.org with problems
[Message part 2 (message/rfc822, inline)]
From: Kevin Ryde <user42 <at> zip.com.au>
To: bug-gnu-emacs <at> gnu.org
Subject: 23.2; variable-at-point on ' of 'foo
Date: Tue, 15 Mar 2011 09:58:29 +1100
[Message part 3 (text/plain, inline)]
When point is on the ' of a 'foo quoted variable, M-x describe-variable
doesn't offer that variable as a default, and `variable-at-point'
doesn't return it.  Eg.

    (set 'baud-rate 9600)
         ^---point here
    M-: (variable-at-point)
    => 0

where I hoped it would return `baud-rate', as it does if point is on say
the "b".

I strike this when using backward/forward sexp to move between args
since that leaves point on the '.  It'd be good if variable-at-point
allowed/recognised that.

In the code there's a

    (skip-chars-forward "'")

which looks like it's supposed to do this, but it's after the bit going
to the start of the word and seems to be defeated by (forward-sexp -1).
Actually that ends up going to the previous sexp, so if you've got

    (list 'emacs-version
             'baud-rate)
             ^---point here

then it returns the preceding `emacs-version' instead of `baud-rate'.

Perhaps the change below.  bzr has still defeated me, or I would try a
diff with it :-(

2011-03-14  Kevin Ryde  <user42 <at> zip.com.au>

	* help-fns.el (variable-at-point): Skip forward across ' first, to
	allow point on the ' part of quoted 'emacs-version etc.  Helps
	when moving by sexps which leaves point on the ' instead of the
	variable name as such.

[help-fns.el.variable-at-point.diff (text/x-diff, inline)]
--- help-fns.el.~1.146.~	2009-11-17 17:24:19.000000000 +1100
+++ help-fns.el	2011-03-15 09:48:49.000000000 +1100
@@ -527,11 +527,11 @@
   (with-syntax-table emacs-lisp-mode-syntax-table
     (or (condition-case ()
 	    (save-excursion
+	      (skip-chars-forward "'")
 	      (or (not (zerop (skip-syntax-backward "_w")))
 		  (eq (char-syntax (following-char)) ?w)
 		  (eq (char-syntax (following-char)) ?_)
 		  (forward-sexp -1))
-	      (skip-chars-forward "'")
 	      (let ((obj (read (current-buffer))))
 		(and (symbolp obj) (boundp obj) obj)))
           (error nil))
[Message part 5 (text/plain, inline)]




In GNU Emacs 23.2.1 (i486-pc-linux-gnu, GTK+ Version 2.20.0)
 of 2010-05-16 on raven, modified by Debian
configured using `configure  '--build' 'i486-linux-gnu' '--build' 'i486-linux-gnu' '--prefix=/usr' '--sharedstatedir=/var/lib' '--libexecdir=/usr/lib' '--localstatedir=/var/lib' '--infodir=/usr/share/info' '--mandir=/usr/share/man' '--with-pop=yes' '--enable-locallisppath=/etc/emacs23:/etc/emacs:/usr/local/share/emacs/23.2/site-lisp:/usr/local/share/emacs/site-lisp:/usr/share/emacs/23.2/site-lisp:/usr/share/emacs/site-lisp:/usr/share/emacs/23.2/leim' '--with-x=yes' '--with-x-toolkit=gtk' '--with-toolkit-scroll-bars' 'build_alias=i486-linux-gnu' 'CFLAGS=-DDEBIAN -g -O2' 'LDFLAGS=-g' 'CPPFLAGS=''

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: en_AU
  value of $XMODIFIERS: nil
  locale-coding-system: iso-latin-1-unix
  default enable-multibyte-characters: t
[Message part 6 (message/rfc822, inline)]
From: Stefan Monnier <monnier <at> iro.umontreal.ca>
To: Kevin Ryde <user42 <at> zip.com.au>
Cc: 8253-done <at> debbugs.gnu.org
Subject: Re: bug#8253: 23.2; variable-at-point on ' of 'foo
Date: Mon, 14 Mar 2011 22:36:28 -0400
>     (set 'baud-rate 9600)

FWIW, I strongly recommend you use (setq baud-rate 9600) instead.
This said, the patch looks fine, except that the second skip-chars-forward
has to stay (it's there because (forward-sexp -1) tends to skip backward
over quotes).

Installed on trunk,


        Stefan


This bug report was last modified 14 years and 69 days ago.

Previous Next


GNU bug tracking system
Copyright (C) 1999 Darren O. Benham, 1997,2003 nCipher Corporation Ltd, 1994-97 Ian Jackson.