From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.org!not-for-mail From: "Thomas" Newsgroups: gmane.emacs.help Subject: Re: vim's jumplist equivalent in emacs? Date: 12 Dec 2006 16:50:15 -0800 Organization: http://groups.google.com Message-ID: <1165971015.421504.100190@73g2000cwn.googlegroups.com> References: <1165481183.610837.121580@79g2000cws.googlegroups.com> <1165496555.501169.277080@80g2000cwy.googlegroups.com> <1165902863.411164.54180@l12g2000cwl.googlegroups.com> <1165949023.276738.314350@n67g2000cwd.googlegroups.com> NNTP-Posting-Host: dough.gmane.org Mime-Version: 1.0 Content-Type: text/plain; charset="euc-kr" Content-Transfer-Encoding: quoted-printable X-Trace: sea.gmane.org 1165974029 3268 80.91.229.10 (13 Dec 2006 01:40:29 GMT) X-Complaints-To: usenet@sea.gmane.org NNTP-Posting-Date: Wed, 13 Dec 2006 01:40:29 +0000 (UTC) Original-X-From: help-gnu-emacs-bounces+geh-help-gnu-emacs=m.gmane.org@gnu.org Wed Dec 13 02:40:27 2006 Return-path: Envelope-to: geh-help-gnu-emacs@m.gmane.org Original-Received: from lists.gnu.org ([199.232.76.165]) by dough.gmane.org with esmtp (Exim 4.50) id 1GuJ6c-0003lu-5l for geh-help-gnu-emacs@m.gmane.org; Wed, 13 Dec 2006 02:40:22 +0100 Original-Received: from localhost ([127.0.0.1] helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1GuJ6b-0003gE-Ng for geh-help-gnu-emacs@m.gmane.org; Tue, 12 Dec 2006 20:40:21 -0500 Original-Path: shelby.stanford.edu!newsfeed.stanford.edu!postnews.google.com!73g2000cwn.googlegroups.com!not-for-mail Original-Newsgroups: gnu.emacs.help Original-Lines: 83 Original-NNTP-Posting-Host: 210.94.41.89 Original-X-Trace: posting.google.com 1165971021 28770 127.0.0.1 (13 Dec 2006 00:50:21 GMT) Original-X-Complaints-To: groups-abuse@google.com Original-NNTP-Posting-Date: Wed, 13 Dec 2006 00:50:21 +0000 (UTC) In-Reply-To: <1165949023.276738.314350@n67g2000cwd.googlegroups.com> User-Agent: G2/1.0 X-HTTP-UserAgent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.1.4322; .NET CLR 2.0.50727),gzip(gfe),gzip(gfe) X-HTTP-Via: 1.0 Gumi_proxy4:8080 (DataReactor/4.0.6) Complaints-To: groups-abuse@google.com Injection-Info: 73g2000cwn.googlegroups.com; posting-host=210.94.41.89; posting-account=Vpsi-AwAAABHyexFbyHS9RLShYFKQnjI Original-Xref: shelby.stanford.edu gnu.emacs.help:143885 Original-To: help-gnu-emacs@gnu.org X-BeenThere: help-gnu-emacs@gnu.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: Users list for the GNU Emacs text editor List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Original-Sender: help-gnu-emacs-bounces+geh-help-gnu-emacs=m.gmane.org@gnu.org Errors-To: help-gnu-emacs-bounces+geh-help-gnu-emacs=m.gmane.org@gnu.org Xref: news.gmane.org gmane.emacs.help:39490 Archived-At: Hello, Robert. Robert Thorpe =C0=DB=BC=BA: > Thomas wrote: > > Thank you all for the answers about using marks. > > But I thought they lack jumping forward > > How do you "jump forward". You can't really jump to something you have > not yet visited. > I mean I can jump forward N times after I have jump backward N times before. > > and I decided to start my first > > > > emacs lisp code as follows. (I mapped C-p, C-o, C-l to the functions) I > > I find I use some of those, such as C-l quite a lot, you might not > of-course. > > Maybe try mapping to places in the Emacs keymap that Emacs does not > map. For example both C-digit and M-digit produce a prefix argument > corresponding to whatever the digit happens to be. So C-8 C-p means > move 8 lines previous. You don't need both, so why not use one of them > for your own personal keys. Or use the function keys. > > > think this code is really ugly and any comments are welcome. And can > > anyone please advice me how to make 'push-place-uniq' automatically > > called every time when I execute some kind of jump actions like > > searching texts, opening a file or searching tags etc? > > Jump actions are not treated uniformally in Emacs, except in that they > set mark as we discussed earlier. What you could do is look in the > mark ring. As far as I have understood, a mark ring records each marks in a buffer and a global mark ring records a mark in each buffer but I intended a global list that records each mark of each buffer. > > > (defvar backward-jump-list nil) > > (defvar forward-jump-list nil) > > > > > > (setq backward-jump-list nil) > > (setq forward-jump-list nil) > > > > > > (defmacro push-place-uniq (place jump-list) > > ;; if the place is already at the head of jump-list, ignore it > > ;; otherwise add it at the head of jump-list > > (list 'if > > (list 'equal place (list 'car jump-list)) > > t > > (list 'push place jump-list))) > > You could do that a little more tidily with quasiquotation. See C-h f > backquote > > > > Nothing in your code screams at me as though it's wrong, but it seems > to replicate the job of the mark rings. I think my code could be more compact if I remove unnecessary copies of similar functions and abandon the habit of C-like programming. I have to study more :-) > > I think I see your problem though. It seems the behaviour of C-u C-SPC > is quite strange. > Maybe what you may want is something like the cycle function in this > mode... > http://www.emacswiki.org/cgi-bin/wiki/doremi-cmd.el > doremi-cmd is close to what I wanted though it is not the 'global list' that I mentioned above. Thank you. > There may be something better though, I'll think about it.