Code Monkey home page Code Monkey logo

org-roam-bibtex's Introduction

Org-roam GitHub Release MELPA License GPL 3

Org-roam Logo

Org-roam is a plain-text knowledge management system. It brings some of Roam's more powerful features into the Org-mode ecosystem.

Org-roam borrows principles from the Zettelkasten method, providing a solution for non-hierarchical note-taking. It should also work as a plug-and-play solution for anyone already using Org-mode for their personal wiki.

  • Private and Secure: Edit your personal wiki completely offline, entirely in your control. Encrypt your notes with GPG. Take lasting notes in plain-text.
  • Networked Thought: Connect notes and thoughts together with ease using backlinks. Discover surprising and previously unseen connections in your notes with the built-in graph visualization.
  • Extensible and Powerful: Leverage Emacs' fantastic text-editing interface, and the mature Emacs and Org-mode ecosystem of packages.
  • Free and Open Source: Org-roam is licensed under the GNU General Public License version 3 or later.

Org-roam Screenshot

Installation

Down below you will find basic installation instructions for how to quickly install org-roam using various environments for various purposes. For more detailed information, please read the manual.

Using package.el

Toggle instructions

You can install org-roam from MELPA or MELPA Stable using package.el:

M-x package-install RET org-roam RET

Using straight.el

Toggle instructions

Installation from MELPA or MELPA Stable using straight.el:

