Mercurial > emacs
changeset 20033:2c0e89d1488b
(x-long-option-alist): New variable.
(msdos-handle-args): Handle and complete long options with
attached arguments. Support "-name", "-T" and "-rv" options.
author | Eli Zaretskii <eliz@gnu.org> |
---|---|
date | Mon, 13 Oct 1997 16:05:32 +0000 |
parents | 8b3f96c4cad1 |
children | 674d7beabce0 |
files | lisp/term/pc-win.el |
diffstat | 1 files changed, 63 insertions(+), 13 deletions(-) [+] |
line wrap: on
line diff
--- a/lisp/term/pc-win.el Sat Oct 11 03:57:20 1997 +0000 +++ b/lisp/term/pc-win.el Mon Oct 13 16:05:32 1997 +0000 @@ -398,27 +398,77 @@ (fset 'set-mouse-color 'ignore) ; We cannot, I think. (fset 'set-cursor-color 'ignore) ; Hardware determined by char under. (fset 'set-border-color 'ignore) ; Not useful. + +;; From lisp/term/x-win.el: +(defconst x-long-option-alist + '(("--name" . "-name") + ("--title" . "-T") + ("--reverse-video" . "-reverse") + ("--foreground-color" . "-fg") + ("--background-color" . "-bg"))) ;; --------------------------------------------------------------------------- -;; Handle the X-like command line parameters "-fg" and "-bg" +;; Handle the X-like command line parameters "-fg", "-bg", "-name", etc. (defun msdos-handle-args (args) (let ((rest nil)) + (message "%s" args) (while args - (let ((this (car args))) + (let* ((this (car args)) + (orig-this this) + completion argval) (setq args (cdr args)) + ;; Check for long options with attached arguments + ;; and separate out the attached option argument into argval. + (if (string-match "^--[^=]*=" this) + (setq argval (substring this (match-end 0)) + this (substring this 0 (1- (match-end 0))))) + (setq completion (try-completion this x-long-option-alist)) + (if (eq completion t) + ;; Exact match for long option. + (setq this (cdr (assoc this x-long-option-alist))) + (if (stringp completion) + (let ((elt (assoc completion x-long-option-alist))) + ;; Check for abbreviated long option. + (or elt + (error "Option `%s' is ambiguous" this)) + (setq this (cdr elt))) + ;; Check for a short option. + (setq argval nil this orig-this))) (cond ((or (string= this "-fg") (string= this "-foreground")) - (if args - (setq default-frame-alist - (cons (cons 'foreground-color (car args)) - default-frame-alist) - args (cdr args)))) + (or argval (setq argval (car args) args (cdr args))) + (setq default-frame-alist + (cons (cons 'foreground-color argval) + default-frame-alist))) ((or (string= this "-bg") (string= this "-background")) - (if args - (setq default-frame-alist - (cons (cons 'background-color (car args)) - default-frame-alist) - args (cdr args)))) + (or argval (setq argval (car args) args (cdr args))) + (setq default-frame-alist + (cons (cons 'background-color argval) + default-frame-alist))) + ((or (string= this "-T") (string= this "-name")) + (or argval (setq argval (car args) args (cdr args))) + (setq default-frame-alist + (cons + (cons 'title + (if (stringp argval) + argval + (let ((case-fold-search t) + i) + (setq argval (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))) + ((or (string= this "-r") + (string= this "-rv") + (string= this "-reverse")) + (setq default-frame-alist + (cons '(reverse . t) + default-frame-alist))) (t (setq rest (cons this rest)))))) - (nreverse rest))) + (nreverse rest))) (setq command-line-args (msdos-handle-args command-line-args)) ;; ---------------------------------------------------------------------------