Start a new topic

Sync only list of files specified in init.org

I have 3000+ org files total split across subfolders (org-roam!), so syncing subfolders takes forever. The app has been syncing since yesterday morning and it's only gotten through <500 files.


In Emacs, you can specify a list of org-agenda-files, including files in subfolders. I only use beorg to read my agenda, so I only need my org-agenda-files synced. With the new subfolders feature (+ maybe the ability to exclude particular files), is it possible to selectively sync only my list of agenda files, even if some of them are in subfolders?


In response to my related ticket, Matthew suggested one potential solution for more advanced users: write a Scheme function that could be defined to return true if a particular file is to be included in the sync. Unfortunately I don't know much Scheme, so any help or alternative ideas would be appreciated!


Matthew,


Could you also remind people where to find the latest documentation on Scheme functions recognized by Beorg?  Perhaps put a link on beorg.app...?

@mathew has this been released? Does this go into init.org as well?

Here is an example of how this will work in the next release:


(define (sync-ignore-file path) (check-prefixes path '("ignore1/" "ignore2/" "private.org")))


In the above example beorg will ignore any files in the ignore1 and ignore2 folders, and also the file private.org. A user could define sync-ignore-file to do more complex matching if required.


I hope to get this update out a little later this month.


2 people like this

Not good at writing Lisp/Scheme, but I imagine this function would take an argument and compare it against a list.  You could probably find Lisp examples in Emacs packages and then convert to Scheme.  I think scheme.org has documentation on the language.


Another option might be to redo your syncing process on the Emacs side.  Since the purpose of syncing here is to get the necessary files to BeOrg, there isn't much of a reason to sync org-roam stuff as well.  You could probably use 'rsync' or 'syncthing' to only sync up the files that need to go across to BeOrg.  This would just require some shell scripting (although syncthing does have a GUI).


Even if you're syncing with other Emacs systems and want to sync all the files for that purpose, it might be easier to setup a separate sync for BeOrg that strips the list of files down to what you need for BeOrg.  Then, you can use the normal sync process in BeOrg.

Login or Signup to post a comment