From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.io!.POSTED.blaine.gmane.org!not-for-mail From: Drew Adams Newsgroups: gmane.emacs.devel Subject: RE: [External] : [emacs bookmark.el] Sorting by last set Date: Wed, 25 May 2022 05:05:31 +0000 Message-ID: References: <877d6b88pz.fsf@elite.giraud> <875ylv6j58.fsf@elite.giraud> <87o7zngcgf.fsf@gnus.org> <87k0aaz6u9.fsf@red-bean.com> Mime-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: quoted-printable Injection-Info: ciao.gmane.io; posting-host="blaine.gmane.org:116.202.254.214"; logging-data="22943"; mail-complaints-to="usenet@ciao.gmane.io" Cc: Manuel Giraud , emacs-devel To: Karl Fogel , Lars Ingebrigtsen Original-X-From: emacs-devel-bounces+ged-emacs-devel=m.gmane-mx.org@gnu.org Wed May 25 07:06:58 2022 Return-path: Envelope-to: ged-emacs-devel@m.gmane-mx.org Original-Received: from lists.gnu.org ([209.51.188.17]) by ciao.gmane.io with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1ntjEX-0005mL-4A for ged-emacs-devel@m.gmane-mx.org; Wed, 25 May 2022 07:06:57 +0200 Original-Received: from localhost ([::1]:37534 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1ntjEV-0007Xv-Gp for ged-emacs-devel@m.gmane-mx.org; Wed, 25 May 2022 01:06:55 -0400 Original-Received: from eggs.gnu.org ([2001:470:142:3::10]:46300) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1ntjDM-0006pa-Df for emacs-devel@gnu.org; Wed, 25 May 2022 01:05:44 -0400 Original-Received: from mx0a-00069f02.pphosted.com ([205.220.165.32]:54952) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1ntjDJ-0007gP-9H for emacs-devel@gnu.org; Wed, 25 May 2022 01:05:43 -0400 Original-Received: from pps.filterd (m0246627.ppops.net [127.0.0.1]) by mx0b-00069f02.pphosted.com (8.17.1.5/8.17.1.5) with ESMTP id 24P0HFfM023358; Wed, 25 May 2022 05:05:36 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oracle.com; h=from : to : cc : subject : date : message-id : references : in-reply-to : content-type : content-transfer-encoding : mime-version; s=corp-2021-07-09; bh=KGvaQgYvXuFIHb6mFlLW4ag/GTXbVcbWky0sX3KPuuM=; b=fqltXnJWYGZyIo7/pTiVCltjCNMLtU4jUzrJGvergmoePBcZesPzXzdOKWLO0akd286L ufYiUKmWcBarrRB72q4DfCBMxi9s4TQFPB8JBPgceVSusKkhM9LEWDBEoIVTgGhCJ9vl nCtLJj1Ba4ghdVYiUoW4aAVrbiLzKHhojYD276CD110DIva7WdXDu2Mk+tuM9qCls3P7 EYF02+sgXSQCwlLBKpq21EJglSEMuT9jaiMh3KZXf07rXkJKo6CUNxSUVeGA3cVFkwKd 6GqoElhUGBYsE4hiOEeN0l3VMh1F6oRiN1fenQrCmoANSZ3TWV0ft6muPgla2iTS80vM 3g== Original-Received: from iadpaimrmta03.imrmtpd1.prodappiadaev1.oraclevcn.com (iadpaimrmta03.appoci.oracle.com [130.35.103.27]) by mx0b-00069f02.pphosted.com (PPS) with ESMTPS id 3g93tbs2mn-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Wed, 25 May 2022 05:05:35 +0000 Original-Received: from pps.filterd (iadpaimrmta03.imrmtpd1.prodappiadaev1.oraclevcn.com [127.0.0.1]) by iadpaimrmta03.imrmtpd1.prodappiadaev1.oraclevcn.com (8.16.1.2/8.16.1.2) with SMTP id 24P55NLG008941; Wed, 25 May 2022 05:05:34 GMT Original-Received: from nam11-dm6-obe.outbound.protection.outlook.com (mail-dm6nam11lp2169.outbound.protection.outlook.com [104.47.57.169]) by iadpaimrmta03.imrmtpd1.prodappiadaev1.oraclevcn.com with ESMTP id 3g93wq4jcg-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Wed, 25 May 2022 05:05:34 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=X7tpaRblv7xCToUxbJ7gba5Ma15WqYLeRTImIvebOxDEFX72GPj9hv0oKepplagD5QxfViBJOUX7DC5+bKgWrdYXz3M2rhYFHgxEqBPkzCoJc2XYBP99n39f4vFJ+mYxGkVVSzkbC01gZ7GSDNAbZIr/WKUvmvLHpPS2BHlyiu9UkPrLcmBvpwHjqnY/jotO9CCFi4OXVxvtbBbk8H5PZCpinEmhx3qSvGoQaWiTi6ePp3R6aIcHrmggfb8jRuji07RGUaubELBcWwfBhVea9RzYkjrY6y60Cd955a17s2KJ2nXxxCf/wygCvVmZiORSrpT2zhgOpPqFebyKv4NzLw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=KGvaQgYvXuFIHb6mFlLW4ag/GTXbVcbWky0sX3KPuuM=; b=iSO5RDI0OaooHtS42dImpZqU733ngOibCqVD/reRxkb38bzERA4RcklLS9XOStDwIvHA9m3jcZS1Fw3gFM5yzlZIHm9AgS+Tn1EZA6MirpkRJd0jrOUvr6u3eH4Yx5tpgvffovkoXlpkqno0nQXafaS6/brhxlNrS4Y7YAPenvvXshHH870lSOX4maJtSA0WBCHqD9x0ZVbV0tSZAlKEr5iG01CM3dB8q6geunBNB7+k1aWWuDBaZlTJ387V+oaDC3618I4vRjU7x6y7m/Ik4O5U2CTGe5/fTU1PgyqKEMN70wasssOToHHSMvb5ZxWsOa1C2Z2y3iktqC4eJ4iSag== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=oracle.com; dmarc=pass action=none header.from=oracle.com; dkim=pass header.d=oracle.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oracle.onmicrosoft.com; s=selector2-oracle-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=KGvaQgYvXuFIHb6mFlLW4ag/GTXbVcbWky0sX3KPuuM=; b=szWVJS/gSmvwFq7/jdmkXESZJcsQs6NoGTn00Zuoo1l4Wi17/7EaBFYwht8q02b1o39sjpYu7VwVzZpnO7uPsTBY/yvhIHLChjQgJe2oof1+JghAzoTHPS0RVdifHKLDWd71zg7Hbq+7fUSy+46fpFiMTY+ea4aIdJAFmezeBj4= Original-Received: from SJ0PR10MB5488.namprd10.prod.outlook.com (2603:10b6:a03:37e::19) by DM6PR10MB3339.namprd10.prod.outlook.com (2603:10b6:5:1ae::27) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5273.14; Wed, 25 May 2022 05:05:32 +0000 Original-Received: from SJ0PR10MB5488.namprd10.prod.outlook.com ([fe80::31c9:b8b8:b561:e53b]) by SJ0PR10MB5488.namprd10.prod.outlook.com ([fe80::31c9:b8b8:b561:e53b%9]) with mapi id 15.20.5293.013; Wed, 25 May 2022 05:05:31 +0000 Thread-Topic: [External] : [emacs bookmark.el] Sorting by last set Thread-Index: AQHYb96+xZV9oZWcZkuzIrYtcV/2mK0u8K4g In-Reply-To: <87k0aaz6u9.fsf@red-bean.com> Accept-Language: en-US Content-Language: en-US x-ms-publictraffictype: Email x-ms-office365-filtering-correlation-id: a7115c36-c518-4996-90e5-08da3e0c3165 x-ms-traffictypediagnostic: DM6PR10MB3339:EE_ x-microsoft-antispam-prvs: x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: carCjMgnlaaraMipDKaGJuO74ZqboVHVIvqqSnxk2TLRf6BHa1tpVkpLo+VktUsuBGsp1jGLqiDuRQW6N+7mYEBBwrAnrwfzu4KClASWbf8FI/u+PoG+arag4xA6bRQP1qRMPVkc39EZBlaWhXJGMTitDu99yZZ84TlKqiVPiip4tR920lGawJRPmCS8V1xuwN5dzvOcZGkCCmq2qNeuTlQjCQbf3/riP6osCmVLSo2IFOU6OJjF4nOgHthirvpPGz9ndXcwyf6CfoiHUg8jkh+NFKUwsJQPPh8/NRjeBI6N6JGnG9a4dsOhQT+RDjogj2gmouxIDKDWkvgiAqKKtowU51Vo3PUisTRDudT0FO42ldvajx+b6Zg1Ujkqf3pCDrxQ/PnNXxteBsoUqXbaqwV5DAPJqwA2shehchWh0e+ez1Jb0Sd1gL0F89ZEDehzQT3zDb6aZarAQwZxeBHCLo6nhDBWTZ9JkgadBsZOZELXCFByYpypCdhYvv3RA8Y6P8diIrk6/mF3NorJQBuF08winYfzyOHwQs3mBfDunTXOyL/RLwLJXxJGYWvQyH7eIby3LuGherBk/iCOoIRw1k4wW/fuXfWFF7Mf/beaTnAqgvJEMvTeX8Lt9prgXXXaZ0hSX4tDJc1XYvLPt5GttWi5njpWkqwL8qR9uO3STDemGkB/4gEx8kfr3YUjDMXRKxD2PtIcFLa1NCBQp5g/WQ== x-forefront-antispam-report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:SJ0PR10MB5488.namprd10.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230001)(366004)(54906003)(83380400001)(86362001)(316002)(9686003)(26005)(66476007)(71200400001)(186003)(110136005)(66556008)(6506007)(38100700002)(8936002)(64756008)(7696005)(66946007)(76116006)(8676002)(4326008)(2906002)(44832011)(5660300002)(55016003)(33656002)(52536014)(122000001)(66446008)(508600001)(38070700005); DIR:OUT; SFP:1101; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?us-ascii?Q?mWS/gvx88BPeyU1mRnzjPCzjWTUS6p5HYtidbFYgjRdplREC25E8jVLGMMzS?= =?us-ascii?Q?zTZ9BW6gU7aHDlZW7tl2YQ2jCbyT9Ol9+JJCXJURz3ThQRm/17jEa2Ia10DX?= =?us-ascii?Q?JXtkB6edcNUA+eLSjd1ZVc3uA1IjbvBKayHXv/iLEf3UenEpLQRRg8FVdBCZ?= =?us-ascii?Q?bMSa4Tb80p20obpyRy7YIYHyZUdb51gNIVJQEjy6KKBJOIppo5bhGZS7eRM8?= =?us-ascii?Q?9MCWWXo1nqcDG61KfiDxufSZ6Pr9ZTxKc1j33DtpwJznqG8YGLyv0BtHZB+2?= =?us-ascii?Q?nPOD28PNfmxg/YlyaSwY+AtgKeEpiGeUcZxPLHaUvd6h+mrLd/PTf58iFulC?= =?us-ascii?Q?tOIg3vBqOztITS3dTWuR3eMwhJS2jqN0NnkUpr1FhdaMtPhal/R393zFVjcI?= =?us-ascii?Q?O32ol0njzcxeH8cqs/X29lSLXLREXRUBleylZ00ktvqZVAdIXqpmwtVAy+DM?= =?us-ascii?Q?Quni6/D0UVfaCj4RdZgpAlPehMvBI3Vd3s1kUuUFs3NNUFBf+dxrNpVV5F6f?= =?us-ascii?Q?XKlfZowbzCcB7EtIv/T+Z+ySJG7NdFyO3sSJV/m2e8mABq9FmgbZ6IZj3317?= =?us-ascii?Q?4KgWuNHAX+gY6TTuh0oa3qx9a53FMKJq1LjYSsJsGzJ5ICBrR2XniySHkg4M?= =?us-ascii?Q?PO X-OriginatorOrg: oracle.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: SJ0PR10MB5488.namprd10.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: a7115c36-c518-4996-90e5-08da3e0c3165 X-MS-Exchange-CrossTenant-originalarrivaltime: 25 May 2022 05:05:31.5303 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 4e2c6054-71cb-48f1-bd6c-3a9705aca71b X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: O7F+Wy9WFPbmcFL7Jfu6jRA2BRC24VnIpdRLzZgYINgQRlxidQcQmOf4SnTdiOWE5qRZBPIwTQpj4D/Cz2VjlQ== X-MS-Exchange-Transport-CrossTenantHeadersStamped: DM6PR10MB3339 X-Proofpoint-Virus-Version: vendor=fsecure engine=2.50.10434:6.0.486, 18.0.874 definitions=2022-05-25_01:2022-05-23, 2022-05-25 signatures=0 X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 bulkscore=0 suspectscore=0 malwarescore=0 phishscore=0 mlxlogscore=999 adultscore=0 mlxscore=0 spamscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2204290000 definitions=main-2205250027 X-Proofpoint-GUID: VFJHnLKSDC6p9hRFpDFxebaGRMz_942O X-Proofpoint-ORIG-GUID: VFJHnLKSDC6p9hRFpDFxebaGRMz_942O Received-SPF: pass client-ip=205.220.165.32; envelope-from=drew.adams@oracle.com; helo=mx0a-00069f02.pphosted.com X-Spam_score_int: -27 X-Spam_score: -2.8 X-Spam_bar: -- X-Spam_report: (-2.8 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_LOW=-0.7, SPF_HELO_NONE=0.001, SPF_PASS=-0.001, T_SCC_BODY_TEXT_LINE=-0.01 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: emacs-devel-bounces+ged-emacs-devel=m.gmane-mx.org@gnu.org Original-Sender: "Emacs-devel" Xref: news.gmane.io gmane.emacs.devel:290234 Archived-At: > >> Yes I've seen this comment in bookmark.el. It seems that it > >> should not be taken lightly. So this rules out adding a > >> "modified date" field (my 2nd option) but maybe my first > >> option (sorting 'bookmark-alist' in last modified order by=20 > >> default) is still possible. > > > >Extending the bookmark format (by adding more fields) is totally > >possible. > > > >I think sorting by last set sounds like a nice feature -- patches > >welcome. >=20 > I agree. Extending the format to add fields like 'created-date' > and/or 'last-modified' date seems fine to me, to support features > like this. >=20 > In fact, when I was reviewing and applying Manuel's recent changes > to toggle sorting in the bookmark menu buffer, I was already > thinking that this would all be easier if the bookmark itself > carried its creation date. >=20 > Drew, correct me if my guess is wrong, but does your objection > (earlier in this thread) to extending the bookmark file format > stem from the fact that long ago there was at least one -- maybe > more? -- format revision that was not done in a compatible way? > (I think it may have been my fault, too, but it's too long ago for > me to remember clearly.) >=20 > Anyway, we fixed things and nowadays the format is quite easily > extensible in a backwards-compatible way. The PARAM-ALIST > component of each bookmark object is just an alist with a known > set key/value pairs. If we add a new pair, old versions of > bookmark.el will just ignore it while new versions will make use > of it. >=20 > If you have some other reason for objecting to extending the > format, though, please say. Anyone (app, user), anywhere, can of course add any fields, for any kind of bookmark. I'd rather that nothing depend on the existence of some new "standard" fields. Adding "standard" fields is likely to result in such dependencies or expectations. That's my concern. I don't feel strongly about this. But in general, I expect that the fewer "standard" fields vanilla Emacs adds, the less chance of breakage. ___ That said, nothing I say will change anything, I expect. And if such a dependency breaks something then I'll just have to deal with that when it happens. ___ As for this particular proposed addition: I haven't seen the need for a last-modified field, and I've never had anyone ask for it or point out its utility. I don't recall whether I at one point considered it. But yes, such a field is not uncommon for metadata of various sorts (e.g. file attributes). But was there any particular use case mentioned? Was it requested to solve some problem? If so, I missed that. The request seemed to be only to be able to sort by such a field. How about a reason why such a sort is requested/useful? I'm not claiming it can't be useful; I'm asking what its use is. I can imagine it might sometime be useful to know when a particular bookmark was last modified. But that would likely be for some forensic reason (for me): when/why/how was that bookmark last changed? A bit like checking a history when looking for the cause of a problem. But sorting all bookmarks by last-modified time? How is that useful? (Again, just curious; not claiming it's not useful.) ___ What I do know is useful, however, is the time (date) of last visit/access (as well as time of creation, of course). That's related to the number of times a bookmark has been visited (accessed). Sorting by visit time is like seeing a recentf list. Sorting by number of visits is like=20 seeing your favorites list. I often want to sort these ways. ___ Now you may say that `ls' sorts by last mod time as one of its main sort orders. And I agree that that order is very useful. I'm not (yet) convinced the same is true for bookmarks, but I guess there's some similarity. (Even for files, I think that most of my uses of `ls' sorting by date would be handled just as well if the date were last access instead of last mod.) ___ Bookmark+ has a `created' field, for the time (date) of creation. I'd of course prefer, if you add this, that you use the same field name: `created' instead of `created-date'. (One less thing to work around.) ___ Bookmark+'s version of `C-h v bookmark-alist': Current list of bookmarks (bookmark records). Bookmark functions update the value automatically. You probably do not want to change the value yourself. The value is an alist with entries of the form (BOOKMARK-NAME . PARAM-ALIST) or the deprecated form (BOOKMARK-NAME PARAM-ALIST). BOOKMARK-NAME is the name you gave to the bookmark when creating it. PARAM-ALIST is an alist of bookmark data. The order of the entries in PARAM-ALIST is not important. The possible entries are described below. Bookmarks created using vanilla Emacs (`bookmark.el'): (filename . FILENAME) (location . LOCATION) (position . POS) (front-context-string . STR-AFTER-POS) (rear-context-string . STR-BEFORE-POS) (handler . HANDLER) (annotation . ANNOTATION) FILENAME names the bookmarked file. LOCATION names the bookmarked file, URL, or other place (Emacs 23+). FILENAME or LOCATION is what is shown in the bookmark list (`C-x r l') when you use `M-t'. POS is the bookmarked buffer position (position in the file). STR-AFTER-POS is buffer text that immediately follows POS. STR-BEFORE-POS is buffer text that immediately precedes POS. ANNOTATION is a string that you can provide to identify the bookmark. See options `bookmark-use-annotations' and `bookmark-automatically-show-annotations'. HANDLER is a function that provides the bookmark-jump behavior for a specific kind of bookmark. This is the case for Info bookmarks, for instance (starting with Emacs 23). Bookmarks created using Bookmark+ are the same as for vanilla Emacs, except for the following differences. 1. Time of creation is recorded when you create a new bookmark: (created . CREATION-TIME) CREATION-TIME is an Emacs time representation, returned by function `current-time'. 2. Visit information is recorded, using entries `visits' and `time': (visits . NUMBER-OF-VISITS) (time . TIME-LAST-VISITED) NUMBER-OF-VISITS is a whole-number counter. TIME-LAST-VISITED is an Emacs time representation, returned by `current-time'. 3. The buffer name is recorded, using entry `buffer-name'. It need not be associated with a file. 4. If no file is associated with the bookmark, then FILENAME is ` - no file -'. 5. Bookmarks can be tagged by users. The tag information is recorded using entry `tags': (tags . TAGS-ALIST) TAGS-ALIST is an alist with string keys. 6. A bookmark can be simply a wrapper for a file, in which case it has entry `file-handler' instead of `handler'. When you "jump" to such a bookmark, the `file-handler' function or shell-command is applied to the `filename' entry. Any `handler' entry present is ignored, as are entries such as `position'. It is only the target file that is important. 7. Bookmarks can have individual highlighting, provided by users. This overrides any default highlighting. (lighting . HIGHLIGHTING) HIGHLIGHTING is a property list that contain any of these keyword pairs: `:style' - Highlighting style. Cdrs of `bmkp-light-styles-alist' entries are the possible values. `:face' - Highlighting face, a symbol. `:when' - A sexp to be evaluated. Return value of `:no-light' means do not highlight. 8. The following additional entries are used to record region information. When a region is bookmarked, POS represents the region start position. (end-position . END-POS) (front-context-region-string . STR-BEFORE-END-POS) (rear-context-region-string . STR-AFTER-END-POS)) END-POS is the region end position. STR-BEFORE-END-POS is buffer text that precedes END-POS. STR-AFTER-END-POS is buffer text that follows END-POS. The two context region strings are non-nil only when a region is bookmarked. NOTE: The relative locations of `front-context-region-string' and `rear-context-region-string' are reversed from those of `front-context-string' and `rear-context-string'. For example, `front-context-string' is the text that *follows* `position', but `front-context-region-string' *precedes* `end-position'. 9. The following additional entries are used for a Dired bookmark. (dired-marked . MARKED-FILES) (dired-subdirs . INSERTED-SUBDIRS) (dired-hidden-dirs . HIDDEN-SUBDIRS) (dired-switches . SWITCHES) MARKED-FILES is the list of files that were marked `*'. INSERTED-SUBDIRS is the list of subdirectores that were inserted. HIDDEN-SUBDIRS is the list of inserted subdirs that were hidden. SWITCHES is the string of `dired-listing-switches'. 10. The following additional entries are used for a Gnus bookmark. (group . GNUS-GROUP-NAME) (article . GNUS-ARTICLE-NUMBER) (message-id . GNUS-MESSAGE-ID) GNUS-GROUP-NAME is the name of a Gnus group. GNUS-ARTICLE-NUMBER is the number of a Gnus article. GNUS-MESSAGE-ID is the identifier of a Gnus message. 11. For a URL bookmark, FILENAME or LOCATION is a URL. 12. A sequence bookmark has this additional entry: (sequence . COMPONENT-BOOKMARKS) COMPONENT-BOOKMARKS is the list of component bookmark names. 13. A function bookmark has this additional entry, which records the FUNCTION: (function . FUNCTION) 14. A bookmark-list bookmark has this additional entry, which records the state of buffer `*Bookmark List*' at the time it is created: (bookmark-list . STATE) STATE records the sort order, filter function, omit list, and title. ___ HTH.