This is an attempt to replicate a feature found in WebStorm:
When you are in the end of a block, and the beginning of the block is outside the viewport, it shows you the beginning in a nice overlay.
In Emacs we can show the beginning of function definition at point in the header line.
Here's the Emacs Lisp code:
(defun show-beginning-of-defun () "Display the beginning of defun in the header line." (let (start end) (save-excursion (beginning-of-defun) (setq start (line-beginning-position) end (line-end-position))) (if (>= start (window-start)) (setq header-line-format nil) (setq header-line-format (buffer-substring-no-properties start end))))) (add-hook 'prog-mode-hook (lambda () (add-hook 'post-command-hook #'show-beginning-of-defun)))