+(defun counsel-rg-jump (&optional initial-input initial-directory)
+ "Jump to a file below the current directory.
+List all files within the current directory or any of its subdirectories.
+INITIAL-INPUT can be given as the initial minibuffer input.
+INITIAL-DIRECTORY, if non-nil, is used as the root directory for search."
+ (interactive
+ (list nil
+ (when current-prefix-arg
+ (read-directory-name "From directory: "))))
+ (counsel-require-program "rg")
+ (let ((default-directory (or initial-directory
+ (locate-dominating-file default-directory ".git")
+ default-directory)))
+ (ivy-read "rg --files: "
+ (split-string
+ (shell-command-to-string counsel-rg-files-command)
+ "\n" t)
+ :matcher #'counsel--find-file-matcher
+ :initial-input initial-input
+ :action (lambda (x)
+ (with-ivy-window
+ (find-file (expand-file-name x ivy--directory))))
+ :preselect (counsel--preselect-file)
+ :require-match 'confirm-after-completion
+ :history 'file-name-history
+ :keymap counsel-find-file-map
+ :caller 'counsel-rg-jump)))