X-Git-Url: https://git.donarmstrong.com/?p=org-ref.git;a=blobdiff_plain;f=org-ref.org;h=b5429942f7665d8347131bc13164b0963d7cfe47;hp=62361c04e8274928f92a05b8142345957e821b2a;hb=c259c0584eafa5dfd5475ab1cb5007712b921e76;hpb=ebf93809c629b42d52fc2f23fbde12ac54fec1db diff --git a/org-ref.org b/org-ref.org index 62361c0..b542994 100644 --- a/org-ref.org +++ b/org-ref.org @@ -12,6 +12,7 @@ This document is an experiment at creating a literate program to provide similar 4. Exportable links to LaTeX 5. Utility functions for dealing with bibtex files and org-files +Some additional features include 1. Get minibuffer messages for the cite/ref/label link under point With helm integration (default) you can: @@ -934,7 +935,7 @@ The label link provides a way to create labels in org-mode. We make it clickable ;; for tblname, it is not enough to get word boundary ;; tab-little and tab-little-2 match then. (count-matches (format "^#\\+tblname:\\s-*%s\\b[^-:]" label) (point-min) (point-max)) - (count-matches (format "\\label{%s}\\b" label) (point-min) (point-max)) + (count-matches (format "\\label{%s}" label) (point-min) (point-max)) ;; this is the org-format #+label: (count-matches (format "^#\\+label:\\s-*%s\\b[^-:]" label) (point-min) (point-max)) (let ((custom-id-count 0)) @@ -1063,7 +1064,7 @@ It would be nice to use completion to enter a ref link, where a list of labels i #+BEGIN_SRC emacs-lisp :tangle org-ref.el (defun org-ref-get-org-labels () - "find #+LABEL: labels" + "Return a list of #+LABEL: labels." (save-excursion (goto-char (point-min)) (let ((matches '())) @@ -1074,7 +1075,7 @@ matches))) #+BEGIN_SRC emacs-lisp :tangle org-ref.el (defun org-ref-get-custom-ids () - "return a list of custom_id properties in the buffer" + "Return a list of custom_id properties in the buffer." (let ((results '()) custom_id) (org-map-entries (lambda () @@ -1099,6 +1100,7 @@ Finally, we get the table names. #+BEGIN_SRC emacs-lisp :tangle org-ref.el (defun org-ref-get-tblnames () + "Return list of table names in the buffer." (org-element-map (org-element-parse-buffer 'element) 'table (lambda (table) (org-element-property :name table)))) @@ -1108,7 +1110,8 @@ Now, we can put all the labels together which will give us a list of candidates. #+BEGIN_SRC emacs-lisp :tangle org-ref.el (defun org-ref-get-labels () - "returns a list of labels in the buffer that you can make a ref link to. this is used to auto-complete ref links." + "Returns a list of labels in the buffer that you can make a ref link to. +This is used to auto-complete ref links and in helm menus." (save-excursion (save-restriction (widen) @@ -1124,7 +1127,7 @@ Now, we can put all the labels together which will give us a list of candidates. (org-ref-get-custom-ids)))))) #+END_SRC -Let us make a helm function to insert a label link. This will help you enter unique labels. +Let us make a helm function to insert a label link. This will help you enter unique labels by showing matching labels until they are all gone and you are left with a unique one. If you are on a link, it means you want to replace it. #+BEGIN_SRC emacs-lisp :tangle org-ref.el (defun org-ref-helm-insert-label-link () "Insert a label link. helm just shows you what labels already exist. @@ -1200,7 +1203,7 @@ If you are on a label link, replace it." helm-pattern)))))))))))) #+END_SRC -Now we create the completion function. This works from the org-machinery, e.g. if you type C-c C-l to insert a link, and use completion by pressing tab. +Now we create a completion function. This works from the org-machinery, e.g. if you type C-c C-l to insert a link, and use completion by pressing tab. #+BEGIN_SRC emacs-lisp :tangle org-ref.el (defun org-ref-complete-link (&optional arg) @@ -1294,7 +1297,8 @@ Use C-u C-u to insert a [[#custom-id]] link ((equal helm-current-prefix-arg '(16)) (insert (format "[[#%s]]" label))) - )))))))) + )) + )))))) #+END_SRC #+RESULTS: @@ -3119,12 +3123,18 @@ To get a lighter weight message about the label, ref and cite links, we define a ;; message some context about the label we are referring to ((string= type "ref") - (message (org-ref-get-label-context - (org-element-property :path object)))) + (message "%scount: %s" + (org-ref-get-label-context + (org-element-property :path object)) + (org-ref-count-labels + (org-element-property :path object)))) ((string= type "eqref") - (message (org-ref-get-label-context - (org-element-property :path object)))) + (message "%scount: %s" + (org-ref-get-label-context + (org-element-property :path object)) + (org-ref-count-labels + (org-element-property :path object)))) ;; message the count ((string= type "label") @@ -3264,10 +3274,13 @@ C-u C-u will change the key at point to the selected keys. (replace-regexp-in-string (car (org-ref-get-bibtex-key-and-file)) ; key (mapconcat 'identity keys ",") ; new keys - (org-element-property :raw-link object) - ) + (org-element-property :raw-link object)) ;; replace space at end to avoid collapsing into next word. - last-char))) + last-char)) + ;; and we want to go to the end of the new link + (goto-char + (org-element-property :end (org-element-context))) + ) (t (message "Not found"))))