unofficial mirror of help-gnu-emacs@gnu.org
 help / color / mirror / Atom feed
* thingatpt
@ 2008-02-29  2:00 Xavier Maillard
  2008-02-29  3:29 ` thingatpt Bastien Guerry
                   ` (2 more replies)
  0 siblings, 3 replies; 4+ messages in thread
From: Xavier Maillard @ 2008-02-29  2:00 UTC (permalink / raw)
  To: help-gnu-emacs

Hi,

I am trying to find out how to extend thing at point for a
personnal need.

I have several items that are composed of a series of numbers (10
to be precise), these items represents transaction's IDs. I want
GNU Emacs to recognise them as this so that I can do specialised
actions on them. All is ready *but* I do not know how to define a
"thing" with thingatpt.el.

On the same topic, I can have several transaction IDs on the same
line, for exmple:

1234567890 0123456789 etc.

I'd like to be able to navigate to the next/previous item using
the TAB key, how would you do that ?

Regards,

	Xavier
-- 
http://www.gnu.org
http://www.april.org
http://www.lolica.org




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

* Re: thingatpt
  2008-02-29  2:00 thingatpt Xavier Maillard
@ 2008-02-29  3:29 ` Bastien Guerry
  2008-02-29  3:57 ` thingatpt Drew Adams
  2008-02-29  7:20 ` thingatpt Andreas Röhler
  2 siblings, 0 replies; 4+ messages in thread
From: Bastien Guerry @ 2008-02-29  3:29 UTC (permalink / raw)
  To: Xavier Maillard; +Cc: help-gnu-emacs

Xavier Maillard <xma@gnu.org> writes:

> I am trying to find out how to extend thing at point for a
> personnal need.

I'm not sure you need thingatpt.  

> On the same topic, I can have several transaction IDs on the same
> line, for exmple:
>
> 1234567890 0123456789 etc.
>
> I'd like to be able to navigate to the next/previous item using
> the TAB key, how would you do that ?

I would use something like this:

(defvar my-mouse-map (make-sparse-keymap))

(define-key my-mouse-map [(tab)] 'my-goto-next-active-string)

(defun my-goto-next-active-string ()
  (interactive)
  (let ((pos (point)))
    (re-search-forward "\\<[0-9]\\{10\\}\\>" nil t)
    (if (and (eq (match-beginning 0) pos)
	     (re-search-forward "\\<[0-9]\\{10\\}\\>" nil t))
	(goto-char (match-beginning 0))
      (goto-char pos))))

(defun my-make-active-strings ()
  (interactive)
  (save-excursion
    (goto-char (point-min))
    (while (re-search-forward "\\<[0-9]\\{10\\}\\>" nil t)
      (add-text-properties (match-beginning 0) (match-end 0)
			   (list 'mouse-face 'highlight
				 'rear-nonsticky t
				 'keymap my-mouse-map)))))

You can also use `next-single-property-change' instead of the regexp 
in my-goto-next-active-string.  Hope this gives you directions.

-- 
Bastien




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

* RE: thingatpt
  2008-02-29  2:00 thingatpt Xavier Maillard
  2008-02-29  3:29 ` thingatpt Bastien Guerry
@ 2008-02-29  3:57 ` Drew Adams
  2008-02-29  7:20 ` thingatpt Andreas Röhler
  2 siblings, 0 replies; 4+ messages in thread
From: Drew Adams @ 2008-02-29  3:57 UTC (permalink / raw)
  To: 'Xavier Maillard', help-gnu-emacs

> I am trying to find out how to extend thing at point for a
> personnal need.
> 
> I have several items that are composed of a series of numbers (10
> to be precise), these items represents transaction's IDs. I want
> GNU Emacs to recognise them as this so that I can do specialised
> actions on them. All is ready *but* I do not know how to define a
> "thing" with thingatpt.el.
> 
> On the same topic, I can have several transaction IDs on the same
> line, for exmple:
> 
> 1234567890 0123456789 etc.
> 
> I'd like to be able to navigate to the next/previous item using
> the TAB key, how would you do that ?

A basic idea of thingatpt is that you can just define a function that moves
forward across your thing. If you call your thing, say, transids, then you
would define a function `forward-transids'. That's all.

You can alternatively put one or more of these properties on a symbol that
names your thing, `transids': beginning-op, end-op,
bounds-of-thing-at-point, thing-at-point. The property values are functions
that determine the beginning, end, beginning and end of such a thing, or the
entire thing itself.

thingatpt.el has several examples of defining types of things: url (via
properties end-op, beginning-op, thing-at-point, and
bounds-of-thing-at-point), whitespace (via function forward-whitespace),
buffer (via properties end-op and beginning-op), symbol (via function
forward-symbol), and so on.

You can also use the function thing-at-point to define things. See the
examples of word-at-point and sentence-at-point. You can, similarly, use
function form-at-point to do the same thing - see examples number-at-point
and list-at-point.

Library thingatpt+.el has additional examples of defining things:
http://www.emacswiki.org/cgi-bin/wiki/thingatpt%2b.el
http://www.emacswiki.org/cgi-bin/wiki/ThingAtPointPlus

For more info (start here):
http://www.emacswiki.org/cgi-bin/wiki/ThingAtPoint

HTH.





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

* Re: thingatpt
  2008-02-29  2:00 thingatpt Xavier Maillard
  2008-02-29  3:29 ` thingatpt Bastien Guerry
  2008-02-29  3:57 ` thingatpt Drew Adams
@ 2008-02-29  7:20 ` Andreas Röhler
  2 siblings, 0 replies; 4+ messages in thread
From: Andreas Röhler @ 2008-02-29  7:20 UTC (permalink / raw)
  To: Xavier Maillard; +Cc: help-gnu-emacs

Am Freitag, 29. Februar 2008 03:00 schrieb Xavier Maillard:
> Hi,
>
> I am trying to find out how to extend thing at point for a
> personnal need.
>
> I have several items that are composed of a series of numbers (10
> to be precise), these items represents transaction's IDs. I want
> GNU Emacs to recognise them as this so that I can do specialised
> actions on them. All is ready *but* I do not know how to define a
> "thing" with thingatpt.el.
>
> On the same topic, I can have several transaction IDs on the same
> line, for exmple:
>
> 1234567890 0123456789 etc.
>
> I'd like to be able to navigate to the next/previous item using
> the TAB key, how would you do that ?
>
> Regards,
>
> 	Xavier

thingatpt-utils 1.9

published at

http://lists.gnu.org/archive/html/gnu-emacs-sources/2008-02/msg00000.html

provides number-atpt, forward- backward-, bounds-of etc.

All things there you may quote, doublequote, trim etc.

Should you need to select a certain range of numbers
only, I could implement that.

Andreas Röhler




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

end of thread, other threads:[~2008-02-29  7:20 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2008-02-29  2:00 thingatpt Xavier Maillard
2008-02-29  3:29 ` thingatpt Bastien Guerry
2008-02-29  3:57 ` thingatpt Drew Adams
2008-02-29  7:20 ` thingatpt Andreas Röhler

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).