Function: klink:create-link
klink:create-link is an autoloaded, interactive and byte-compiled
function defined in klink.el.
Signature
(klink:create-link REFERENCE)
Documentation
Return a klink implicit link string to REFERENCE.
REFERENCE should be a cell-ref or a string containing "filename#cell-ref". See documentation for kcell:ref-to-id for valid cell-ref formats.
Key Bindings
Source Code
;; Defined in ~/.emacs.d/elpa/hyperbole-20260414.325/kotl/klink.el
;;;###autoload
(defun klink:create-link (reference)
"Return a klink implicit link string to REFERENCE.
REFERENCE should be a cell-ref or a string containing \"filename#cell-ref\".
See documentation for `kcell:ref-to-id' for valid cell-ref formats."
(interactive
(progn
;; This `default-directory' setting is referenced in "hargs.el" for argument getting.
(hattr:set 'hbut:current 'dir default-directory)
(save-excursion
(hargs:iform-read
'(interactive "*+LLink to <[file]#cell-id[|vspecs]>: ")))))
;; Reference generally is a string. It may be a list as a string, e.g.
;; "(\"file\" \"cell\")", in which case, we remove the unneeded internal
;; double quotes and then parse it with pattern matching.
(and (stringp reference) (> (length reference) 0)
(eq (aref reference 0) ?\()
(setq reference (replace-regexp-in-string "\\\"" "" reference nil t)))
;; This `default-directory' setting is referenced in "hargs.el" for
;; getting arguments.
(hattr:set 'hbut:current 'dir default-directory)
(let (file-ref cell-ref klink)
(setq reference (klink:parse reference)
file-ref (car reference)
cell-ref (nth 1 reference))
;; Don't need filename if link is to a cell in current buffer.
(when (and file-ref (equal (hypb:buffer-file-name)
(expand-file-name file-ref default-directory)))
(setq file-ref nil))
(setq klink (cond (file-ref
(setq file-ref (hpath:relative-to file-ref))
;; Remove "./" prefix, if any.
(when (string-match "^\\./" file-ref)
(setq file-ref (substring file-ref (match-end 0))))
(concat "<" file-ref
(when cell-ref
(concat "#" cell-ref))
">"))
(cell-ref (concat "<#" cell-ref ">"))
(t (error "(klink:create-link) Invalid reference, `%s'" reference))))
(klink:set-yank-handler klink)))