From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.org!.POSTED.blaine.gmane.org!not-for-mail From: "Paul W. Rankin" Newsgroups: gmane.emacs.help Subject: Emulating Scrivener's binder feature Date: Mon, 01 Apr 2019 18:09:48 +1000 Message-ID: Mime-Version: 1.0 Content-Type: text/plain Injection-Info: blaine.gmane.org; posting-host="blaine.gmane.org:195.159.176.226"; logging-data="39338"; mail-complaints-to="usenet@blaine.gmane.org" User-Agent: mu4e 1.0; emacs 26.1 To: help-gnu-emacs@gnu.org Original-X-From: help-gnu-emacs-bounces+geh-help-gnu-emacs=m.gmane.org@gnu.org Mon Apr 01 10:10:29 2019 Return-path: Envelope-to: geh-help-gnu-emacs@m.gmane.org Original-Received: from lists.gnu.org ([209.51.188.17]) by blaine.gmane.org with esmtps (TLS1.0:RSA_AES_256_CBC_SHA1:256) (Exim 4.89) (envelope-from ) id 1hAs1T-000A5k-Ot for geh-help-gnu-emacs@m.gmane.org; Mon, 01 Apr 2019 10:10:28 +0200 Original-Received: from localhost ([127.0.0.1]:35184 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1hAs1S-0007NO-Jv for geh-help-gnu-emacs@m.gmane.org; Mon, 01 Apr 2019 04:10:26 -0400 Original-Received: from eggs.gnu.org ([209.51.188.92]:57414) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1hAs19-0007Kr-Ka for help-gnu-emacs@gnu.org; Mon, 01 Apr 2019 04:10:08 -0400 Original-Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1hAs18-00087e-JZ for help-gnu-emacs@gnu.org; Mon, 01 Apr 2019 04:10:07 -0400 Original-Received: from out1-smtp.messagingengine.com ([66.111.4.25]:53749) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1hAs18-00086n-1y for help-gnu-emacs@gnu.org; Mon, 01 Apr 2019 04:10:06 -0400 Original-Received: from compute3.internal (compute3.nyi.internal [10.202.2.43]) by mailout.nyi.internal (Postfix) with ESMTP id 1942921E5A for ; Mon, 1 Apr 2019 04:10:04 -0400 (EDT) Original-Received: from mailfrontend1 ([10.202.2.162]) by compute3.internal (MEProxy); Mon, 01 Apr 2019 04:10:04 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=paulwrankin.com; h=from:to:subject:date:message-id:mime-version:content-type; s= fm3; bh=doi6dIP5Ig/dToRlmMZbhL+l3WRQp/KrOjKyh2eWC/k=; b=OHAaf5tn g6we4bOBztBcFczOnvJTTOVJjuI71FWsLShnBtLTaHPWGueKusrzNfa6lR78isc0 gYDX6VUac16VqiZl1J6hWeRohQA3wDn6knNHJYxWR5EVKuhPqOks22mpix2ZRGyw EBgpJmrtx4BNrXcYh5FCyyNG2ZJRviLa+9mN4Jyue2BJVNuXZ4+hb82mL8LNogHt 9kZsFcI9Q3Urmtipr1+lF6JDWgZiAONqCp9hdTs2YsNw8WnZ8QqQjjkjHYi8/YXX kSaLwZbLgkfHiK/cvYwQydjLKvcobxgqLM70nFQODH2MP8ryCLJKPeawC+8bTMmL CtmV8ZPBc2FWOA== DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d= messagingengine.com; h=content-type:date:from:message-id :mime-version:subject:to:x-me-proxy:x-me-proxy:x-me-sender :x-me-sender:x-sasl-enc; s=fm2; bh=doi6dIP5Ig/dToRlmMZbhL+l3WRQp /KrOjKyh2eWC/k=; b=hKt6Az4gHCeJynGoR+CiiAa2Y2KB1laheD1qcsFILHjwk HXg8q0zpEocDJuAaBoojMuWTnzAZb/vY2rjR1/ftG/99WZ+wmMESm+YLzvnoqpkG K8OGKLKh+ouMspSOdIqOhiKzKyW2et5btykoWv9SiaeVZmPEmKWJPSqqvzOrM8BW TZuLEyXVmqrA+57JRK/dq3jC4Kl2mTUxnyHBj3cDgHpy9ndmi5bEXYXfY23XeiK3 9zkoOkqKVbl9h0D3S4Nx5LCDgQdD2gmtM4iiTduXdNGcfARVyuSp3S5fyRIti5tx 5CKfxtZGbfj6v3zDVWCoNzlYM8WTLCKhJH80BLvHQ== X-ME-Sender: X-ME-Proxy-Cause: gggruggvucftvghtrhhoucdtuddrgedutddrleefgdduvdekucetufdoteggodetrfdotf fvucfrrhhofhhilhgvmecuhfgrshhtofgrihhlpdfqfgfvpdfurfetoffkrfgpnffqhgen uceurghilhhouhhtmecufedttdenucenucfjughrpegfhffvufffkfggtgesthdtredttd ertdenucfhrhhomhepfdfrrghulhcuhgdrucftrghnkhhinhdfuceohhgvlhhlohesphgr uhhlfihrrghnkhhinhdrtghomheqnecuffhomhgrihhnpehprghulhifrhgrnhhkihhnrd gtohhmnecukfhppeduvddtrddvvddrvdekrdefkeenucfrrghrrghmpehmrghilhhfrhho mhephhgvlhhlohesphgruhhlfihrrghnkhhinhdrtghomhenucevlhhushhtvghrufhiii gvpedt X-ME-Proxy: Original-Received: from localhost (unknown [120.22.28.38]) by mail.messagingengine.com (Postfix) with ESMTPA id 5029DE442F for ; Mon, 1 Apr 2019 04:10:01 -0400 (EDT) X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 66.111.4.25 X-BeenThere: help-gnu-emacs@gnu.org X-Mailman-Version: 2.1.21 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.org@gnu.org Original-Sender: "help-gnu-emacs" Xref: news.gmane.org gmane.emacs.help:119810 Archived-At: Hello Emaczens, I've started a new Emacs package to try and emulate the behaviour of Scrivener's binder feature. A buffer in a side window would display the current project not unlike dired-sidebar -- each file in the project occupying a single line. The ordering of these files should be arbitrary (i.e. the user may reorder the files) and this project structure should be persistent across sessions. Global keybindings should allow navigation from a file in the current project to the next/previous file in this structure. The user should (eventually) be able to mark a selection of files and concatenate/export these into a master output. The idea would be to have a .binder file in the top directory of the project. This file should be human-readable. Each line in this file should be a file path relative to the .binder file. Metadata relating to each file is stored below the file, terminating at the next file or EOF. Metadata could be: Tags beginning with ":" e.g. :tag1 :tag2 :toast :piglet. Multi-line notes prefixed with ">" like Markdown blockquotes. Comments start with "#". Blank lines are ignored. An example .binder file might look like this: # This is a comment The Problem of Space.txt :kirin First Attempt.txt :noomi > Intro to Noomi. An Angry Driver.txt :cameo > Uncle Bob could do this? Archive/Other Options.txt Working Together.txt :act3 :revised > Putting ego aside, Kirin puts all his faith in Noomi's ability to judge > the space from outside the truck. Little by little, they make it in. Someone might suggest that this info all be stored as lisp objects in .dir-locals.el but my thinking is that a .binder file could be cross-platform (i.e. also work outside of Emacs). Before I go to far, Question 1: Has someone already made something like this? I don't want to reinvent the wheel... Question 2: Any suggestions, pitfalls or edge cases? Regards, Paul p.s. please Reply-All, I'm not on the list. -- https://www.paulwrankin.com