From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.io!.POSTED.blaine.gmane.org!not-for-mail From: Jean Louis Newsgroups: gmane.emacs.help Subject: On Bookmarks+ package Date: Thu, 16 Feb 2023 11:17:40 +0300 Message-ID: References: <972bedcc-37c9-5180-ac41-90e25d854a63@yandex.ru> <83mt5hdj28.fsf@gnu.org> Mime-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit Injection-Info: ciao.gmane.io; posting-host="blaine.gmane.org:116.202.254.214"; logging-data="40086"; mail-complaints-to="usenet@ciao.gmane.io" User-Agent: Mutt/2.2.9+54 (af2080d) (2022-11-21) Cc: GNU Emacs Help To: Drew Adams Original-X-From: help-gnu-emacs-bounces+geh-help-gnu-emacs=m.gmane-mx.org@gnu.org Thu Feb 16 09:21:10 2023 Return-path: Envelope-to: geh-help-gnu-emacs@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 1pSZVu-000AAE-ML for geh-help-gnu-emacs@m.gmane-mx.org; Thu, 16 Feb 2023 09:21:10 +0100 Original-Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1pSZVE-0005eW-1J; Thu, 16 Feb 2023 03:20:28 -0500 Original-Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1pSZVB-0005dY-5v for help-gnu-emacs@gnu.org; Thu, 16 Feb 2023 03:20:25 -0500 Original-Received: from stw1.rcdrun.com ([217.170.207.13]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1pSZV8-0005ms-GW for help-gnu-emacs@gnu.org; Thu, 16 Feb 2023 03:20:24 -0500 Original-Received: from localhost ([::ffff:154.228.232.206]) (AUTH: PLAIN admin, TLS: TLS1.3,256bits,ECDHE_RSA_AES_256_GCM_SHA384) by stw1.rcdrun.com with ESMTPSA id 0000000000103951.0000000063EDE728.0000744B; Thu, 16 Feb 2023 01:19:51 -0700 Mail-Followup-To: Drew Adams , GNU Emacs Help Content-Disposition: inline In-Reply-To: Received-SPF: pass client-ip=217.170.207.13; envelope-from=bugs@gnu.support; helo=stw1.rcdrun.com X-Spam_score_int: -18 X-Spam_score: -1.9 X-Spam_bar: - X-Spam_report: (-1.9 / 5.0 requ) BAYES_00=-1.9, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: help-gnu-emacs@gnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Users list for the GNU Emacs text editor List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: help-gnu-emacs-bounces+geh-help-gnu-emacs=m.gmane-mx.org@gnu.org Original-Sender: help-gnu-emacs-bounces+geh-help-gnu-emacs=m.gmane-mx.org@gnu.org Xref: news.gmane.io gmane.emacs.help:142766 Archived-At: I changed this to GNU Emacs Help, as not to spoil the subject of the thread. * Drew Adams [2023-02-15 19:35]: > Emacs bookmarks can "hold" anything you like. For bookmarks that > you want to persist, the "anything" needs to be persistable and > readable. I have 53111 elementary objects currently. While I call them Hyperdocuments and elementary objects, you call it bookmarks. I was thinking bookmarks in Emacs are more narrowed types of objects. And did not expand my personal use of them. Do you think that bookmarks(+) with it's implementation could scale to that number of objects without losing speed? > But typically bookmarks don't "hold" much data. Instead, they point > to data that's available somewhere else (whether it's persisted or > not at that "somewhere else"). These elementary objects my hold as much data, for example, LaTeX processing generates various files (aux log pdf tex) which I really do not like and do not want to think about it. By using LaTeX object in the database program may decide internally where is the directory, where is the file, it can generate it, and me as user do not think of it. I only edit, and generate PDF. I can share the file with other people without knowing where in file system it is. If I would keep LaTeX object or LaTeX text in bookmark, I would not know where it is stored really, it would be one file, but that file is not protected from influences from file system, and then single bookmark file would be bloated with hundreds or thousands of such objects, and external access to such objects, beyond Emacs Lisp, would not be possible. With the database it is easy, I can use external scripts to insert or share any objects. I find that you have perfected Bookmark+ and that I can re-use those ideas including your way of doing things systematically, pedantically. > There should be no inherent problem bookmarking a "non-file database > entry". You just have to decide what you need to put in the > bookmark, to later get to it (e.g. restore it). Exactly, I understand it, that is how it works here too. Though you speak in terms of programming capability, not of something that is already implemented. > You can sort, edit, tag – whatever non-invokable bookmarks, i.e., > you can use bookmarks just to organize things. (And you have > bookmarks that are invokable only in certain contexts.) Please let me know, do you dwell in Bookmarks? That is what I do. My workspace is in Hyperscope and people. I have dashboard, reminders, and often dwell, spend time in that organization, finishing a document, sharing, editing, generated mixed-object document, sharing it, like that. All time there. Do you actually use your bookmarks? How many times per day? Here is how it works on my side, there are 215 elementary objects from last week. In a way they are similar to bookmarks, though I did not put much thinking into it. Is that how you spend time as well in your bookmarks? ┌────────────────────────────┬───────┐ │ Objects for last week │ Count │ ├────────────────────────────┼───────┤ │ Hyperscope, new objects │ 215 │ │ Hyperscope, objects sent │ 21 │ │ Hyperscope objects tagged │ 268 │ │ Hyperscope, people related │ 25 │ │ Messages Sent │ 486 │ │ New People │ 35 │ │ People, tagged │ 268 │ └────────────────────────────┴───────┘ > > I have it same, I can combine, or find interesection of elementary > > objects, I can mark what I need or take all list of visible ones and > > make new object contaning all those. > > Bookmark tags are a good way to categorize things > and access them by combinations of such categories. > > https://www.emacswiki.org/emacs/BookmarkPlus#BookmarkTags I understand tags, and I use them too, though in Hyperscope system. Each elementary object may be tagged. There are types of tags in my system, so there may be "subject tag" like "Computer tag", where meanining need not be same to other tag of same name. By using database, there is privilege that tags may be renamed, edited, described, they are objects itself, not only a word. ,---- | * You can tag bookmarks, a la del.icio.us. In effect, bookmark tags | define bookmark sets. A bookmark can have any number of tags, and | multiple bookmarks can have the same tag. You can sort, show/hide, or | mark bookmarks based on their tags. `---- That I understand. ,---- | * Bookmark+ tags can be more than just names. They can be full-fledged | user-defined attributes, with EmacsLisp objects as their values. `---- I understand that next level. > Org mode, for example, lets you embed different kinds of things in > an Org buffer/file. You can tag them, link them, annotate them, and > act on them in any number of ways. A big difference here is that > the info/data of the things, and the tags and links and > annotations... are in the Org file, along with the other things and > any "main" text. Ok, that gives me idea that your bookmark+ bookmarks can also be tasks, notes, right? Then by using tags, or other associations, you could reconstruct whole document, right? > That has some advantages, no doubt. But storing annotations, links, > tags, actions, other metadata, ... separately (e.g. in a bookmark > file) also has (different) advantages. I find that later shall be on top level, on highest level, and former, part of the later. - instead of having Org as file, I find it more convenient, having Org as elementary object of a set - instead of having too many things in single Org object, I find it more convenient having separate objects and then combining them in a mixed-object document - this way of thinking, and I am using it, also opens the opportunity of combining any markups together in a mixed-object document More practical examples: - task is written in Org format, 1 - but other task is written in Asciidoctor format, 2 - one is in txt2tags, 3 - there is list of equipment required for industry, 4 - there is HTML page, 5 - there is PDF to be shared with assigned people, 6 Then list of equipment (4) may be included in HTML page (5), but also reused in the PDF (6) produced with primary markup being let us say LaTeX, which contains tasks 1, 2 and 3, which will be all converted to LaTeX. Many systems like Org and LaTeX already have features to include other files, just that such are not integrated or rather difficult to implement. For example, I cannot just list multiple Org files over different directories in file system on single screen, mark intersection of them and produce mixed-object document containing those files. I would need to do it pretty manually and include files one by one in Org. With bookmarks, or elementary objects, I could use tags, or various intersections, mark some objects and with single key press produce the mixed-object document. > The implementation of bookmarks, as text files of Lisp code, is fine > for many use cases. It fits the use of any number of bookmark > files, each of which is not gigantic. Could they really work with 50000 objects? Did you ever test the speed of accessing, using them? > But yes, Someone (TM), sometime, will hopefully do things such as: > > 1. Allow (also) for binary ("compiled") bookmark > formats (and thus files). Is that for reasons of speed? Once below subject 2 is solved, speed is also solved. > 2. Allow storing and accessing bookmarks using > (multiple) databases. By using PostgreSQL network database that is easy without problems. Hyperscope can work with multiple databases. > > Even then, objects are saved in the database, and related to > > planning, and represent themselves notes, tasks, not just > > bookmarks pointing to notes and tasks, they are related to people, > > can be shared and so I canot reuse your library, apart from > > reusing ideas, food for thought. > > Not clear to me. Why would notes, etc., whether related to people > or not, be something you can't leverage bookmarks for? I don't > doubt you're saying something true, but it's not clear to me what it > is. I asked you if that following is also possible with Bookmarks Plus: - create bookmark, let us say "ABC" - edit ABC as text, representing note, task I understand that it can be done programmatically in future, but is it already there maybe? I know annotations are there, so in the sense it is very similar to my use cases. > > > Bookmark+ adds over 70 types of bookmark. (You can see what they > > > all are by invoking function ‘bmkp-types-alist’.) > > > > But that does not seem to be the function, it is alist, but I do > > not see 70 types. > > No, it's a function, not a variable. The function returns an alist > of known types (their names) and the associated history list (for > completion). It's a function because which predefined types exist > depends on your environment, e.g., on whether you have this or that > other library, and on what Emacs release you have. I cannot find it: -*- mode: grep; default-directory: "~/.emacs.d/Drew Adams/" -*- Grep started at Thu Feb 16 11:11:19 grep --color=auto -nH --null -e "defun bmkp-types-alist" *.el Grep finished with no matches found at Thu Feb 16 11:11:20 When I load "bookmark+" I cannot find that function. > What's important is that it's easy for you to define new types. The > predefined types are usable OOTB, for things like jumping to a > bookmark of a given type, or choosing a navigation list of bookmarks > of a given type. > > FWIW, (bmkp-types-alist) shows this, for me: (featurep 'bookmark+) t (bmkp-types-alist) Debugger entered--Lisp error: (void-function bmkp-types-alist) (bmkp-types-alist) (progn (bmkp-types-alist)) I cannot find the function. > > Can you save window configuration over session? I would like to do > > that. That is not same as desktop which is slow and cannot narrow to > > window configuration. > > That's one of my wishes too. > > Last time I checked, window configs are not Lisp > readable. I tried to get Emacs (Juanma, who did > the desktop restore stuff) to raise window and > frame configs to the level of Lisp-readable > thingies (so persistable) - but to no avail. > > See, e.g., bug #14964 (also #10348). > > https://debbugs.gnu.org/cgi/bugreport.cgi?bug=14964#11 Pity that data structure is not exposed to Emacs Lisp. -- Jean Take action in Free Software Foundation campaigns: https://www.fsf.org/campaigns In support of Richard M. Stallman https://stallmansupport.org/