(straight-use-package 'org-roam)

Or with use-package:

(use-package org-roam
  :straight t
  ...)

If you need to install the package directly from the source repository, instead of from MELPA, the next sample shows how to do so:

(use-package org-roam
  :straight (:host github :repo "org-roam/org-roam"
             :files (:defaults "extensions/*"))
  ...)

If you plan to use your own local fork for the development and contribution, the next sample will get you there:

(use-package org-roam
  :straight (:local-repo "/path/to/org-roam-fork"
             :files (:defaults "extensions/*")
             :build (:not compile))
  ...)

Using Doom Emacs

Toggle instructions

Doom's :lang org module comes with support for org-roam, but it's not enabled by default. To activate it pass +roam2 flag to org module in your $DOOMDIR/init.el (e.g. (org +roam2)), save the file and run doom sync -u in your shell.

To provide better stability, Doom pins the package to a specific commit. If you need to unpin it (not recommended doing that, request Doom to bump the package instead) use the next in your packages.el:

(unpin! org-roam)

If for some reasons you want to use a different recipe for org-roam, you can use the next form in your packages.el to install the package from a recipe repository (e.g. MELPA):

(package! org-roam)

You can pass :pin "commit hash" to pin the package to a specific commit.

With the next sample you can install the package directly from the source repository:

(package! org-roam
  :recipe (:host github :repo "org-roam/org-roam"
           :files (:defaults "extensions/*")))

And if you plan to use your own local fork for the development or contribution, the next sample will get you there:

(package! org-roam
  :recipe (:local-repo "/path/to/org-roam-fork"
           :files (:defaults "extensions/*")
           :build (:not compile)))

Without a package manager

Toggle instructions

To install the package without using a package manager you have the next two options:

  1. Install the package by cloning it with git from the source repository.
  2. Or install the package by downloading the latest release version.

In both of the cases you will need to ensure that you have all the required dependencies. These include:

  • dash
  • f
  • s
  • org (9.4 is the minimal required version!)
  • emacsql
  • emacsql-sqlite
  • magit-section
  • filenotify-recursive

After installing the package, you will need to properly setup load-path to the package:

(add-to-list 'load-path "/path/to/org-roam/")
(add-to-list 'load-path "/path/to-org-roam/extensions/")

After which you should be able to resolve (require 'org-roam) call without any problems.

Org-roam also comes with .texi files to integrate with Emacs' built-in Info system. Read the manual to find more details for how to install them manually.

Configuration

Here's a very basic sample for configuration of org-roam using use-package:

(use-package org-roam
  :ensure t
  :custom
  (org-roam-directory (file-truename "/path/to/org-files/"))
  :bind (("C-c n l" . org-roam-buffer-toggle)
         ("C-c n f" . org-roam-node-find)
         ("C-c n g" . org-roam-graph)
         ("C-c n i" . org-roam-node-insert)
         ("C-c n c" . org-roam-capture)
         ;; Dailies
         ("C-c n j" . org-roam-dailies-capture-today))
  :config
  ;; If you're using a vertical completion framework, you might want a more informative completion interface
  (setq org-roam-node-display-template (concat "${title:*} " (propertize "${tags:10}" 'face 'org-tag)))
  (org-roam-db-autosync-mode)
  ;; If using org-roam-protocol
  (require 'org-roam-protocol))

Note that the file-truename function is only necessary when you use symbolic link to org-roam-directory. Org-roam won't automatically resolve symbolic link to the directory.

Getting Started

David Wilson of System Crafters has produced an introductory video that covers the basic commands:

Getting Started with Org Roam - Build a Second Brain in Emacs

Getting Help

Before creating a new topic/issue, please be mindful of our time and ensure that it has not already been addressed on GitHub or on Discourse.

  • If you are new to Emacs and have problem setting up Org-roam, please ask your question on Slack, channel #how-do-i.
  • For quick questions, please ask them on Slack, channel #troubleshooting.
  • If something is not working as it should, or if you would like to suggest a new feature, please create a new issue.
  • If you have questions about your workflow with the slip-box method, please find a relevant topic on Discourse, or create a new one.

Knowledge Bases using Org-roam

Contributing

To report bugs and suggest new feature use the issue tracker. If you have some code which you would like to be merged, then open a pull request. Please also see CONTRIBUTING.md.

License

Copyright © Jethro Kuan and contributors. Distributed under the GNU General Public License, Version 3.

org-roam-bibtex's People

Contributors

bertulli avatar cdlm avatar chuxubank avatar einsiedlerspiel avatar emacsbliss avatar jimmerricks avatar meliache avatar myshevchuk avatar paulhaider avatar premopie avatar swflint avatar wetlize avatar yangsheng6810 avatar zaeph avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

org-roam-bibtex's Issues

Opening bibtex entry opens buffer to dired instead of opening pdf

GNU Emacs 26.3
org-roam-bibtex 20200912.1538 installed

  • Problem:
    Selecting "2. Open pdf" in the helm bibtex menu for an entry opens the buffer to dired / directory.

Screenshot_20200927_234503

Screenshot_20200927_234839

Screenshot_20200927_234631

  • Expected Result:
    Selecting "2. Open pdf" in helm bibtex menu should open the pdf in emacs using pdf tools.

  • Steps to resolve the issue:
    ** Absolute link in bibtex file
    I changed the bibtex entry "file" property to be an absolute path rather than a relative path.
    Compare:

@article{wolfmoon12,
title = {"{{The Moon}} over the {{Mountain}}": {{Stories}} by {{Atsushi Nakajima}} by {{Paul McCarthy}} and {{Nobuko Ochner}} (Review)},
shorttitle = {"{{The Moon}} over the {{Mountain}}"},
author = {Wolf, Charles De},
date = {2012},
journaltitle = {Monumenta Nipponica},
volume = {67},
pages = {371–374},
publisher = {{Sophia University}},
issn = {1880-1390},
doi = {10.1353/mni.2012.0021},
file = {files/1450/Wolf - 2012 - The Moon over the Mountain Stories by Atsushi N.pdf},
langid = {english},
number = {2}
}

to

@article{wolfmoon12,
  title = {"{{The Moon}} over the {{Mountain}}": {{Stories}} by {{Atsushi Nakajima}} by {{Paul McCarthy}} and {{Nobuko Ochner}} (Review)},
  shorttitle = {"{{The Moon}} over the {{Mountain}}"},
  author = {Wolf, Charles De},
  date = {2012},
  journaltitle = {Monumenta Nipponica},
  volume = {67},
  pages = {371--374},
  publisher = {{Sophia University}},
  issn = {1880-1390},
  doi = {10.1353/mni.2012.0021},
  file = {/home/solomon/Org/slipbox/bib/files/1450/Wolf - 2012 - The Moon over the Mountain Stories by Atsushi N.pdf},
  langid = {english},
  number = {2}
}

After doing changing the bibtex entry, restarting emacs and citing the entry again, I get to the helm bibtex menu and select "2. Open pdf" and it attempts to open the pdf in my OS default pdf viewer (okular)

It will still open the other buffer as dired / directory.

** Remove Template from helm

(use-package helm-bibtex
  :ensure t
  :init (autoload 'helm-bibtex "helm-bibtex" "" t)
  :config
  (setq bibtex-completion-notes-path "~/Org/slipbox/bib/bibnotes/")
  (setq reftex-default-bibliography '("~/Org/slipbox/bib/bib.bib"))
  (setq bibtex-completion-bibliography '("~/Org/slipbox/bib/bib.bib"))
  (setq bibtex-completion-pdf-field "file")
  (setq bibtex-completion-notes-template-multiple-files
	(concat
	 "#+TITLE: ${title}\n"
         "#+ROAM_KEY: cite:${=key=}\n"
	 "* TODO Notes\n"
	 ":PROPERTIES:\n"
	 ":Custom_ID: ${=key=}\n"
	 ":NOTER_DOCUMENT: ${file}\n"
	 ":AUTHOR: ${author-abbrev}\n"
	 ":JOURNAL: ${journaltitle}\n"
	 ":DATE: ${date}\n"
	 ":YEAR: ${year}\n"
	 ":DOI: ${doi}\n"
	 ":URL: ${url}\n"
	 ":END:\n\n"
  ))
  ;;  (setq org-ref-get-pdf-filename-function (lambda (key) (car (bibtex-completion-find-pdf key)))))
  )

was my original helm-bibtex package but I changed it to below after being told it's redundant and might be conflicting.

(use-package helm-bibtex
  :ensure t
  :init (autoload 'helm-bibtex "helm-bibtex" "" t)
  :config
  (setq bibtex-completion-notes-path "~/Org/slipbox/bib/bibnotes/")
  (setq reftex-default-bibliography '("~/Org/slipbox/bib/bib.bib"))
  (setq bibtex-completion-bibliography '("~/Org/slipbox/bib/bib.bib"))
  (setq bibtex-completion-pdf-field "file")
  ;;  (setq org-ref-get-pdf-filename-function (lambda (key) (car (bibtex-completion-find-pdf key)))))
  )

This did not resolve the issue.

** bibtex-completion-pdf-open-function

Looking at the value of bibtex-completion-pdf-open-function to see if it was a odd entry, However, the value is still find-file.

** Something wrong with pdf-tools
I thought that maybe the issue is with pdf-tools as a whole. However, using find-file (C-x C-f) and manually locating the file and opening it results in emacs opening the file just fine

Screenshot_20200928_000842

  • Org Roam File
; Roam Research Emacs
(use-package org-roam
  :ensure t
  :hook
  (after-init . org-roam-mode)
  :custom
  (org-roam-directory "~/Org/slipbox/")
  :bind (:map org-roam-mode-map
	      (("C-c n l" . org-roam)
               ("C-c n f" . org-roam-find-file)
               ("C-c n g" . org-roam-graph))
              :map org-mode-map
              (("C-c n i" . org-roam-insert))
              (("C-c n I" . org-roam-insert-immediate))))

;; Allows for Org-roam to display in a web browser
(use-package org-roam-server
  :ensure t
  :config
  (setq org-roam-server-host "127.0.0.1"
        org-roam-server-port 8080
        org-roam-server-authenticate nil
        org-roam-server-export-inline-images t
        org-roam-server-serve-files nil
        org-roam-server-served-file-extensions '("pdf" "mp4" "ogv")
        org-roam-server-network-poll t
        org-roam-server-network-arrows nil
        org-roam-server-network-label-truncate t
        org-roam-server-network-label-truncate-length 60
        org-roam-server-network-label-wrap-length 20))

;; Add bibliography and bibliographical notes to Org Roam
(use-package org-roam-bibtex
  :ensure t
  :hook (org-roam-mode . org-roam-bibtex-mode)
  :bind (:map org-mode-map
              (("C-c n a" . orb-note-actions)))
  :config
  (setq orb-preformat-keywords
	'(("citekey" . "=key=") "title" "url" "file" "author-or-editor" "keywords"))
  (setq orb-process-file-field t)
  (setq orb-file-field-extensions "pdf")
  (setq orb-templates
	'(("r" "ref" plain (function org-roam-capture--get-point)
	   ""
	   :file-name "literature/${citekey}"
	   :head "#+TITLE: ${citekey}: ${title}\n#+ROAM_KEY: ${ref}\n- tags ::\n- keywords :: ${keywords}\n* ${title}\n:PROPERTIES:\n:Custom_ID: ${citekey}\n:URL: ${url}\n:AUTHOR: ${author-or-editor}\n:NOTER_DOCUMENT: ${file}\n:NOTER_PAGE:\n:END:"))))

(use-package company-org-roam
  :ensure t
  :config
  (push 'company-org-roam company-backends))
(provide 'init-orgroam) 

Can't get default orb-template to work when adding a note from bibliography

I had this working, and now it's not working :-(

What I expect:

  • Use ivy-bibtex to find a reference without a note currently
  • C-o, use Edit note option to edit a note
  • Get a new note with contents defined by the default orb-templates value

What I get:

  • Contents with only a title, not defined by any format I can find:
    "#+TITLE: Notes on: [author list...] (year). Title"

When I use C-h v to find the current value of orb-templates I get:

(("r" "ref" plain #'org-roam-capture--get-point "" :file-name "${citekey}" :head "#+TITLE: ${title}\n#+ROAM_KEY: ${ref}\n" :unnarrowed t))

If I eval (orb-edit-notes "zuninoAlouattaCarayaRelations2001") in a scratch buffer, I get a new note with the contents defined correctly by the orb-templates default value above.

I'm using Doom Emacs, and the relevant use package part in my config is:

(use-package! org-roam-bibtex
  :after org-roam
  :hook (org-roam-mode . org-roam-bibtex-mode)
  :bind (:map org-mode-map
         ("s-b" . orb-note-actions))
  )

I've unpinned :tools biblio and made sure that I have the latest versions of helm/ivy-bibtex and bibtex-completion.

Any help much appreciated! I love this package and really want to make it work for my note-taking on references.

Doom configuration persistence after restart

I'm trying to set up my system with your fantastic workflow integration between org-roam, org-noter and org-ref. First of all, thank you for your great work.

I'm running into a strange issue with my configuration. I'm running emacs-doom. My config does not seem to persist after I run M-x doom/reload.

My ~/doom.d/config.el:

;; From hleissner private config
;;; :lang org
(setq org-directory "~/org/"
      ;;org-archive-location (concat org-directory ".archive/%s::")
      ;;org-roam-directory (concat org-directory "notes/")
      ;;org-journal-encrypt-journal t
      org-ellipsis ""
      org-superstar-headline-bullets-list '(""))
(after! org
  (add-to-list 'org-modules 'org-habit t))

;; This allows typing ALT+5/6 for square brackets using iso-de keyboard layout
(setq mac-option-modifier nil
      mac-command-modifier 'meta
      select-enable-clipboard t)


;; Org-ref
;; https://github.com/hlissner/doom-emacs/issues/1573
(use-package! org-ref
    :after org
    :init
    ; code to run before loading org-ref
    :config
    ; code to run after loading org-ref
    )

(setq reftex-default-bibliography '("~/Dropbox/bibliography/references.bib"))

;; see org-ref for use of these variables
(setq org-ref-default-bibliography '("~/Dropbox/_sync/Zotero/zotero-better-bibtex-all.bib")
      org-ref-bibliography-notes "~/org/org-ref/all.org"
      org-ref-pdf-directory "~/Dropbox/_sync/Zotero/ZotFileExport/")
(setq bibtex-completion-bibliography "~/Dropbox/_sync/Zotero/zotero-better-bibtex-all.bib"
      bibtex-completion-library-path "~/Dropbox/_sync/Zotero/ZotFileExport"
      bibtex-completion-notes-path "~/org/org-ref/helm-bibtex-notes")
;; open pdf with system pdf viewer (works on mac)
(setq bibtex-completion-pdf-open-function
  (lambda (fpath)
    (start-process "open" "*open*" "open" fpath)))

(use-package! org-noter)

(setq org-roam-directory "~/org-roam")

;; Org-roam-bibtex
(use-package org-roam-bibtex
  :hook (org-roam-mode . org-roam-bibtex-mode)
  :bind (:map org-mode-map
         (("C-c n a" . orb-note-actions))))


(setq orb-preformat-keywords
   '(("citekey" . "=key=") "title" "url" "file" "author-or-editor" "keywords"))

(setq orb-templates
      '(("r" "ref" plain (function org-roam-capture--get-point)
         ""
         :file-name "${slug}"
         :head "#+TITLE: ${citekey}: ${title}\n#+ROAM_KEY: ${ref}

- tags ::
- keywords :: ${keywords}

* ORG-NOTER
:PROPERTIES:
:Custom_ID: ${citekey}
:URL: ${url}
:AUTHOR: ${author-or-editor}
:NOTER_DOCUMENT: %(orb-process-file-field \"${citekey}\")
:NOTER_PAGE:
:END:")))

;; Test capture template
;; http://pragmaticemacs.com/emacs/org-mode-basics-vii-a-todo-list-with-schedules-and-deadlines/
(setq org-capture-templates
      '(("t" "Todo" entry (file+headline "~/org/todo.org" "Inbox")
         "* TODO %?\nSCHEDULED: %(org-insert-time-stamp (org-read-date nil t \"+0d\"))\n")));; 

Steps to reproduce:

  1. Restart doom emacs
  2. Try to follow a cite:xyz link from within a org-roam document (select in org-ref buffer: 3. Add notes) by pressing Enter
  3. org-ref buffer closes, error bibtex-parse-entry: Wrong type argument: stringp, nil, no redirect to the respective document occurs
  4. Run M-x doom/reload
  5. Everything works, I can follow all cite:xyz links
  6. After I restart doom emacs, following links doesn't work anymore, back to step 2...

Conclusion

I tried out multiple different bibtex entries, or even create new ones. I suspect a collision in my private emacs doom config.el between any of these packages: org-roam, org-ref, org-roam-bibtex, or even org-noter...

Theme question

Package looks great. Wondering what theme is being used in the GIF and video?

Errors when opening helm-bibtex

Description

Steps to Reproduce

  1. Load DOOM Emacs
  2. Run helm-bibtex

Backtrace

  -Lisp error: (wrong-type-argument listp #<hash-table equal 10/65 0x3f2395>)
  assoc("abbey_attention_2017" #<hash-table equal 10/65 0x3f2395>)
  (cdr (assoc citekey completions))
  (plist-get (cdr (assoc citekey completions)) :path)
  (let* ((completions (org-roam--get-ref-path-completions))) (plist-get (cdr (assoc citekey completions)) :path))
  orb-find-note-file("abbey_attention_2017")
  #f(compiled-function (fn) #<bytecode 0x2538a19>)(orb-find-note-file)
  mapcar(#f(compiled-function (fn) #<bytecode 0x2538a19>) (orb-find-note-file bibtex-completion-find-note-multiple-files bibtex-completion-find-note-one-file))
  bibtex-completion-prepare-entry((("number" . "1") ("language" . "en") ("keywords" . "Attention checks,Data validation,Manipulation checks,Response validation") ("journal" . "Journal of Operations Management") ("file" . "/home/cantos/Dropbox/Zotero/abbey_attention_2017.pdf;/home/cantos/Zotero/storage/ZIELSZZK/j.jom.2017.06.html") ("abstract" . "This paper examines attention checks and manipulation validations to detect inattentive respondents in primary empirical data collection. These prima facie attention checks range from the simple such as reverse scaling first proposed a century ago to more recent and involved methods such as evaluating response patterns and timed responses via online data capture tools. The attention check validations also range from easily implemented mechanisms such as automatic detection through directed queries to highly intensive investigation of responses by the researcher. The latter has the potential to introduce inadvertent researcher bias as the researcher's judgment may impact the interpretation of the data. The empirical findings of the present work reveal that construct and scale validations show consistently significant improvement in the fit statistics\\textemdash{}a finding of great use for researchers working predominantly with scales and constructs for their empirical models. However, based on the rudimentary experimental models employed in the analysis, attention checks generally do not show a consistent, systematic improvement in the significance of test statistics for experimental manipulations. This latter result indicates that, by their very nature, attention checks may trigger an inherent trade-off between loss of sample subjects\\textemdash{}lowered power and increased Type II error\\textemdash{}and the potential of capitalizing on chance alone\\textemdash{}the possibility that the previously significant results were in fact the result of Type I error. The analysis also shows that the attrition rates due to attention checks\\textemdash{}upwards of 70\\% in some observed samples\\textemdash{}are far larger than typically assumed. Such loss rates raise the specter that studies not validating attention may inadvertently increase their Type I error rate. The manuscript provides general guidelines for various attention checks, discusses the psychological nuances of the methods, and highlights the delicate balance among incentive alignment, monetary compensation, and the subsequently triggered mood of respondents.") ("doi" . "10.1016/j.jom.2017.06.001") ("issn" . "1873-1317") ("pages" . "63--70") ("volume" . "53-56") ("year" . "2017") ("author" . "Abbey, James D. and Meloy, Margaret G.") ("shorttitle" . "Attention by Design") ("title" . "Attention by Design: {{Using}} Attention Checks to Detect Inattentive Respondents and Improve Data Quality") ("=type=" . "article") ("=key=" . "abbey_attention_2017")) ("author" "year" "title" "crossref" "keywords"))
  bibtex-completion-parse-bibliography(#<hash-table equal 0/65 0x2537171>)
  bibtex-completion-candidates()
  #f(compiled-function (event) #<bytecode 0x253488d>)(((1 . 0) stopped "/home/cantos/Dropbox/Org/references/library.bib"))
  file-notify--rm-descriptor((1 . 0))
  file-notify-rm-watch((1 . 0))
  #f(compiled-function (watch-descriptor) #<bytecode 0x2534881>)((1 . 0))
  mapc(#f(compiled-function (watch-descriptor) #<bytecode 0x2534881>) ((1 . 0)))
  bibtex-completion-init()
  helm-bibtex(nil)
  funcall-interactively(helm-bibtex nil)
  call-interactively(helm-bibtex record nil)
  command-execute(helm-bibtex record)
  counsel-M-x-action("helm-bibtex")
  ivy-call()
  ivy-read("M-x " ("toggle-debug-on-error" "helm-bibtex" "org-roam-mode" "org-roam-server-mode" "org-noter" "server-start" "org-pandoc-export-to-docx" "interleave-mode" "mixed-pitch-mode" "org-latex-preview" "org-ref-bibtex" "org-roam-insert" "org-roam-db-build-cache" "org-roam-bibtex-note-actions" "interleave" "undo" "org-ref-open-bibtex-notes" "org-zotxt-mode" "interleave-quit" "org-ref-change-cite-type" "treemacs" "pdf-isearch-minor-mode" "org-roam-graph" "variable-pitch-mode" "org-roam-build-cache" "org-ref-helm-insert-cite-link" "org-ref-bibtex-hydra/org-ref-bibtex-wos-citing-and-exit" "org-mode" "reftex-citep" "customize-group" "package-install" "interleave--quit" "org-cdlatex-mode" "pdf-isearch-active-mode" "cd" "jb" "5x5" "amx" "arp" "dbx" "dig" "erc" "ert" "eww" "ftp" "gdb" "irc" "jdb" "man" "mpc" ...) :predicate #f(compiled-function (x) #<bytecode 0x268e525>) :require-match t :history counsel-M-x-history :action counsel-M-x-action :keymap (keymap (67108908 . counsel--info-lookup-symbol) (67108910 . counsel-find-symbol)) :initial-input nil :caller counsel-M-x)
  counsel-M-x()
  funcall-interactively(counsel-M-x)
  call-interactively(counsel-M-x nil nil)
  command-execute(counsel-M-x)

Expected Results

Helm bibtex should open and allow me to edit notes

Actual Results

cdr: Wrong type argument: listp, #s(hash-table size 65 test equal rehash-size 1.5 rehash-threshold 0.8125 data ("dietvorst_algorithm_nodate" (:path "/home/cantos/Dropbox/Org/references/notes/dietvorst_algorithm_nodate.org" :type "cite" :ref "dietvorst_algorithm_nodate") "dietvorst_overcoming_2018" (:path "/home/cantos/Dropbox/Org/references/notes/dietvorst_overcoming_2018.org" :type "cite" :ref "dietvorst_overcoming_2018") "dietvorst_people_2019" (:path "/home/cantos/Dropbox/Org/references/notes/dietvorst_people_2019.org" :type "cite" :ref "dietvorst_people_2019") "gefen_trust_2003" (:path "/home/cantos/Dropbox/Org/references/notes/gefen_trust_2003.org" :type "cite" :ref "gefen_trust_2003") "granovetter_economic_nodate" (:path "/home/cantos/Dropbox/Org/references/notes/granovetter_economic_nodate.org" :type "cite" :ref "granovetter_economic_nodate") "https://www.forbes.com/sites/cognitiveworld/2020/05/10/finding-patterns-and-anomalies-in-your-data/#672b1de4158e" (:path "/home/cantos/Dropbox/Org/references/notes/how_ai_is_finding_patterns_and_anomalies_in_your_data.org" :type "website" :ref "https://www.forbes.com/sites/cognitiveworld/2020/05/10/finding-patterns-and-anomalies-in-your-data/#672b1de4158e") "lippert_supply_2006-1" (:path "/home/cantos/Dropbox/Org/references/notes/lippert_supply_2006_1.org" :type "cite" :ref "lippert_supply_2006-1") "prahl_understanding_2017" (:path "/home/cantos/Dropbox/Org/references/notes/prahl_understanding_2017.org" :type "cite" :ref "prahl_understanding_2017") "stolze_role_2015" (:path "/home/cantos/Dropbox/Org/references/notes/stolze_role_2015.org" :type "cite" :ref "stolze_role_2015") "whipple_conceptualizations_2013" (:path "/home/cantos/Dropbox/Org/references/notes/whipple_conceptualizations_2013.org" :type "cite" :ref "whipple_conceptualizations_2013") ...))

Environment

org-roam-diagnostics is not available. But I am using DOOM Emacs.

Wrong type argument: stringp, nil

org-roam/org-roam#504

I insert a new citation using M-x helm-bibtex in org-mode and org-roam-mode
I use C-c o to open the helm window which prompts me several options including the edit note option. When I choose Edit Note, I get an error that says Wrong type argument: stringp, nil.

"Immediate" version of org-roam-bibtex-insert-non-ref?

Hi,

Would it be possible to have an "Immediate" version of org-roam-bibtex-insert-non-ref, analogous to org-roam-insert-immediate? The idea is to be able to insert a link without having to go through the "capture template" buffer. This is only for the case in which we are using a single capture template in org-roam-capture-templates .

Thanks!!!

`orb--unformat-citekey` should be adapted to `org-roam--extract-ref`

#27 mentioned a problem with orb-note-actions which could be traced back to orb--unformat-citekey failing when no #+ROAM-KEY: file-metdata tag is present in the bibliographic note.

Whilst we could fix it by implementing a check with org-roam--extract-ref, the function is about to be changed by org-roam/org-roam/pull/547 which will change its output. Therefore, when it's merged, we'll need to adapt orb--unformat-citekey to shield it accordingly.

Installation instructions for Doom Emacs

I tried getting org-roam-bibtex to work together with bibtex-completion, but I ran into some problems.
If I use the example configuration from the documentation and load the package after org-roam, what happens is that trying to use ivy-bibtex or helm-bibtex results in the error in the title. I thought maybe it's because org-roam-bibtex is getting loaded before bibtex-completion, so I added :after bibtex-completion to my use-package block. With this, ivy-bibtex and helm-bibtex actually work, but when I turn on org-roam-bibtex-mode I still get the same error message. (The mode does turn on though.) It sounds like the package doesn't load completely for some reason, and it does work only partially. For example, I do get backlinks for the citations in my notes, but If I try to create a new note file for a bibliography entry from helm-bibtex or ivy-bibtex, the template in orb-templates is not getting used. What works instead is putting the template in the variable bibtex-completion-notes-template-multiple-files. Did I just misunderstand this and the template in orb-templates gets used only if I create a note file with some other function? The orb-process-file-field helper function does not work either.
I'm using doom emacs, and the relevant part of my configuration file looks like this:

(use-package! org-roam-bibtex
 :after (bibtex-completion)
  :hook (org-roam-mode . org-roam-bibtex-mode)
  :config
  (setq orb-preformat-keywords
   '("=key=" "title" "url" "file" "author-or-editor" "keywords"))
  (setq orb-templates
        `(("r" "ref" plain (function org-roam-capture--get-point)
           ""
           :file-name "literature/${slug}"
           :head ,(concat
                   "#+title: ${=key=}: ${title}\n"
                   "#+roam_key: ${ref}\n\n"
                   "* ${title}\n"
                   "  :PROPERTIES:\n"
                   "  :Custom_ID: ${=key=}\n"
                   "  :URL: ${url}\n"
                   "  :AUTHOR: ${author-or-editor}\n"
                   "  :NOTER_DOCUMENT: %(orb-process-file-field \"${=key=}\")\n"
                   "  :NOTER_PAGE: \n"
                   "  :END:\n")
           :unnarrowed t)))
  )

 (use-package! bibtex-completion
   :defer
   :config
   (setq bibtex-completion-additional-search-fields '(keywords)
         bibtex-completion-pdf-field "file"))
    (setq bibtex-completion-notes-path "~/Dropbox/Org/notes/literature"
            bibtex-completion-bibliography "~/Dropbox/Org/mainbibfile.bib"
            bibtex-completion-library-path "~/Dropbox/Research/Papers"
            bibtex-completion-pdf-field "file"
            bibtex-completion-notes-template-multiple-files
            (concat
             "#+title: ${title}\n"
             "#+roam_key: cite:${=key=}\n"
             "* ${title}\n"
             ":PROPERTIES:\n"
             ":Custom_ID: ${=key=}\n"
             ":NOTER_DOCUMENT: ~/Dropbox/Research/Papers/${=key=}.pdf\n"
             ":AUTHOR: ${author-abbrev}\n"
             ":JOURNAL: ${journaltitle}\n"
             ":DATE: ${date}\n"
             ":YEAR: ${year}\n"
             ":DOI: ${doi}\n"
             ":URL: ${url}\n"
             ":END:\n\n"))

Recursive Load on any org-roam-bibtex function

Hi,

I just installed org-roam-bibtex to try it out but whenever calling an org-roam-bibtex function I get:

Recursive load: "/home/arch/.emacs.d/.local/straight/build/org-roam-bibtex/orb-note-actions.el", "/home/arch/.emacs.d/.local/straight/build/org-roam-bibtex/org-roam-bibtex.el", "/home/arch/.emacs.d/.local/straight/build/org-roam-bibtex/orb-note-actions.el", "/home/arch/.emacs.d/.local/straight/build/org-roam-bibtex/org-roam-bibtex.el", "/home/arch/.emacs.d/.local/straight/build/org-roam-bibtex/orb-note-actions.el", "/home/arch/.emacs.d/.local/straight/build/org-roam-bibtex/org-roam-bibtex.el", "/home/arch/.emacs.d/.local/straight/build/org-roam-bibtex/orb-note-actions.el", "/home/arch/.emacs.d/.local/straight/build/org-roam-bibtex/org-roam-bibtex.el", "/home/arch/.emacs.d/.local/straight/build/org-roam-bibtex/orb-note-actions.el"

and the backtrace being:

Debugger entered--Lisp error: (error "Recursive load" "/home/arch/.emacs.d/.local/straight/build/org-ro..." "/home/arch/.emacs.d/.local/straight/build/org-ro..." "/home/arch/.emacs.d/.local/straight/build/org-ro..." "/home/arch/.emacs.d/.local/straight/build/org-ro..." "/home/arch/.emacs.d/.local/straight/build/org-ro..." "/home/arch/.emacs.d/.local/straight/build/org-ro..." "/home/arch/.emacs.d/.local/straight/build/org-ro..." "/home/arch/.emacs.d/.local/straight/build/org-ro..." "/home/arch/.emacs.d/.local/straight/build/org-ro...")
  require(org-roam-bibtex)
  #<subr eval-buffer>(#<buffer  *load*-280947> nil "/home/arch/.emacs.d/.local/straight/build/org-ro..." nil t)
  apply(#<subr eval-buffer> (#<buffer  *load*-280947> nil "/home/arch/.emacs.d/.local/straight/build/org-ro..." nil t))
  eval-buffer(#<buffer  *load*-280947> nil "/home/arch/.emacs.d/.local/straight/build/org-ro..." nil t)  ; Reading at buffer position 1800
  load-with-code-conversion("/home/arch/.emacs.d/.local/straight/build/org-ro..." "/home/arch/.emacs.d/.local/straight/build/org-ro..." nil t)
  require(orb-note-actions)
  #<subr eval-buffer>(#<buffer  *load*-31892> nil "/home/arch/.emacs.d/.local/straight/build/org-ro..." nil t)
  apply(#<subr eval-buffer> (#<buffer  *load*-31892> nil "/home/arch/.emacs.d/.local/straight/build/org-ro..." nil t))
  eval-buffer(#<buffer  *load*-31892> nil "/home/arch/.emacs.d/.local/straight/build/org-ro..." nil t)  ; Reading at buffer position 3240
  load-with-code-conversion("/home/arch/.emacs.d/.local/straight/build/org-ro..." "/home/arch/.emacs.d/.local/straight/build/org-ro..." nil t)
  require(org-roam-bibtex)
  #<subr eval-buffer>(#<buffer  *load*-886275> nil "/home/arch/.emacs.d/.local/straight/build/org-ro..." nil t)
  apply(#<subr eval-buffer> (#<buffer  *load*-886275> nil "/home/arch/.emacs.d/.local/straight/build/org-ro..." nil t))
  eval-buffer(#<buffer  *load*-886275> nil "/home/arch/.emacs.d/.local/straight/build/org-ro..." nil t)  ; Reading at buffer position 1800
  load-with-code-conversion("/home/arch/.emacs.d/.local/straight/build/org-ro..." "/home/arch/.emacs.d/.local/straight/build/org-ro..." nil t)
  require(orb-note-actions)
  #<subr eval-buffer>(#<buffer  *load*-820463> nil "/home/arch/.emacs.d/.local/straight/build/org-ro..." nil t)
  apply(#<subr eval-buffer> (#<buffer  *load*-820463> nil "/home/arch/.emacs.d/.local/straight/build/org-ro..." nil t))
  eval-buffer(#<buffer  *load*-820463> nil "/home/arch/.emacs.d/.local/straight/build/org-ro..." nil t)  ; Reading at buffer position 3240
  load-with-code-conversion("/home/arch/.emacs.d/.local/straight/build/org-ro..." "/home/arch/.emacs.d/.local/straight/build/org-ro..." nil t)
  require(org-roam-bibtex)
  #<subr eval-buffer>(#<buffer  *load*-584088> nil "/home/arch/.emacs.d/.local/straight/build/org-ro..." nil t)
  apply(#<subr eval-buffer> (#<buffer  *load*-584088> nil "/home/arch/.emacs.d/.local/straight/build/org-ro..." nil t))
  eval-buffer(#<buffer  *load*-584088> nil "/home/arch/.emacs.d/.local/straight/build/org-ro..." nil t)  ; Reading at buffer position 1800
  load-with-code-conversion("/home/arch/.emacs.d/.local/straight/build/org-ro..." "/home/arch/.emacs.d/.local/straight/build/org-ro..." nil t)
  require(orb-note-actions)
  #<subr eval-buffer>(#<buffer  *load*-283384> nil "/home/arch/.emacs.d/.local/straight/build/org-ro..." nil t)
  apply(#<subr eval-buffer> (#<buffer  *load*-283384> nil "/home/arch/.emacs.d/.local/straight/build/org-ro..." nil t))
  eval-buffer(#<buffer  *load*-283384> nil "/home/arch/.emacs.d/.local/straight/build/org-ro..." nil t)  ; Reading at buffer position 3240
  load-with-code-conversion("/home/arch/.emacs.d/.local/straight/build/org-ro..." "/home/arch/.emacs.d/.local/straight/build/org-ro..." nil t)
  require(org-roam-bibtex)
  #<subr eval-buffer>(#<buffer  *load*-746175> nil "/home/arch/.emacs.d/.local/straight/build/org-ro..." nil t)
  apply(#<subr eval-buffer> (#<buffer  *load*-746175> nil "/home/arch/.emacs.d/.local/straight/build/org-ro..." nil t))
  eval-buffer(#<buffer  *load*-746175> nil "/home/arch/.emacs.d/.local/straight/build/org-ro..." nil t)  ; Reading at buffer position 1800
  load-with-code-conversion("/home/arch/.emacs.d/.local/straight/build/org-ro..." "/home/arch/.emacs.d/.local/straight/build/org-ro..." nil t)
  require(orb-note-actions)
  #<subr eval-buffer>(#<buffer  *load*> nil "/home/arch/.emacs.d/.local/straight/build/org-ro..." nil t)
  apply(#<subr eval-buffer> (#<buffer  *load*> nil "/home/arch/.emacs.d/.local/straight/build/org-ro..." nil t))
  eval-buffer(#<buffer  *load*> nil "/home/arch/.emacs.d/.local/straight/build/org-ro..." nil t)  ; Reading at buffer position 3240
  load-with-code-conversion("/home/arch/.emacs.d/.local/straight/build/org-ro..." "/home/arch/.emacs.d/.local/straight/build/org-ro..." nil t)
  command-execute(orb-find-non-ref-file record)
  counsel-M-x-action("orb-find-non-ref-file")
  ivy-call()
  ivy-read("M-x " ("toggle-debug-on-error" "orb-note-actions" "orb-find-non-ref-file" "orb-insert-non-ref" "org-roam-bibtex-mode" "org-ref-help" "org-ref" "ivy-bibtex" "doc-view-mode" "org-bibtex-write" "doi-insert-bibtex" "ivy-bibtex-with-local-bibliography" "eglot" "lsp-mode" "bibtex-url" "bibtex-yank" "eglot-format" "org-bibtex-read-buffer" "biblio--selection-insert" "org-roam-bibtex-find-non-ref-file" "R" "cd" "jb" "5x5" "SAS" "amx" "arp" "dbx" "dig" "erc" "ert" "eww" "ftp" "gdb" "irc" "jdb" "lsp" "man" "mpc" "orc" "orn" "oro" "orp" "oru" "pdb" "pwd" "rsh" "sdb" "wos" "xdb" ...) :predicate #f(compiled-function (x) #<bytecode 0xa5624ab57773cf>) :require-match t :history counsel-M-x-history :action counsel-M-x-action :keymap (keymap (67108908 . counsel--info-lookup-symbol) (67108910 . counsel-find-symbol)) :initial-input nil :caller counsel-M-x)
  counsel-M-x()
  funcall-interactively(counsel-M-x)
  command-execute(counsel-M-x)

Additional information that might help: I'm currently running DOOM Emacs, and am on GNU Emacs 28.0.50.

how to modify my own file name

When setting my own bib notes' file name, i set
"orb-templates
'(("r" "ref" plain (function org-roam-capture--get-point)
""
:file-name "${slug}-${title}"
:head "#+TITLE: ${title}\n#+ROAM_KEY: ${ref}"
and then i get an example of "jack2020complex-The Community Structure of Complex Networks.org".
How should I do if i want replace the space in the paper title with slash and lowercase all the words?

failed to define function orb-note-actions

I add the following code in at the end of my .doom.d/init.el file

(use-package org-roam-bibtex
  :hook (org-roam-mode . org-roam-bibtex-mode)
  :bind (:map org-mode-map
         (("C-c n a" . orb-note-actions))))

Running M-x orb-note-actions and I get the following error
failed to define function orb-note-actions

Aside:
When i install orb with package-list, it shows 2 files ignored.

Weird error after upgrade doom-emacs

I upgraded doom-emacs to this point today.

When I restarted emacs, none SPC key worked and everything is blocked. Before the upgrade everything was fine.

I restarted with --debug-init option, and I got this output.

Debugger entered--Lisp error: (void-variable bibtex-completion-find-note-functions)
  (member (function orb-find-note-file) bibtex-completion-find-note-functions)
  (if (member (function orb-find-note-file) bibtex-completion-find-note-functions) bibtex-completion-find-note-functions (setq bibtex-completion-find-note-functions (cons (function orb-find-note-file) bibtex-completion-find-note-functions)))
  (closure ((last-message . #("DOOM [editor/evil] Initialized evil-collection-flymake (too early!)" 0 5 (face font-lock-comment-face) 5 19 (face warning))) (arg) org-ref-notes-function bibtex-completion-find-note-functions t) nil (if (member (function orb-find-note-file) bibtex-completion-find-note-functions) bibtex-completion-find-note-functions (setq bibtex-completion-find-note-functions (cons (function orb-find-note-file) bibtex-completion-find-note-functions))) (advice-add (quote bibtex-completion-edit-notes) :override (function orb-edit-notes-ad)))()
  eval-after-load(bibtex-completion (closure ((last-message . #("DOOM [editor/evil] Initialized evil-collection-flymake (too early!)" 0 5 (face font-lock-comment-face) 5 19 (face warning))) (arg) org-ref-notes-function bibtex-completion-find-note-functions t) nil (if (member (function orb-find-note-file) bibtex-completion-find-note-functions) bibtex-completion-find-note-functions (setq bibtex-completion-find-note-functions (cons (function orb-find-note-file) bibtex-completion-find-note-functions))) (advice-add (quote bibtex-completion-edit-notes) :override (function orb-edit-notes-ad))))
  (cond (org-roam-bibtex-mode (setq org-ref-notes-function (quote orb-notes-fn)) (eval-after-load (quote bibtex-completion) (function (lambda nil (if (member (function orb-find-note-file) bibtex-completion-find-note-functions) bibtex-completion-find-note-functions (setq bibtex-completion-find-note-functions (cons ... bibtex-completion-find-note-functions))) (advice-add (quote bibtex-completion-edit-notes) :override (function orb-edit-notes-ad)))))) (t (setq org-ref-notes-function (quote org-ref-notes-function-one-file)) (eval-after-load (quote bibtex-completion) (function (lambda nil (setq bibtex-completion-find-note-functions (delq (function orb-find-note-file) bibtex-completion-find-note-functions)) (advice-remove (quote bibtex-completion-edit-notes) (function orb-edit-notes-ad)))))))
  (let ((last-message (current-message))) (setq-default org-roam-bibtex-mode (if (eq arg (quote toggle)) (not (default-value (quote org-roam-bibtex-mode))) (> (prefix-numeric-value arg) 0))) (cond (org-roam-bibtex-mode (setq org-ref-notes-function (quote orb-notes-fn)) (eval-after-load (quote bibtex-completion) (function (lambda nil (if (member ... bibtex-completion-find-note-functions) bibtex-completion-find-note-functions (setq bibtex-completion-find-note-functions ...)) (advice-add (quote bibtex-completion-edit-notes) :override (function orb-edit-notes-ad)))))) (t (setq org-ref-notes-function (quote org-ref-notes-function-one-file)) (eval-after-load (quote bibtex-completion) (function (lambda nil (setq bibtex-completion-find-note-functions (delq ... bibtex-completion-find-note-functions)) (advice-remove (quote bibtex-completion-edit-notes) (function orb-edit-notes-ad))))))) (run-hooks (quote org-roam-bibtex-mode-hook) (if (default-value (quote org-roam-bibtex-mode)) (quote org-roam-bibtex-mode-on-hook) (quote org-roam-bibtex-mode-off-hook))) (if (called-interactively-p (quote any)) (progn (customize-mark-as-set (quote org-roam-bibtex-mode)) (if (and (current-message) (not (equal last-message (current-message)))) nil (let ((local "")) (message "Org-Roam-Bibtex mode %sabled%s" (if (default-value ...) "en" "dis") local))))))
  org-roam-bibtex-mode()
  run-hooks(org-roam-mode-hook org-roam-mode-on-hook)
  (let ((last-message (current-message))) (setq-default org-roam-mode (if (eq arg (quote toggle)) (not (default-value (quote org-roam-mode))) (> (prefix-numeric-value arg) 0))) (cond (org-roam-mode (if (or (file-executable-p emacsql-sqlite3-executable) (executable-find "sqlite3")) nil (lwarn (quote (org-roam)) :error "Cannot find executable 'sqlite3'. Ensure it is installed and can be found within `exec-path'. M-x info for more information at Org-roam > Installation > Post-Installation Tasks.")) (add-to-list (quote org-execute-file-search-functions) (quote org-roam--execute-file-row-col)) (add-hook (quote find-file-hook) (function org-roam--find-file-hook-function)) (add-hook (quote kill-emacs-hook) (function org-roam-db--close-all)) (add-hook (quote org-open-at-point-functions) (function org-roam-open-id-at-point)) (advice-add (quote rename-file) :after (function org-roam--rename-file-advice)) (advice-add (quote delete-file) :before (function org-roam--delete-file-advice)) (org-roam-db-build-cache)) (t (setq org-execute-file-search-functions (delete (quote org-roam--execute-file-row-col) org-execute-file-search-functions)) (remove-hook (quote find-file-hook) (function org-roam--find-file-hook-function)) (remove-hook (quote kill-emacs-hook) (function org-roam-db--close-all)) (remove-hook (quote org-open-at-point-functions) (function org-roam-open-id-at-point)) (advice-remove (quote rename-file) (function org-roam--rename-file-advice)) (advice-remove (quote delete-file) (function org-roam--delete-file-advice)) (org-roam-db--close-all) (let ((--dolist-tail-- (org-roam--get-roam-buffers))) (while --dolist-tail-- (let ((buf ...)) (save-current-buffer (set-buffer buf) (org-link-set-parameters "file" :face ...) (remove-hook ... ... t) (remove-hook ... ... t)) (setq --dolist-tail-- (cdr --dolist-tail--))))))) (run-hooks (quote org-roam-mode-hook) (if (default-value (quote org-roam-mode)) (quote org-roam-mode-on-hook) (quote org-roam-mode-off-hook))) (if (called-interactively-p (quote any)) (progn (customize-mark-as-set (quote org-roam-mode)) (if (and (current-message) (not (equal last-message (current-message)))) nil (let ((local "")) (message "Org-Roam mode %sabled%s" (if (default-value ...) "en" "dis") local))))))
  org-roam-mode()
  run-hooks(after-init-hook delayed-warnings-hook)
  command-line()
  normal-top-level()

Some extra info here

emacs   version    26.3
        features   XPM JPEG TIFF GIF PNG RSVG IMAGEMAGICK SOUND DBUS GSETTINGS GLIB NOTIFY ACL LIBSELINUX GNUTLS LIBXML2 FREETYPE M17N_FLT LIBOTF XFT ZLIB TOOLKIT_SCROLL_BARS GTK3 X11 XDBE XIM MODULES THREADS XWIDGETS LIBSYSTEMD
        build      Jun 18, 2020
        buildopts  (--disable-build-details --with-pop --without-hesiod --with-gameuser=:games --with-kerberos --with-kerberos5 --with-file-notification=inotify --with-modules --enable-autodepend --prefix=/usr --mandir=/usr/share/man --infodir=/usr/share/info --datadir=/usr/share --localstatedir=/var --sharedstatedir=/var/lib --libexecdir=/usr/lib --enable-locallisppath=/usr/share/emacs/26.3/site-lisp:/usr/share/emacs/site-lisp --with-x --with-xim --with-sound --with-xpm --with-jpeg --with-tiff --with-gif --with-png --with-rsvg --with-dbus --with-xft --without-gpm --with-x-toolkit=gtk3 --with-toolkit-scroll-bars --x-includes=/usr/include --x-libraries=/usr/lib64 --with-libotf --with-m17n-flt --with-xwidgets --build=x86_64-suse-linux 'CFLAGS=-fmessage-length=0 -grecord-gcc-switches -O2 -Wall -D_FORTIFY_SOURCE=2 -fstack-protector-strong -funwind-tables -fasynchronous-unwind-tables -fstack-clash-protection -g -D_GNU_SOURCE -DGDK_DISABLE_DEPRECATION_WARNINGS -DGLIB_DISABLE_DEPRECATION_WARNINGS -pipe -Wno-pointer-sign -Wno-unused-variable -Wno-unused-label -fno-optimize-sibling-calls -fno-PIE -DSYSTEM_PURESIZE_EXTRA=55000 	 -DSITELOAD_PURESIZE_EXTRA=10000 ' LDFLAGS=-Wl,-O2)
        windowsys  x
        daemonp    server-running
doom    version    2.0.9
        build      HEAD -> develop 39bb3aa72 2020-06-17 14:39:36 -0400
        dir        ~/.doom.d/
system  type       gnu/linux
        config     x86_64-suse-linux-gnu
        shell      /bin/bash
        uname      Linux 4.12.14-lp151.28.48-default #1 SMP Fri Apr 17 05:38:36 UTC 2020 (18849d1) x86_64
        path       (~/bin /usr/local/bin /usr/bin /bin /snap/bin ~/.fzf/bin /usr/lib/emacs/26.3/x86_64-suse-linux/)
config  envfile    envvar-file
        elc-files  0
        modules    (:completion company helm ivy :ui deft doom doom-dashboard fill-column hl-todo minimap modeline nav-flash ophints (popup +defaults) tabs vc-gutter vi-tilde-fringe workspaces zen :editor (evil +everywhere) file-templates fold snippets :emacs dired electric undo vc :checkers syntax spell grammar :tools biblio (eval +overlay) lookup magit pdf :lang emacs-lisp ess (latex +latexmk +cdlatex +fold) markdown (org +pomodoro +roam +dragndrop +noter) python sh :app calendar :config (default +bindings +smartparens))
        packages   ((emacsql-sqlite3) (org-roam-bibtex) (org-roam-server) (polymode) (poly-R) (ess-view) (minions) (beacon))
        unpin      (n/a)
        elpa       (polymode poly-noweb poly-markdown poly-R markdown-mode)

Thanks for the help.

Duplicate Ref Warnings

I just updated to the latest org-roam and org-roam-bibtex, the rebuilt my DB.

Upon building, I see:

Error (org-roam): Duplicate ref Dawson_Elli_2018 in:

A: /home/dan/Sync/org-roam/Dawson_Elli_2018.org
B: /home/dan/Sync/org-roam/Dawson_Elli_2018.org

skipping...
Error (org-roam): Duplicate ref Li_2016 in:

A: /home/dan/Sync/org-roam/Li_2016.org
B: /home/dan/Sync/org-roam/Li_2016.org

...

This warning seems to be triggered by all of my ref file.s

Potentially related: the completion for org-roam-insert and org-roam-find-file are now showing me duplicate completion entries for every file.

Citing a webpage

Is there any workaround for citing a webpage with org-roam-bibtex?

For now, I could use this web service to generate a bibtex citation of a web page.

Thanks!

Unable to choose template for bibtex entries with no file

Hello,

I am unable to choose a template for bibtex entries that don't have a file field. I am able to choose templates for bibtex entries that have a file field.

I have three templates set up, one for journal articles, one for ebooks, and one for physical books. It seems like org-roam-bibtex is choosing my ref-science template, and failing because there is no file field. I would prefer to choose my paper books template.

Here are my templates:

`(setq orb-templates
'(("r" "ref-science" plain (function org-roam-capture--get-point)
""
:file-name "${citekey}"
:head "#+TITLE: ${citekey}: ${title}\n#+ROAM_KEY: ${ref}

  • tags ::
  • keywords :: ${keywords}
  • ${title}
    :PROPERTIES:
    :Custom_ID: ${citekey}
    :URL: ${url}
    :AUTHOR: ${author-or-editor}
    :NOTER_DOCUMENT: ${file}
    :NOTER_PAGE:
    :END:")
    ;;template for ebooks
    ("b" "ebooks" plain (function org-roam-capture--get-point)
    ""
    :file-name "${citekey}-${slug}"
    :head "#+TITLE: ${author-or-editor}: ${title}\n#+ROAM_KEY: ${ref}
  • tags ::
  • keywords :: ${keywords}
  • ${title}
    :PROPERTIES:
    :Custom_ID: ${citekey}
    :URL: ${url}
    :AUTHOR: ${author-or-editor}
    :NOTER_DOCUMENT: ${file}
    :NOTER_PAGE:
    :END:")
    ;; template for paper books
    ("p" "paper books" plain (function org-roam-capture--get-point)
    ""
    :file-name "${citekey}-${slug}"
    :head "#+TITLE: ${author-or-editor}: ${title}\n#+ROAM_KEY: ${ref}
  • tags ::
  • keywords :: ${keywords}")
    ))
    ) `

Here is an example bibtex entry that does not work:

@book{crononChangesLandIndians2003,
title = {Changes in the {{Land}}: {{Indians}}, {{Colonists}}, and the {{Ecology}} of {{New England}}},
shorttitle = {Changes in the {{Land}}},
author = {Cronon, William},
date = {2003-09-01},
edition = {Revised Edition},
publisher = {{Hill and Wang}},
location = {{New York}},
isbn = {978-0-8090-1634-1},
langid = {english},
pagetotal = {284}

Here is the debug error:
Debugger entered--Lisp error: (void-function nil)
nil("${file}")
replace-regexp-in-string("\${file}" nil "#+TITLE: ${citekey}: Changes in the Land: Indians,..." t t)
s-replace("${file}" nil "#+TITLE: ${citekey}: Changes in the Land: Indians,...")
orb--preformat-template(("r" "ref-science" plain #'org-roam-capture--get-point "" :file-name "${citekey}" :head "#+TITLE: ${citekey}: Changes in the Land: Indians,...") (("=key=" . "crononChangesLandIndians2003") ("=type=" . "book") ("title" . "Changes in the {{Land}}: {{Indians}}, {{Colonists}...") ("shorttitle" . "Changes in the {{Land}}") ("author" . "Cronon, William") ("date" . "2003-09-01") ("edition" . "Revised Edition") ("publisher" . "{Hill and Wang}") ("location" . "{New York}") ("abstract" . "The book that launched environmental history now u...") ("isbn" . "978-0-8090-1634-1") ("langid" . "english") ("pagetotal" . "284")))
orb-edit-notes("crononChangesLandIndians2003")
orb-edit-notes-ad(("crononChangesLandIndians2003"))
apply(orb-edit-notes-ad ("crononChangesLandIndians2003"))
bibtex-completion-edit-notes(("crononChangesLandIndians2003"))
ivy-bibtex-edit-notes(("2003-09-01 Cronon, William Changes in the Land: In..." ("date" . "2003-09-01") ("author" . "Cronon, William") ("title" . "Changes in the {{Land}}: {{Indians}}, {{Colonists}...") ("=type=" . "book") ("=key=" . "crononChangesLandIndians2003")))
ivy-call()

What am I missing here? Thanks!

Coding style for org-roam-bibtex

@zaeph
There are a couple of general emacs-lisp style guides, most notably the official one:
https://www.gnu.org/software/emacs/manual/html_node/elisp/Coding-Conventions.html
and another one here:
https://github.com/bbatsov/emacs-lisp-style-guide

I would suggest we adhere to the guidelines outlined in the above resources. Which we seem to have been doing so far anyway.

I have started this issue, however, with subtler matters in mind, which it seems did not make it into the guides, and which will likely arise in the development process.

In the recent commit 715083d I have introduced .dir-locals.el and also a file-local variables section at the bottom of org-roam-bibtex.el.

So far, sentence-end-double-space is set to t as a top-directory variable (Emacs default). It seems my Emacs installation has it set to nil and I have constantly been messing up the spaces in the doc-strings - I would like to apologise for that.

I also set fill-column to 70 , which is Emacs default, as a file-local variable.

If you have other preferences, please feel free to change these and other relevant variables to your liking. I care as much as to keep the things coherent, the actual values being of lesser importance.

Shorter prefix for org-roam-bibtex

@zaeph I find the symbol names tend to become increasingly cumbersome as new functionality is added, such as note actions.

I'm now staring at newly invented org-roam-bibtex-note-actions-noter-heading-format variable and do not like it at all.

My suggestion here is to keep org-roam-bibtex namespace prefix for the main library org-roam-bibtex.el and to abbreviate it to orb for org-roam-bibtex-note-actions.el and any new libraries yet to come.

Is there a way to use `bibtex-generate-autokey` or `org-ref-clean-bibtex-entry` to generate the key for a bib entry?

Thanks for the nice package! It works like a charm, and solves my problem of inputting bibtex entries for a paper that I read.

By default, org-ref uses bibtex-generate-autokey to generate the key for a bib entry. For example, when downloading via doi-utils or arxiv-add-bibtex-entry. This function (or its father org-ref-clean-bibtex-entry) is much smarter (sanitizing symbols and accents, capitalize title, report when duplication is found, ignore meaningless words like "the", "a", "Die", etc.) and is very configurable. In order to make the keys consistent with those generated by org-ref, it would be much better to either reuse org-ref-clean-bibtex-entry, or provide some way to use org-ref-clean-bibtex-entry instead of orb-autokey-generate-key. The input for the two functions are different. One problem is that the former has no parameters, reads from around (point), and returns nothing (bibtex-generate-autokey` does return the key though). The latter seems to take in a union of fields, and returns a key.

minor suggestion on git commits, history

Having just learned a bit about this myself, it occurs to me you might look into git rebase to consolidate some of the commits into a cleaner history.

Much of this could be rebased into a single "update docs ..." commit, for example.

Screenshot from 2020-04-19 13-12-19

This will likely become more important as the package gets released on MELPA, and more people are using it?

Symbol’s function definition is void: org-roam-capture--find-file-h

Description

At various points I get one of the following errors. Either:

run-hooks: Symbol’s function definition is void: org-roam-capture--find-file-h

or

user-error: Symbol’s function definition is void: org-roam-capture--find-file-h. Please adjust ‘org-roam-capture-templates’

It seems the function org-roam-capture--find-file-h does not exist. It appears this non-existent function is added to org-capture-after-finalize-hook on line 536 of org-roam-bibtex.el version 0.2.3.

What is the recommended fix for this issue?

Steps to Reproduce

The first error message appears when I try to Edit Notes in the helm-bibtex interface for a reference which does not yet have a notes file created for it. The second happens when I org-roam-insert-immediate a note that does not yet exist.

Backtrace

I tried to toggle-debug-on-error; however, it appears that the above issues do not qualify as "errors". I tried using debug-on-entry instead, and the best I could get was:

Debugger entered--returning value: (org-roam-capture--finalize org-roam-capture--find-file-h)
  default-value(org-capture-after-finalize-hook)
* remove-hook(org-capture-after-finalize-hook org-roam-capture--finalize)
* #f(compiled-function () #<bytecode 0x438cff71>)()
* apply(#f(compiled-function () #<bytecode 0x438cff71>) nil)
* org-roam-capture--finalize()
  run-hooks(org-capture-after-finalize-hook)
  #f(compiled-function (&optional stay-with-capture) "Finalize the capture process.\nWith prefix argument STAY-WITH-CAPTURE, jump to the location of the\ncaptured item after finalizing." (interactive "P") #<bytecode 0x4b233055>)()
  apply(#f(compiled-function (&optional stay-with-capture) "Finalize the capture process.\nWith prefix argument STAY-WITH-CAPTURE, jump to the location of the\ncaptured item after finalizing." (interactive "P") #<bytecode 0x4b233055>) nil)
  org-capture-finalize()
  org-capture(nil "d")
  org-roam-capture--capture()
  org-roam-insert(nil)
  apply(org-roam-insert nil)
  org-roam-insert-immediate(nil)
  funcall-interactively(org-roam-insert-immediate nil)
  #<subr call-interactively>(org-roam-insert-immediate nil nil)
  apply(#<subr call-interactively> org-roam-insert-immediate (nil nil))
  call-interactively@ido-cr+-record-current-command(#<subr call-interactively> org-roam-insert-immediate nil nil)
  apply(call-interactively@ido-cr+-record-current-command #<subr call-interactively> (org-roam-insert-immediate nil nil))
  call-interactively(org-roam-insert-immediate nil nil)
  command-execute(org-roam-insert-immediate)

Environment

  • Emacs: GNU Emacs 26.3 (build 1, x86_64-apple-darwin18.2.0, NS appkit-1671.20 Version 10.14.3 (Build 18D109))
    of 2019-09-02
  • Framework: N/A
  • Org: Org mode version 9.3.6 (9.3.6-elpa @ /Users/aberk/.emacs.d/elpa/org-9.3.6/)
  • Org-roam: 1.2.1

Symbol's function definition is void: org-roam-capture--capture

I am using both org-roam and org-roam-bibtex from MELPA on Spacemacs, installed by adding them to dotspacemacs-additional-packages and configuring things inside dotspacemacs/user-config.
org-roam works fine on it's own, but I am unable to open notes with org-roam-bibtex, due to

Symbol's function definition is void: org-roam-capture--capture

I saw on the org-roam github, that the master branch does indeed contain a org-roam-capture--capture function. Could it be that the org-roam-bibtex version on MELPA uses functionality, that the org-roam version on MELPA does not yet provide (and thus requires users to install org-roam through github)? If not, how can I fix this issue?

Can't save pdf annotaion if call org-noter from org-roam notes

Procedure to reproduce:

  1. call helm-bibtex or ivy-bibtex then use the 'Edit notes' option to create a org-roam note
  2. call org-noter in this note buffer, this open a pdf window
  3. create a annotation ie. a highlight or a text annotation
  4. save the pdf buffer and the org buffer, then quit those buffer
  5. re-open the pdf file, and.... no annotation is there 🤣 , no annotation is actually saved..

I am using the msys2 version of emacs 27.1 in a windows 10 box . Making annotation works with pdf-tools or even pdf-tool + org-noter but without ORB, this bug only happens when I launch org-noter from the org-roam notes buffer.

Also if I call revert-buffer after create annotation the annotation will be actually saved, next time I open the file the annotations will be where I created them.

Add examples on how to modify fields (e.g. for Menderley's BibTeX field for files)

I was asked by @brianmcgillion on IRC to provide a working implementation to translate Menderley's BibTeX field for files.

Here's a prototype that works when your entire BibTeX file is generated via Menderley:

(use-package org-roam-bibtex
  :after (org-ref)
  :custom
  (org-roam-bibtex-preformat-keywords
   '("=key=" "title" "url" "file" "author-or-editor"))
  (org-roam-bibtex-template
   '(("r" "ref" plain (function org-roam-capture--get-point) ""
      :file-name "${slug}"
      :head "#+TITLE: ${=key=}: ${title}\n#+ROAM_KEY: ${ref}

- tags ::

* ${title}
:PROPERTIES:
:Custom_ID: ${=key=}
:URL: ${url}
:AUTHOR: ${author-or-editor}
:NOTER_DOCUMENT: %(menderley-process-file-field \"${file}\")
:NOTER_PAGE:
:END:\n\n"
      :unnarrowed t)))
  :config
  (defun menderley-make-file-alist (str)
    "Return an alist cons cell with information on files.
The cons cell are of the form \(extension . path\)."
    (let (path)
      (with-temp-buffer
        (insert str)
        (goto-char (point-min))
        ;; Fix beginning
        (replace-regexp "^:\\(.*?\\)/" "/\\1/")
        ;; Fix ending
        (replace-regexp ":.*?$" "")
        (setq path (buffer-string))
        (cons (file-name-nondirectory path) path))))

  (defun menderley-process-file-field (string)
    "Process the ‘file’ BibTeX field as formatted by Menderley."
    (let* ((str-split (s-split ";" string))
           (candidates
            (mapcar #'menderley-make-file-alist
                    str-split)))
      (if (equal 1 (length candidates))
          (cdar candidates)
        (cdr (assoc (completing-read "File-type to use: " candidates)
                    candidates)))))

  (org-roam-bibtex-mode))

The key is in using org-capture's sexp expansion via %(…), which allows us to run functions taking as input BibTeX fields. Then, the user only needs to write functions to process those strings.

It'd be nice if we could write an explanation of this behaviour in README.md, especially to highlight the order of expansion between BibTeX-expansion and org-capture-expansion. We need to make it clear that people can act on those fields rather than just inserting them.

Error when creating a note with `author-or-editor` set for preformatting and `author` and `editor` fields missing from BibTeX entry

Hi,

As proposed by @myshevchuk here, i open a ticket for a change in orb-preformat-keywords.

The idea would be to not require the "author" and "editor" fields for online entries in a bibtex file. When you keep a web page with Zotero it often has no information in these two fields, which prevents you from creating a note and produces an error message.

“Cannot resolve a template to values”

Preserve case when creating file name for notes

I saw that the notes file created by org-roam-bibtex-edit-notes uses the lower-case version of the bibtex key + .org. Preserving the case might be better because that would allow helm/ivy-bibtex to find the notes by simply setting bibtex-completion-notes-path to org-roam-directory.

cite note links forced to lowercase

When I make a new paper citation note, org-roam (or org-roam-bibtex?) names the file after the bibtex citekey -- this is almost exactly what I want, except that the filename is all lower case.

For example, org-roam has made a note file named

hobbs19ramprsrvprobsolar.org

when the citekey was

Hobbs19rampRsrvProbSolar

This makes the filename hard to read when viewed in a dired buffer, and in other places. Can the citation case be preserved?

This is with org-roam-version 1.1.1 (updated today) and GNU Emacs 26.3 (build 1, x86_64-w64-mingw32) of 2019-08-29.

Here are the note file contents:

#+TITLE: Hobbs19rampRsrvProbSolar: Coordinated Ramping Product and Regulation Reserve Procurements in CAISO and MISO using Multi-Scale Probabilistic Solar Power Forecasts (Pro2R)
#+ROAM_KEY: cite:Hobbs19rampRsrvProbSolar

- tags ::
- keywords :: 
* org-roam metadata
:PROPERTIES:
:NOTER_DOCUMENT: c:/Users/scott/papers/Hobbs19rampRsrvProbSolar.pdf
:NOTER_PAGE: 1
:END:
*** a note
    :PROPERTIES:
    :NOTER_PAGE: 1
    :NOTER_DOCUMENT: c:/Users/scott/papers/Hobbs19rampRsrvProbSolar.pdf
    :NOTER_AUTO_SAVE_LAST_LOCATION: nil
    :END:

* Notes

allow subdir configuration for bib notes

This is a followup to this back-and-forth.

This makes me wonder: could/should not org-roam-bibtex use the bibtex-completion-notes-path variable if it's set?

I started to draft a new config file for my doom installation based on some in-progress work (namely a new biblio module), and I realized that, at least in how I was doing this, I have some unnecessary duplication (the same org-roam subdirectory set in three different places).

Hide actions when they're not available in `orb-note-actions`

It might be better to hide the actions which are not available with the current file when running orb-note-actions.

For instance, if a file does not have a PDF, it should probably not show you the option. Another option might be to change the completion-string for that action to something that indicates that a PDF is not present.

update docs

Great to see this!

I know the transition is still in process (you need to update the instructions at top of the el file, and incorporate them into the readme, for example), but can you let me know when ready to test, and you are looking for feedback?

Packaging of dependencies

I factorered out bibtex-completion from helm-bibtex when ivy became a thing but never made it its own package as there was not really a need for that. Do I understand correctly that org-roam-bibtex would benefit from a separate bibtex-completion package? This could easily be done if necessary.

Offer migration paths for existing notes

I imagine many prospective users of this package already have notes in one of the two formats offered by helm-bibtex or some other format. Is there something that could be offered to these users to make the transition easier? Doesn't have to be a part of the package; some hints and sample code in README.org would go a long way.

Cannot open load file: No such file or directory, org-roam-bibtex

Steps to reproduce:

  1. Use following config
;; Roam Research Emacs
(use-package org-roam
  :ensure t
  :hook
  (after-init . org-roam-mode)
  :custom
  (org-roam-directory "~/Org/slipbox/")
  :bind (:map org-roam-mode-map
	      (("C-c n l" . org-roam)
               ("C-c n f" . org-roam-find-file)
               ("C-c n g" . org-roam-graph))
              :map org-mode-map
              (("C-c n i" . org-roam-insert))
              (("C-c n I" . org-roam-insert-immediate))))

;; Allows for Org-roam to display in a web browser
(use-package org-roam-server
  :ensure t
  :config
  (setq org-roam-server-host "127.0.0.1"
        org-roam-server-port 8080
        org-roam-server-authenticate nil
        org-roam-server-export-inline-images t
        org-roam-server-serve-files nil
        org-roam-server-served-file-extensions '("pdf" "mp4" "ogv")
        org-roam-server-network-poll t
        org-roam-server-network-arrows nil
        org-roam-server-network-label-truncate t
        org-roam-server-network-label-truncate-length 60
        org-roam-server-network-label-wrap-length 20))

;; Add bibliography and bibliographical notes to Org Roam
(use-package org-roam-bibtex
  :hook (org-roam-mode . org-roam-bibtex-mode)
  :bind (:map org-mode-map
              (("C-c n a" . orb-note-actions)))
  :config
  (setq orb-performat-keywords
	'("=key=" "title" "url" "file" "author-or-editor" "keywords"))
  (setq orb-templates
        '(("r" "ref" plain (function org-roam-capture--get-point)
           ""
           :file-name "literature/%<%Y-%m-%d-%H-%M-%S>-${slug}"
           :head "#+TITLE: ${=key=}: ${title}
                  #+ROAM_KEY: ${ref}
                  #+ROAM_TAGS:
                  Time-stamp: <>
                  - tags :: ${keywords}

                  * ${title}
                  :PROPERTIES:
                  :Custom_ID: ${=key=}
                  :URL: ${url}
                  :AUTHOR: ${author-or-editor}
                  :NOTER_DOCUMENT: %(orb-process-file-field \"${=key=}\")
                  :NOTER_PAGE:
                  :END:"
       :unnarrowed t))))

(use-package company-org-roam
  :ensure t
  :config
  (push 'company-org-roam company-backends))
(provide 'init-orgroam)
  1. M-x org-roam-bibtex-mode

  2. output error:
    Cannot open load file: No such file or directory, org-roam-bibtex

I've been looking for a variable called org-roam-bibtex in the docs and the source code but it's just the name of the package right?
I can't figure out where the error is coming from.

Enhance description of package in README.org

Users of plain helm/ivy-bibtex (and perhaps org-ref, not sure) might wonder what this package gives them that they wouldn't get from just setting bibtex-completion-notes-path to the value of org-roam-directory.

Vritual BibTeX field "author-abbrev" doesn't work in capture template

This field contains an abbreviated version of the authors, e.g. "Doe et al.".

Haven' tested but I suppose author-or-editor doesn't work either.

I don't fully understand how the template is filled but perhaps you could follow the approach used in bibtex-completion-fill-template. This would make all fields, virtual or not, available for use in capture templates.

Side note: I saw this use of s-format in two places:

(s-format "${title}" 'bibtex-completion-apa-get-value entry)

This should be equivalent to:

(bibtex-completion-apa-get-value "title" entry)

annotated bibliographies?

I saw someone mention this use case online, and it made me wonder: how would one do an annotated bibliography with an ORB system?

Maybe fodder for wiki content at some point, or some feature addition; in either case using something like this (though here the annotations are in one org file)?

https://github.com/tsdye/org-bib-template

Cannot use :head (concat ...) in org-roam-bibtex-template

Hi,

First of all, thanks for this package. It works wonderfully for me :)

I would like to use concat for make the :head part of org-roam-bibtex-template more readable as shown below.

  (setq org-roam-bibtex-template
        '(("r" "ref" plain (function org-roam-capture--get-point) ""
           :file-name "${=key=}"
           :head (concat "#+TITLE: ${=key=}: ${title}\n"
                         "#+ROAM_KEY: ${ref}\n"
                         "- tags ::\n"
           :unnarrowed t)))

When I do so, I have the following error:

replace-regexp-in-string("\\${=key=}" "schulte12_multi_languag_comput_envir_liter" (concat "#+TITLE: ${=key=}: ${title}") t t)

It seems it does not "expand" the concat before doing the regex.
I am an elisp-beginner so I guess I did something stupid...

Support with BibLatex?

Hello,

I'm about to write a thesis, and would like to make my latex workflow and org-roam workflow as alike as possible. It seems that in latex people gradually migrate to biblatex, since it provides more flexible citing options. I'm curious if org-roam-bibtex does/will support that?

If that's not the case, I might confine myself to using bibtex.. Thank you!

Option to prefer pdf when running orb-process-file-field

I create my .bib-file using Zotero. Zotero automatically takes snapshots of the webpage i'm capturing the resource from and the Better BibLaTeX-extension for Zotero adds both to the file-field in the .bib-file.

I think this behavior is favorable over not exporting the resulting html-file to the .bib-file or not storing the snapshot at all, however i'm a bit annoyed of having to choose the pdf-file now, everytime i create a new notes-file using the following template:

("n" "ref + noter" plain
           (function org-roam-capture--get-point)
           ""
           :file-name "${citekey}"
           :head ,(s-join "\n"
                          (list
                           (concat "#+TITLE: " orb-title-format)
                           "#+ROAM_KEY: ${ref}"
                           ""
                           "- tags :: "
                           ""
                           "* Notes :noter:"
                           ":PROPERTIES:"
                           ":NOTER_DOCUMENT: %(orb-process-file-field \"${citekey}\")"
                           ":NOTER_PAGE:"
                           ":END:"
                           "")))

Could there be an option to prefer the pdf? Or is there a simple workaround i can utilize?

Make `org-roam-bibtex-templates` more user-friendly

As discussed in #16, org-roam-bibtex-templates and org-roam-capture-templates share the same syntax, so much so that, at an early stage, we only used capture to generate the templates.

Now that the codebase has evolved a bit, we might want to change the format to make it a little straightforward. Some of the elements in the list seems redundant (notably the 5th positional and :head), yet the expansion is not handled the same between them.

@myshevchuk suggested that we do some extra stuff in the background to make it more straightforward.

Don't have the time to tackle this right now, but I should have more time next week.

Improve the video demonstration

a337496 added a commented video demonstration to README.md to make it easier to demonstrate some of the features of ORB.

I've done it late at night yesterday with little to no preparation, and it shows, but it's more of a proof of concept than the final version.

Some notes on the recording:

  • I haven't made it clear what ORB actually does: I should have laid more emphasis on the template expansion we provide on top of Org-roam's, which is prob ably our main feature.
  • It's more of a demonstration on how to do research in Emacs/Org-mode than it is a demonstration of ORB.
  • It's long: I should aim for < 5 min to keep it short and sweet.
  • A lot of rambling, which muddles up the argument.
  • Presentation at the start was a good idea, but should have been carried through the entire demonstration.
  • Even if I comment as I do, it wouldn't hurt to have a side-window opened with key-bindings and the commands which they run.
  • Haphazard demonstration of Org-roam which would just be confusing for people with no knowledge of it.
  • Rhythm was rushed, and the diction was inarticulate at times. Also, some English mistakes ('inspred from', a weird proposition-ranging 'else' at the end of a sentence that sounds odd, etc.)

At least, it's better than just the GIF, which I've kept on the page for the sake of having something animated without having to leave GitHub.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.