Function: cider-format-connection-params
cider-format-connection-params is a byte-compiled function defined in
cider-connection.el.
Signature
(cider-format-connection-params TEMPLATE PARAMS)
Documentation
Format PARAMS with TEMPLATE string.
The following formats can be used in TEMPLATE string:
%h - host
%H - remote host, empty for local hosts
%p - port
%j - short project name, or directory name if no project
%J - long project name including parent dir name
%r - REPL type (clj or cljs)
%S - type of the ClojureScript runtime (Browser, Node, Figwheel etc.)
%s - session name as defined by cider-session-name-template.
In case some values are empty, extra separators (: and -) are automatically removed.
Source Code
;; Defined in ~/.emacs.d/elpa/cider-20260414.1619/cider-connection.el
(defun cider-format-connection-params (template params)
"Format PARAMS with TEMPLATE string.
The following formats can be used in TEMPLATE string:
%h - host
%H - remote host, empty for local hosts
%p - port
%j - short project name, or directory name if no project
%J - long project name including parent dir name
%r - REPL type (clj or cljs)
%S - type of the ClojureScript runtime (Browser, Node, Figwheel etc.)
%s - session name as defined by `cider-session-name-template'.
In case some values are empty, extra separators (: and -) are automatically
removed."
(let* ((dir (directory-file-name
(abbreviate-file-name
(or (plist-get params :project-dir)
(clojure-project-dir (cider-current-dir))
default-directory))))
(short-proj (file-name-nondirectory (directory-file-name dir)))
(parent-dir (ignore-errors
(thread-first dir
file-name-directory
directory-file-name file-name-nondirectory
file-name-as-directory)))
(long-proj (format "%s%s" (or parent-dir "") short-proj))
;; use `dir` if it is shorter than `long-proj` or `short-proj`
(short-proj (if (>= (length short-proj) (length dir))
dir
short-proj))
(long-proj (if (>= (length long-proj) (length dir))
dir
long-proj))
(port (or (plist-get params :port) ""))
(host (or (plist-get params :host) "localhost"))
(remote-host (if (member host '("localhost" "127.0.0.1"))
""
host))
(repl-type (or (plist-get params :repl-type) "unknown"))
(cljs-repl-type (or (and (eq repl-type 'cljs)
(plist-get params :cljs-repl-type))
""))
(specs `((?h . ,host)
(?H . ,remote-host)
(?p . ,port)
(?j . ,short-proj)
(?J . ,long-proj)
(?r . ,repl-type)
(?S . ,cljs-repl-type)))
(ses-name (or (plist-get params :session-name)
(format-spec cider-session-name-template specs)))
(specs (append `((?s . ,ses-name)) specs))
(specs (mapcar #'cider--ensure-spec-is-not-invokable specs)))
(thread-last (format-spec template specs)
;; remove extraneous separators
(replace-regexp-in-string "\\([:-]\\)[:-]+" "\\1")
(replace-regexp-in-string "\\(^[:-]\\)\\|\\([:-]$\\)" "")
(replace-regexp-in-string "[:-]\\([])*]\\)" "\\1"))))