]> git.eshelyaron.com Git - emacs.git/commitdiff
Handle OSC command to set window title
authorMatthias Meulien <orontee@gmail.com>
Sat, 17 Sep 2022 15:54:24 +0000 (17:54 +0200)
committerLars Ingebrigtsen <larsi@gnus.org>
Sun, 18 Sep 2022 12:50:01 +0000 (14:50 +0200)
* lisp/osc.el (osc-handlers): Bind osc-window-title-handler to OSC
command 2.
(osc-window-title): Local variable storing string extracted from OSC
command 2.
(osc-window-title-handler): Copy text from OSC command 2 to
osc-window-title (bug#57821).

lisp/osc.el

index 224981a8564cd4aee0c5c4ee2fcc0759664a2519..619972dab1420b971f488074bd373aea3466bd98 100644 (file)
 ;;; Commentary:
 
 ;; Interpretation of OSC (Operating System Commands) escape
-;; sequences. Handlers for OSC 7 and 8 (for current directory and
-;; hyperlinks respectively) are provided.
+;; sequences. Handlers for OSC 2, 7 and 8 (for window title, current
+;; directory and hyperlinks respectively) are provided.
 
 ;;; Code:
 
-(defvar-local osc-handlers '(("7" . osc-directory-tracker)
+(defvar-local osc-handlers '(("2" . osc-window-title-handler)
+                             ("7" . osc-directory-tracker)
                              ("8" . osc-hyperlink-handler))
   "Alist of handlers for OSC escape sequences.
 See `osc-apply-on-region' for details.")
@@ -67,6 +68,18 @@ point where the escape sequence was located."
           (put-text-property pos0 end 'invisible t)
           (setq osc--marker (copy-marker pos0)))))))
 
+;; Window title handling (OSC 2)
+
+(defvar-local osc-window-title nil)
+(defun osc-window-title-handler (_ text)
+  "Set value of `osc-window-title' from an OSC 2 escape sequence.
+The variable `osc-window-title' can be referred to in
+`frame-title-format' to dynamically set the frame title.
+
+This function is intended to be included as an entry of
+`osc-handlers'."
+  (setq osc-window-title text))
+
 ;; Current directory tracking (OSC 7)
 
 (declare-function url-host "url/url-parse.el")