emacs-humanities
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [emacs-humanities] [External] : Re: Emacs "Projects" management?


From: Drew Adams
Subject: Re: [emacs-humanities] [External] : Re: Emacs "Projects" management?
Date: Sat, 15 Oct 2022 18:46:46 +0000

Coming late to this request...

Another Emacs tool you might find useful in creating
and supporting projects is Emacs bookmarking.

Not that there's any predefined bookmarking feature
for project creation, maintenance, etc.  But that a
bookmark is a persistent do-anything object, which
typically records one or more "locations" to access
in one or more ways.

Library Bookmark+ provides a number of bookmarking
features that might be able to help in this regard.

In particular, it gives you several ways to organize
things - things such as the objects you define as
belonging to a "project".

Files and directories can be such things. So can
locations in files.  So can sets of files or sets
of such locations.  So can such sets plus info about
the objects or the set (e.g. object attributes, set
attributes).

It's up to you to choose how to define/organize a
"project" using such features, depending on what you
want/envision.  But none of that is complex, and in
general it requires no use of Elisp.

Some _ways to define sets_ of things using bookmarks:

* Dired buffers (sets of files, their Dired markings,
  sort order, visibility, etc.).

  Dired listings can include files & directories from
  anywhere - any drives, any file systems, anywhere
  (remote or local).  That is, listings need not be
  the result of using `ls' - they can be arbitrary
  sets of files and dirs.

* Bookmark files (persistent sets of bookmarks).
  Switch among bookmark files to access different
  projects or project components.  Load components
  as you need them.

* Bookmark listings (dynamic views of currently
  defined/loaded bookmarks).

* Desktops (persistent workplace configs - frames,
  windows, variables,...).

* _Bookmarks_ to each of those sets.  E.g., jump to
  a bookmark to restore a Dired listing, or to switch
  to a different bookmark file, or to load a bookmark
  file to add its bookmarks, or to switch to another
  bookmark listing (with its markings, sort order
  etc.), or to restore/switch to another desktop.

* Bookmark types.  Define new types of bookmark,
  corresponding to sets of whatever, plus associated
  properties/behavior you define.

* Bookmark tags.  You can tag any bookmark with any
  number of arbitrary labels: strings by default,
  but can even be (string . Lisp-value) pairs - any
  Lisp value (but only readable source-Lisp values
  can be used persistently, of course).

  Different projects can have different tags for the
  same or different sets of files and dirs (or other
  objects).

  Bookmarks with the same set of tags (including any
  subset) form a set.  You can act on the bookmarks
  that have any set of tags in many ways.  In a
  bookmark list you can sort, show/hide, or mark
  bookmarks based on their tags - then act on those
  so marked.

* You can tag files and directories, by creating
  "autofile" bookmarks.  They give you the effect of
  using files/directories themselves as bookmarks.
  An autofile bookmark has the same name as its
  targeted file/directory.

* A bookmarks can have an associated annotation:
  arbitrary info you attach to it.  An annotation is
  part of the bookmark it annotates, but it can also
  redirect to a separate annotation file, URL, or to
  another bookmark.

  (A bookmark's annotation and its tags each provide
  it with  arbitrary metadata, in different ways, for
  different uses.)

You can use bookmark tags to organize files (or
whatever), regardless of whether you ever use the
bookmarks to visit them.  That is, tags are unrelated
to the fact that bookmarks record locations and are
useful for navigating.

You can define tag names according to a convention
that helps define your project.  One possibility is
to use tags that define a simple tree structure, e.g.:

 vacation/
 vacation/2021/
 vacation/2021/winter/
 vacation/2021/winter/photos/
 vacation/2021/summer/
 vacation/2021/summer/photos/
 vacation/2022/
 ...

You can combine separate trees using multiple tags,
e.g., a tag "vacation/2022/winter/" and a tag "work/projects/2022/alpha/".

The organization (project-defining) possibilities
are endless.  But it's up to you to set up whatever
kind of project definition/organization you want.
Bookmarks just offer some flexible, persistent aids
to doing that.

HTH.
___

https://www.emacswiki.org/emacs/BookmarkPlus

(E.g., search for "project" on that page.)

reply via email to

[Prev in Thread] Current Thread [Next in Thread]