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)))
It’s a weird default. The file is literally a elisp code with .el like almost everything else.