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?

  • sylvain_soliman@alien.topB
    link
    fedilink
    English
    arrow-up
    1
    ·
    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.topB
    link
    fedilink
    English
    arrow-up
    1
    ·
    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.topB
    link
    fedilink
    English
    arrow-up
    1
    ·
    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.