]> code.delx.au - dotemacs/blobdiff - lisp/my-frame-title.el
major config refactor
[dotemacs] / lisp / my-frame-title.el
diff --git a/lisp/my-frame-title.el b/lisp/my-frame-title.el
new file mode 100644 (file)
index 0000000..e640c45
--- /dev/null
@@ -0,0 +1,30 @@
+;;; -*- lexical-binding: t -*-
+
+(setq frame-title-format '((:eval (funcall #'my/generate-frame-title))))
+
+(setq icon-title-format frame-title-format)
+
+(add-to-list 'post-command-hook #'my/terminal-update-title)
+
+
+(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/terminal-update-title ()
+  "If using a terminal frame then sends the escape codes to update the title."
+  (if (terminal-parameter (frame-terminal) 'terminal-initted)
+      (send-string-to-terminal (concat "\033]0;" (my/generate-frame-title) "\007"))))