-(defun my/frame-initial-frame-p (frame)
- "Returns true if the given frame is the magic 'initial frame' that always exists in GUI emacs sessions"
- (equal "initial_terminal" (terminal-name frame)))
-
-(defun my/frame-list-ignoring-initial-frame ()
- "Returns all frames except the magic 'initial frame' that always exists in GUI emacs sessions"
- (filtered-frame-list (lambda (frame) (not (my/frame-initial-frame-p frame)))))
-
-(defun my/generate-frame-title ()
- "Returns a string like 'filename (dirname) - Emacs'"
- (if (buffer-file-name)
- (concat
- (file-name-nondirectory (buffer-file-name))
- (if (buffer-modified-p)
- " +")
- " ("
- (abbreviate-file-name (substring (file-name-directory (buffer-file-name)) 0 -1))
- ") - Emacs"
- )
- (concat
- (buffer-name)
- (if (buffer-modified-p)
- " +")
- " - Emacs")))
-
-(defun my/kill-buffer-safely (buffer)
- "Kill the buffer if it is not special or modified"
- (if (and
- (not (string-match "^ " (buffer-name buffer)))
- (not (equal "*Messages*" (buffer-name buffer)))
- (or
- (not (buffer-modified-p buffer))
- (null (buffer-file-name buffer))))
- (kill-buffer buffer)))
-
-(defun my/kill-buffers-if-deleting-last-frame (frame)
- "Kill all buffers when closing the last frame"
- (when (equal (list frame) (my/frame-list-ignoring-initial-frame))
- (dolist (buffer (buffer-list))
- (my/kill-buffer-safely buffer))))