unofficial mirror of help-gnu-emacs@gnu.org
 help / color / mirror / Atom feed
* Function to find outer parenthesis
@ 2006-05-08 15:23 Leo Liou
  2006-05-08 16:54 ` David Hansen
                   ` (2 more replies)
  0 siblings, 3 replies; 6+ messages in thread
From: Leo Liou @ 2006-05-08 15:23 UTC (permalink / raw)



[-- Attachment #1.1: Type: text/plain, Size: 309 bytes --]

In analyzing programs in the edit buffer, I sometimes wish I can do this
- from where the cursor is, find the first outer "{" backward.
I wonder if there is an existing function or way to do this.
Thanks :-)


Leo Liou
Not a shred of evidence exists in favor of the notion that life is
serious ...


[-- Attachment #1.2: Type: text/html, Size: 899 bytes --]

[-- Attachment #2: Type: text/plain, Size: 152 bytes --]

_______________________________________________
help-gnu-emacs mailing list
help-gnu-emacs@gnu.org
http://lists.gnu.org/mailman/listinfo/help-gnu-emacs

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

* Re: Function to find outer parenthesis
       [not found] <mailman.1576.1147101777.9609.help-gnu-emacs@gnu.org>
@ 2006-05-08 15:38 ` David Kastrup
  0 siblings, 0 replies; 6+ messages in thread
From: David Kastrup @ 2006-05-08 15:38 UTC (permalink / raw)


"Leo Liou" <leo.liou@centrify.com> writes:

> In analyzing programs in the edit buffer, I sometimes wish I can do this - from
> where the cursor is, find the first outer "{" backward.
>
> I wonder if there is an existing function or way to do this.
> Thanks :-)

<C-M-up> runs the command backward-up-list
   which is an interactive compiled Lisp function in `lisp.el'.
It is bound to <C-M-up>, C-M-u, ESC <C-up>.
(backward-up-list &optional ARG)

Move backward out of one level of parentheses.
With ARG, do this that many times.
A negative argument means move forward but still to a less deep spot.

[back]


-- 
David Kastrup, Kriemhildstr. 15, 44793 Bochum

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

* Re: Function to find outer parenthesis
  2006-05-08 15:23 Function to find outer parenthesis Leo Liou
@ 2006-05-08 16:54 ` David Hansen
  2006-05-08 18:24 ` Lou Vanek
       [not found] ` <mailman.1588.1147113013.9609.help-gnu-emacs@gnu.org>
  2 siblings, 0 replies; 6+ messages in thread
From: David Hansen @ 2006-05-08 16:54 UTC (permalink / raw)


On Mon, 8 May 2006 08:23:14 -0700 Leo Liou wrote:

> In analyzing programs in the edit buffer, I sometimes wish I can do
> this - from where the cursor is, find the first outer "{" backward.
>

Not exactly what you want but close:

,----[ C-h f c-beginning-of-defun RET ]
| c-beginning-of-defun is an interactive compiled Lisp function in `cc-cmds.el'.
| (c-beginning-of-defun &optional ARG)
| 
| Move backward to the beginning of a defun.
| Every top level declaration that contains a brace paren block is
| considered to be a defun.
| 
| With a positive argument, move backward that many defuns.  A negative
| argument -N means move forward to the Nth following beginning.  Return
| t unless search stops due to beginning or end of buffer.
| 
| Unlike the built-in `beginning-of-defun' this tries to be smarter
| about finding the char with open-parenthesis syntax that starts the
| defun.
`----

,----[ C-h f backward-up-list RET ]
| backward-up-list is an interactive compiled Lisp function in `lisp.el'.
| It is bound to <C-M-up>, C-M-u, ESC <C-up>.
| (backward-up-list &optional ARG)
| 
| Move backward out of one level of parentheses.
| With ARG, do this that many times.
| A negative argument means move forward but still to a less deep spot.
`----

David

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

* Re: Function to find outer parenthesis
  2006-05-08 15:23 Function to find outer parenthesis Leo Liou
  2006-05-08 16:54 ` David Hansen
@ 2006-05-08 18:24 ` Lou Vanek
       [not found] ` <mailman.1588.1147113013.9609.help-gnu-emacs@gnu.org>
  2 siblings, 0 replies; 6+ messages in thread
From: Lou Vanek @ 2006-05-08 18:24 UTC (permalink / raw)


This is what I use. It aint elegant, but it gets the job done.
Works in xemacs, but probably dies an agonizing death in gnu-emacs.
Argument 'tgtchar' can be specified to make it search for any character,
and the scan can go either forwards or backwards (see 'direc').


;;__________________________________________________________________________
;;;;    Move point quickly past a certain character (and, if grouped together,
;;;;    move point past entire group composed of this character.
;;;;    Typically this function is used to scan for the next group of open
;;;;    parentheses ( ?\( ) and move one character past them. This is a way of
;;;;    quickly moving 'point' either 'up' or 'down' through s-expressions.
;;;;    lv 5/5/2006
;;;;
;;;; ARGUMENTS
;;;;   direc:  1, if move forward (default)
;;;;          -1, if move backward
;;;;
;;;; tgtchar:  character that is being scanned for.
;;;;           Once this character is found, scanning continues until
;;;;           all continuous occurrances of the character have been scanned by.
;;;;           Default character: '(', which is represented in elisp as ?\(
;;;;
;;;;   start:  location in buffer where scan is to start.
;;;;           Default: current point location.
(defun scan-and-move-past (&optional direc tgtchar start)
   ;(interactive
   ; (let ((s (read-string "Direction: " nil)))
   ;   (list (string-to-number s))))

   (if (null start)
	(setf start (point)))
   (if (null direc)
	(setf direc 1))
   (if (null tgtchar)
       (setf tgtchar ?\( ))
   (let (( p (+ start direc)))
     (and
      (do ((tgt (char-after p) (char-after (incf p direc))))
		 ((or (null tgt) (char-equal tgtchar tgt )) (cond ((null tgt) nil)
						 ((< p 1) nil)
						 (t p))))
      (incf p direc)
      (do ((tgt (char-after p) (char-after (incf p direc))))
		 ((or (null tgt) (not (char-equal tgtchar tgt )))
		  (cond ((null tgt) nil)
			((< p 1) nil)
			(t p))
		  )
        )
      (goto-char p))))


(defun samp1 ()
   (interactive)
   (scan-and-move-past  1))
(defun samp-1 ()
   (interactive)
   (scan-and-move-past -1))


(define-key slime-mode-map (kbd "C-.") 'samp1)
(define-key slime-mode-map (kbd "C-,") 'samp-1)






Leo Liou wrote:

> In analyzing programs in the edit buffer, I sometimes wish I can do this 
> - from where the cursor is, find the first outer "{" backward.
> 
> I wonder if there is an existing function or way to do this.
> Thanks :-)
> 
> 
> Leo Liou
> Not a shred of evidence exists in favor of the notion that life is 
> serious ...
> 
> 
> ------------------------------------------------------------------------
> 
> _______________________________________________
> help-gnu-emacs mailing list
> help-gnu-emacs@gnu.org
> http://lists.gnu.org/mailman/listinfo/help-gnu-emacs

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

* Re: Function to find outer parenthesis
       [not found] ` <mailman.1588.1147113013.9609.help-gnu-emacs@gnu.org>
@ 2006-05-09 14:25   ` Mathias Dahl
  2006-05-09 21:21     ` Lou Vanek
  0 siblings, 1 reply; 6+ messages in thread
From: Mathias Dahl @ 2006-05-09 14:25 UTC (permalink / raw)


Lou Vanek <vanek@acd.net> writes:

> This is what I use. It aint elegant, but it gets the job done.
> Works in xemacs, but probably dies an agonizing death in gnu-emacs.

How appropriate that you post in gnu.emacs.help then... ;)

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

* Re: Function to find outer parenthesis
  2006-05-09 14:25   ` Mathias Dahl
@ 2006-05-09 21:21     ` Lou Vanek
  0 siblings, 0 replies; 6+ messages in thread
From: Lou Vanek @ 2006-05-09 21:21 UTC (permalink / raw)


Mathias Dahl wrote:

> Lou Vanek <vanek@acd.net> writes:
> 
> 
>>This is what I use. It aint elegant, but it gets the job done.
>>Works in xemacs, but probably dies an agonizing death in gnu-emacs.
> 
> 
> How appropriate that you post in gnu.emacs.help then... ;)

my news reader doesn't say this is newsgroup 'gnu.emacs.help.'
i guess i picked the wrong week to quit smoking :)

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

end of thread, other threads:[~2006-05-09 21:21 UTC | newest]

Thread overview: 6+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2006-05-08 15:23 Function to find outer parenthesis Leo Liou
2006-05-08 16:54 ` David Hansen
2006-05-08 18:24 ` Lou Vanek
     [not found] ` <mailman.1588.1147113013.9609.help-gnu-emacs@gnu.org>
2006-05-09 14:25   ` Mathias Dahl
2006-05-09 21:21     ` Lou Vanek
     [not found] <mailman.1576.1147101777.9609.help-gnu-emacs@gnu.org>
2006-05-08 15:38 ` David Kastrup

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