@ -36,6 +36,8 @@
( require 's )
( require 's )
( require 'f )
( require 'f )
( require 'ol )
( require 'ol )
( require 'org-element )
( require 'org-roam-macs )
( defvar org-roam-directory )
( defvar org-roam-directory )
( defvar org-link-frame-setup )
( defvar org-link-frame-setup )
@ -98,6 +100,13 @@ Has an effect if and only if `org-roam-buffer-position' is `top' or `bottom'."
:type 'hook
:type 'hook
:group 'org-roam )
:group 'org-roam )
( defcustom org-roam-buffer-preview-function #' org-roam-buffer--preview
" Function to obtain preview contents for a given link.
The function takes in two arguments, the FILE containing the
link, and the POINT of the link. "
:type 'function
:group 'org-roam )
( defcustom org-roam-buffer-window-parameters nil
( defcustom org-roam-buffer-window-parameters nil
" Additional window parameters for the `org-roam-buffer' side window.
" Additional window parameters for the `org-roam-buffer' side window.
For example: ( setq org-roam-buffer-window-parameters ' ( ( no-other-window . t ) ) ) "
For example: ( setq org-roam-buffer-window-parameters ' ( ( no-other-window . t ) ) ) "
@ -124,6 +133,16 @@ For example: (setq org-roam-buffer-window-parameters '((no-other-window . t)))"
'font-lock-face
'font-lock-face
'org-document-title ) ) )
'org-document-title ) ) )
( defun org-roam-buffer--preview ( file point )
" Get preview content for FILE at POINT. "
( org-roam--with-temp-buffer file
( goto-char point )
( let ( ( elem ( org-element-at-point ) ) )
( or ( org-element-property :raw-value elem )
( when-let ( ( begin ( org-element-property :begin elem ) )
( end ( org-element-property :end elem ) ) )
( string-trim ( buffer-substring-no-properties begin end ) ) ) ) ) ) )
( defun org-roam-buffer--pluralize ( string number )
( defun org-roam-buffer--pluralize ( string number )
" Conditionally pluralize STRING if NUMBER is above 1. "
" Conditionally pluralize STRING if NUMBER is above 1. "
( let ( ( l ( pcase number
( let ( ( l ( pcase number
@ -171,7 +190,7 @@ ORIG-PATH is the path where the CONTENT originated."
" file " ) ) )
" file " ) ) )
( dolist ( backlink bls )
( dolist ( backlink bls )
( pcase-let ( ( ` ( , file-from _ , props ) backlink ) )
( pcase-let ( ( ` ( , file-from _ , props ) backlink ) )
( insert ( if-let ( ( content ( plist-get props :content ) ) )
( insert ( if-let ( ( content ( funcall org-roam-buffer-preview-function file-from ( plist-get props :point ) ) ) )
( propertize ( org-roam-buffer-expand-links content file-from )
( propertize ( org-roam-buffer-expand-links content file-from )
'help-echo " mouse-1: visit backlinked note "
'help-echo " mouse-1: visit backlinked note "
'file-from file-from
'file-from file-from
@ -208,7 +227,7 @@ ORIG-PATH is the path where the CONTENT originated."
( org-roam-buffer-expand-links file-from ) )
( org-roam-buffer-expand-links file-from ) )
" Top " )
" Top " )
" \n "
" \n "
( if-let ( ( content ( plist-get prop :content ) ) )
( if-let ( ( content ( funcall org-roam-buffer-preview-function file-from ( plist-get prop :point ) ) ) )
( propertize
( propertize
( s-trim ( s-replace " \n " " " ( org-roam-buffer-expand-links content file-from ) ) )
( s-trim ( s-replace " \n " " " ( org-roam-buffer-expand-links content file-from ) ) )
'help-echo " mouse-1: visit backlinked note "
'help-echo " mouse-1: visit backlinked note "