Title: RE: (emacs newbie) Modifying JDE

here's a little more robust version i've
been working on, which allows you to just
specify a list in a variable which contains the
patterns to ignore:


;; Setup the next buffer function
(defvar next-buffer-ignore-buffer-patterns
      (list* "\\*.*Minibuf.*\\*" "\\*.*Echo Area.*\\*" "\\*.*Messages.*\\*")
      "Ignore strings for the next-buffer function.  Any buffer which matches
one of these patterns will not be considered when cycling through the buffers
using the next-buffer function"
      )

(defun match-patterns(buf-name &rest patterns)
  "Match a particular string against a list of patterns, and see if
 any one of them matches"
  (if (listp (car patterns))
      (setq patterns (car patterns)))

  (let* ((matched nil))
    (while (and (not matched)
                (not (null patterns)))
      (let* ((islast (not (listp patterns)))
             (pat (if islast patterns (car patterns))))
        (if (string-match pat buf-name)
            (setq matched t)
             (setq patterns (if islast nil (cdr patterns))))
        )
      )
    matched
    )
  )

;; Find the next applicable buffer to switch to
(defun get-next-buffer(cbuf)
  "This function will return the next buffer which we should switch
to which does not match one of the ignore patterns in
next-buffer-ignore-buffer-patterns"
  (let*
      ((bufs (buffer-list))
       (bufslen (length bufs))
       (pos (position cbuf bufs)))
    (if (eq pos 0)
        (setq pos (- bufslen 1))
        (setq pos (- pos 1)))
   
    (setq cbuf (nth pos bufs))

    (if (match-patterns (buffer-name cbuf)
                        next-buffer-ignore-buffer-patterns)
        (get-next-buffer cbuf)
      cbuf))
  )

;; Switch to the next buffer
(defun next-buffer()
  "Switch to the next buffer in the buffer list which does not match
one of the patterns in next-buffer-ignore-buffer-patterns cons list"
  (interactive)
  (let*
      ((cbuf (current-buffer)))

    (setq cbuf (get-next-buffer cbuf))
    (switch-to-buffer cbuf)
    )
  )

;; Set the next-buffer key
(global-set-key [C-tab] 'next-buffer)

-----Original Message-----
From: Chris [mailto:[EMAIL PROTECTED]]
Sent: Tuesday, December 31, 2002 3:04 PM
To: [EMAIL PROTECTED]
Subject: RE: (emacs newbie) Modifying JDE


Thank you Matthew! I'm right now reading the online ELisp manual, and after a bit of that I'll hit your code. But I really appreciate it -- not just for what it will let me do, but for what I can learn from it.

Thanks again!
Chris

Reply via email to