I'm a beginning emacs and org-mode user interested in the mode for personal project management. For example, I have a database of photo images:

  • 2014-10-steven-and-his-cats.jpg
  • 2014-10-steven-author-photo.jpg
  • 2014-11-james-with-his-giant-peach.tif

Etc, for hundreds (not thousands) of pictures. I'd like to treat this as a database from which I could draw information for various (fairly simple, some longterm) projects. I'm wondering if people employ org-mode to organize data in this way using, for instance, org links, or if there's a better tool than org-mode. I have limited technical expertise, and am not a programmer.

  • 1
    One word: Icicles.
    – mbork
    Nov 4 '14 at 20:07
  • 1
    maybe a different approach would do ?
    – csantosb
    Nov 4 '14 at 21:51
  • 1
    It would probably help if you define more clearly what you mean by "project" here.
    – Drew
    Nov 4 '14 at 22:28
  • One "for instance": I record videos and take photos of bands, and sometimes pull from what I have to create video projects for those groups. These video and image files sometimes live in different directories, sometimes the same, but always on the same hard drive. Nov 5 '14 at 0:02
  • 1
    The statement about you having limited technical expertise and not being a programer is fine so long as you are willing to learn a little elisp to customize various aspects of Emacs. If you have some OCD in you (like me), then be prepared to spend an enormous amount of time learning elisp so that you can customize Emacs to meet your precise personal needs.
    – lawlist
    Nov 5 '14 at 0:30

Here is one piece of an approach to organizing. No doubt it can be used together with other organizing approaches.

  1. Put libraries Bookmark+ and Dired+ in your load-path (i.e., "install" them), and load them (require) when you start Emacs.

  2. Put your image files in one or more directories. You can take advantage of the directory structure as a first level of organization. (You probably do this already.)

  3. In any such directory, use C-u C-u C-M-b to automatically bookmark each file in the directory in a bookmark file whose name you specify, and create a bookmark for that bookmark-file.

  4. You can later "jump" to that bookmark-file bookmark, to load its set of bookmarks. If you use C-u when you jump to it, then you switch bookmark files, so that C-x p e (or C-x r l) displays only the bookmarks created from the files in that directory.

    (Without C-u, jumping to the bookmark-file bookmark simply loads its bookmarks into the current set of bookmarks. That is, instead of switching, it adds the bookmarked bookmark-file's bookmarks to the current set of bookmarks.)

    Using different bookmark files (e.g. via different bookmark-file bookmarks) is a powerful way to organize sets of bookmarks, bringing one or the other set into focus.

  5. When you bookmark a file that Emacs recognizes as an image file or a sound file, an appropriate handler is used automatically. That means that "jumping" to an image-file bookmark automatically displays the image.

  6. After you create individual bookmarks for, say, music or image files, you can use P B in the bookmark-list display to show only those bookmarks, and then use C-x r m to bookmark that state of the bookmark-list. In other words, even if your image files are mixed in with other stuff in the same directory, you can create a bookmark that shows only the image files, and later "jump" to it, to restore that display. This gives you a "playlist" of music or a "slideshow" of images.

  7. You can tag any bookmark. A tag is just an arbitrary string (or it is a string together with an associated Lisp value). You use tags for classifying, searching, and accessing bookmarks. In this case, the bookmarks are your image files (they are autofile bookmarks) - and perhaps also your bookmark-file bookmarks (each of which is a collection of image-file bookmarks, these sets possibly overlapping). You might have tags representing different characteristics of the images: date, subject matter, occasion, etc.

  8. In addition to tagging a bookmark with any number of tags, you can annotate it with a textual description. By default, this text is in Org mode, which gives you yet another way to organize information about your image files.

  9. You can also bookmark a Dired buffer itself - or a Dired tree (directory and its descendents). This records the ls switches, which files are marked, which subdirectories are inserted, and which (sub)directories are hidden. That too gives you a means of organization and access.

  • I've heard about "bookmarks" and "tags" but never until now understood the relationship between them. I'll install bookmarks+ and give it a try to see if it fits my use-cases. Nov 4 '14 at 23:58
  • Caveat: Emacs tags are not the same thing as Bookmark+ tags. For info about Emacs tags, see the Emacs manual, node Tags. Bookmark+ tags are like I said - they are similar to delicious.com tags. See Bookmark Tags.
    – Drew
    Nov 5 '14 at 0:14
  • I'm presently strategizing around these ideas. One question: on the Bookmark+ page of EmacsWiki it says, "If you also use library Dired+ (dired+.el) then you can use C-+ to add tags to the marked files and C-- to remove tags from them." This is operating on marked files in a dired buffer, I believe? When I invoke C-+ in a dired buffer with marked files, I get "C-+ is undefined" in the minibuffer. I would love to add tags (while presumably simultaneously creating autofile bookmarks) to marked files in a dired buffer. Nov 9 '14 at 0:42

If you want a list of files in a project, projectile is a currently a popular project manager in Emacs. If you use a version control system (i.e. Git), Projectile automatically recognizes it as a project and gives you a list of files with projectile-find-files. If you don't use a project manager, then add a .projectile file at project root will turn that directory into a project. Or, you can set projectile-require-project-root to nil and you can use projectile in any directory. If you use Helm, you can insert any entry with C-c C-i into the current buffer. Have a look at my guide for demos.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.