Function: tty-handle-args
tty-handle-args is a byte-compiled function defined in startup.el.gz.
Signature
(tty-handle-args ARGS)
Documentation
Handle the X-like command-line arguments "-fg", "-bg", "-name", etc.
Source Code
;; Defined in /usr/src/emacs/lisp/startup.el.gz
(defun tty-handle-args (args)
"Handle the X-like command-line arguments \"-fg\", \"-bg\", \"-name\", etc."
(let (rest)
(while (and args
(not (equal (car args) "--")))
(let* ((argi (pop args))
(orig-argi argi)
argval completion)
;; Check for long options with attached arguments
;; and separate out the attached option argument into argval.
(when (string-match "^\\(--[^=]*\\)=" argi)
(setq argval (substring argi (match-end 0))
argi (match-string 1 argi)))
(when (string-match "^--" argi)
(setq completion (try-completion argi tty-long-option-alist))
(if (eq completion t)
;; Exact match for long option.
(setq argi (cdr (assoc argi tty-long-option-alist)))
(if (stringp completion)
(let ((elt (assoc completion tty-long-option-alist)))
;; Check for abbreviated long option.
(or elt
(error "Option `%s' is ambiguous" argi))
(setq argi (cdr elt)))
;; Check for a short option.
(setq argval nil
argi orig-argi))))
(cond ((member argi '("-fg" "-foreground"))
(push (cons 'foreground-color (or argval (pop args)))
default-frame-alist))
((member argi '("-bg" "-background"))
(push (cons 'background-color (or argval (pop args)))
default-frame-alist))
((member argi '("-T" "-name"))
(unless argval (setq argval (pop args)))
(push (cons 'title
(if (stringp argval)
argval
(let ((case-fold-search t)
i)
(setq argval (copy-sequence invocation-name))
;; Change any . or * characters in name to
;; hyphens, so as to emulate behavior on X.
(while
(setq i (string-match "[.*]" argval))
(aset argval i ?-))
argval)))
default-frame-alist))
((member argi '("-r" "-rv" "-reverse"))
(push '(reverse . t)
default-frame-alist))
((equal argi "-color")
(unless argval (setq argval 8)) ; default --color means 8 ANSI colors
(push (cons 'tty-color-mode
(cond
((numberp argval) argval)
((string-match "-?[0-9]+" argval)
(string-to-number argval))
(t (intern argval))))
default-frame-alist))
(t
(push argi rest)))))
(nconc (nreverse rest) args)))