this post was submitted on 27 Nov 2023
1 points (100.0% liked)

Emacs

311 readers
1 users here now

A community for the timeless and infinitely powerful editor. Want to see what Emacs is capable of?!

Get Emacs

Rules

  1. Posts should be emacs related
  2. Be kind please
  3. Yes, we already know: Google results for "emacs" and "vi" link to each other. We good.

Emacs Resources

Emacs Tutorials

Useful Emacs configuration files and distributions

Quick pain-saver tip

founded 1 year ago
MODERATORS
 

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?

top 4 comments
sorted by: hot top controversial new old
[–] sylvain_soliman@alien.top 1 points 11 months ago

Though I tend to do something rather along the lines of vif (using evil's defun 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.)

[–] noooit@alien.top 1 points 11 months ago

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)))
[–] javajunkie314@alien.top 1 points 11 months ago

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.

[–] juboba@alien.top 1 points 11 months ago

Fixed by changing major mode. It seems typescript-ts-mode didn't work well with tsx files, so switched to tsx-ts-mode (after upgrading https://github.com/llemaitre19/jtsx)