Function: combobulate--mc-place-nodes
combobulate--mc-place-nodes is a natively compiled function defined in
combobulate-cursor.el.
Signature
(combobulate--mc-place-nodes PLACEMENT-NODES &optional DEFAULT-ACTION)
Documentation
Edit PLACEMENT-NODES according to each node's desired placement action.
Must be a list of cons cells where the car is the placement action and the cdr is the node.
The car should be one of the following symbols:
before, which puts the point at the node start; after, which puts the
point at the node end; and mark, which marks the node.
If DEFAULT-ACTION is non-nil, it is used for labelled nodes that do not have match a placement action.
Source Code
;; Defined in /nix/store/b5fvrwzi3zvkabyzx0in6gw1cj963z46-emacs-packages-deps/share/emacs/site-lisp/combobulate-cursor.el
(defun combobulate--mc-place-nodes (placement-nodes &optional default-action)
"Edit PLACEMENT-NODES according to each node's desired placement action.
Must be a list of cons cells where the car is the placement
action and the cdr is the node.
The car should be one of the following symbols:
`before', which puts the point at the node start; `after', which puts the
point at the node end; and `mark', which marks the node.
If DEFAULT-ACTION is non-nil, it is used for labelled nodes that do not have
match a placement action."
(combobulate--mc-assert-is-supported)
(if (combobulate--mc-active)
;; bail out if mc's running as we don't want to run mc
;; inside mc, which will happen if you trigger a command
;; from execute-extended-command for... some... reason..
nil
(let ((counter 0) (node-point) (do-mark) (matched)
(default-action (or default-action 'before)))
(cl-flet ((apply-action (action node)
(pcase action
((or 'before '@before) (setq node-point (combobulate-node-start node)))
((or 'after '@after) (setq node-point (combobulate-node-end node)))
((or 'mark '@mark) (setq node-point (combobulate-node-start node)
do-mark t))
(_ nil))))
(combobulate--mc-clear-cursors)
(pcase-dolist (`(,action . ,node) (reverse placement-nodes))
(setq do-mark nil)
(unless (apply-action action node)
;; fall back to `default-action' if we get nil back from
;; `apply-action'.
(apply-action default-action node))
(push (cons action node) matched)
(if (= counter (- (length placement-nodes) 1))
(progn (goto-char node-point)
(when do-mark (set-mark (combobulate-node-end node))))
(goto-char node-point)
(when do-mark (set-mark (combobulate-node-end node)))
(combobulate--mc-place-cursor))
(cl-incf counter))
(combobulate--mc-enable)
matched))))