I would like to select the whole function by going to VISUAL
mode and using to go to the last character and then going to the matching bracket with
.
Doing this in
NORMAL
mode works fine, but when in VISUAL
, it doesn’t.
How can I fix this? Or, what should I check to fix this?
Though I tend to do something rather along the lines of
vif
(using evil’sdefun
text-object, or evil-treesitter if that’s what you prefer) I tried what you indicate and it does work here…So, could you be a bit more precise in what you’re trying to do and how it fails? (a file example, trying without other packages than evil, etc.)
If I understand what you’re describing, your point is on the first line of a function (not necessarily at the end). You press
V
to go into (line) visual mode, and then$%
. And that’s not working?When I do that, I do wind up with the entire function selected as I’d expect. FWIW, I’m using evil mode as configured by Spacemacs, and I tested it out in a random Go file I had open. It looks like Spacemacs does add a bunch of extra packages in their evil layer*, but I checked and
is bound to
evil-jump-item
from the evil package.* Not to be confused with their evil lair.
You can select in one go in GNU Emacs. You can bind this to some shortcut.
(defun select-func-at-point () (interactive) (let (bounds pos1 pos2 mything) (setf bounds (bounds-of-thing-at-point 'defun)) (setf pos1 (car bounds)) (setf pos2 (cdr bounds)) (set-mark pos1) (goto-char pos2)))
Fixed by changing major mode. It seems
typescript-ts-mode
didn’t work well with tsx files, so switched totsx-ts-mode
(after upgrading https://github.com/llemaitre19/jtsx)