(cons attrs normal-top-level-add-subdirs-inode-list))
(while contents
(unless (member (car contents) '("." ".." "RCS" "CVS"))
- (when (and (string-match "\\`[a-zA-Z0-9]" (car contents))
+ (when (and (string-match "\\`[[:alnum:]]" (car contents))
;; Avoid doing a `stat' when it isn't necessary
;; because that can cause trouble when an NFS server
;; is down.
;; ...-frame-alist.
(if (fboundp 'frame-notice-user-settings)
(frame-notice-user-settings))
+ (if (fboundp 'frame-set-background-mode)
+ ;; Set the faces for the initial background mode even if
+ ;; frame-notice-user-settings didn't (such as on a tty).
+ ;; frame-set-background-mode is idempotent, so it won't
+ ;; cause any harm if it's already been done.
+ (let ((frame-background-mode frame-background-mode)
+ (frame (selected-frame))
+ term)
+ (when (and (null window-system)
+ ;; Don't override a possibly customized value.
+ (null frame-background-mode)
+ ;; Don't override user specifications.
+ (null (frame-parameter frame 'reverse))
+ (let ((bg (frame-parameter frame 'background-color)))
+ (or (null bg)
+ (member bg '(unspecified "unspecified-bg")))))
+ (setq term (getenv "TERM"))
+ (if (string-match "^\\(xterm\\|rxvt\\|dtterm\\|eterm\\)"
+ term)
+ (setq frame-background-mode 'light)))
+ (frame-set-background-mode (selected-frame))))
+
;; Now we know the user's default font, so add it to the menu.
(if (fboundp 'font-menu-add-default)
(font-menu-add-default))
(and window-setup-hook
(run-hooks 'window-setup-hook))
(or menubar-bindings-done
- (if (memq window-system '(x w32))
- (precompute-menubar-bindings)
- ))))))
+ (if (display-popup-menus-p)
+ (precompute-menubar-bindings)))))))
;; Precompute the keyboard equivalents in the menu bar items.
(defun precompute-menubar-bindings ()
(setq submap (cdr submap))))
(setq define-key-rebound-commands t))
+;; Command-line options supported by tty's:
+(defconst tty-long-option-alist
+ '(("--name" . "-name")
+ ("--title" . "-T")
+ ("--reverse-video" . "-reverse")
+ ("--foreground-color" . "-fg")
+ ("--background-color" . "-bg")))
+
+;; Handle the X-like command line parameters "-fg", "-bg", "-name", etc.
+(defun tty-handle-args (args)
+ (let ((rest nil))
+ (message "%s" args)
+ (while (and args
+ (not (equal (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)))))
+ (when (string-match "^--" this)
+ (setq completion (try-completion this tty-long-option-alist))
+ (if (eq completion t)
+ ;; Exact match for long option.
+ (setq this (cdr (assoc this 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" this))
+ (setq this (cdr elt)))
+ ;; Check for a short option.
+ (setq argval nil this orig-this))))
+ (cond ((or (string= this "-fg") (string= this "-foreground"))
+ (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"))
+ (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)))
+
(defun command-line ()
(setq command-line-default-directory default-directory)
(setq window-system nil)
(kill-emacs)))
+ ;; Windowed displays do this inside their *-win.el.
+ (when (and (not (display-graphic-p))
+ (not noninteractive))
+ (setq command-line-args (tty-handle-args command-line-args)))
+
(let ((done nil)
(args (cdr command-line-args)))
;; If frame was created with a tool bar, switch tool-bar-mode on.
(when (and (not noninteractive)
- (memq window-system '(x w32))
- (image-type-available-p 'xpm)
+ (display-graphic-p)
(> (frame-parameter nil 'tool-bar-lines) 0))
(tool-bar-mode t))
(setq-default blink-cursor t)
(blink-cursor-mode 1))
+ ;; Register default TTY colors for the case the terminal hasn't a
+ ;; terminal init file.
+ (or (memq window-system '(x w32))
+ (not (tty-display-color-p))
+ (let* ((colors (cond ((eq window-system 'pc)
+ msdos-color-values)
+ ((eq system-type 'windows-nt)
+ w32-tty-standard-colors)
+ (t tty-standard-colors)))
+ (color (car colors)))
+ (while colors
+ (tty-color-define (car color) (cadr color) (cddr color))
+ (setq colors (cdr colors) color (car colors)))
+ ;; Modifying color mappings means realized faces don't
+ ;; use the right colors, so clear them.
+ (clear-face-cache)))
+
(run-hooks 'before-init-hook)
;; Run the site-start library if it exists. The point of this file is
(set-buffer "*scratch*")
(if (eq major-mode 'fundamental-mode)
(funcall initial-major-mode))))
-
- ;; Register default TTY colors for the case the terminal hasn't a
- ;; terminal init file.
- (or (memq window-system '(x w32))
- (not (tty-display-color-p))
- (let* ((colors (cond ((eq window-system 'pc)
- msdos-color-values)
- ((eq system-type 'windows-nt)
- w32-tty-standard-colors)
- (t tty-standard-colors)))
- (color (car colors)))
- (while colors
- (tty-color-define (car color) (cadr color) (cddr color))
- (setq colors (cdr colors) color (car colors)))
- ;; Modifying color mappings means realized faces don't
- ;; use the right colors, so clear them.
- (clear-face-cache)))
;; Load library for our terminal type.
;; User init file can set term-file-prefix to nil to prevent this.
"
)
- (:face 'variable-pitch
+ (:face variable-pitch
"You can do basic editing with the menu bar and scroll bar \
using the mouse.\n\n"
:face (variable-pitch :weight bold)
:face (variable-pitch :slant oblique)
"ABSOLUTELY NO WARRANTY\n"
:face variable-pitch
- "Copying Conditions Conditions for redistributing and \
-changing Emacs\n"))
+ "\
+Copying Conditions Conditions for redistributing and changing Emacs\n"))
"A list of texts to show in the middle part of splash screens.
Each element in the list should be a list of strings or pairs
`:face FACE', like `fancy-splash-insert' accepts them.")
;; Insert the image with a help-echo and a keymap.
(let ((map (make-sparse-keymap))
- (help-echo "mouse-2: browse http://www.gnu.org"))
+ (help-echo "mouse-2: browse http://www.gnu.org/"))
(define-key map [mouse-2]
(lambda ()
(interactive)
- (browse-url "http://www.gnu.org")
+ (browse-url "http://www.gnu.org/")
(throw 'exit nil)))
(define-key map [down-mouse-2] 'ignore)
(define-key map [up-mouse-2] 'ignore)
(unless (current-message)
(message fancy-splash-help-echo))
(set-buffer-modified-p nil)
+ (goto-char (point-min))
(force-mode-line-update)
(setq fancy-current-text (cdr fancy-current-text))))
(throw 'exit nil))
-(defvar fancy-splash-pending-command nil
- "If non-nil, a command to be executed after the splash screen display.")
-
-(defun fancy-splash-pre-command ()
- (unless (memq this-command
- '(ignore fancy-splash-default-action browse-url))
- (setq fancy-splash-pending-command this-command)
- (throw 'exit nil)))
-
-
(defun fancy-splash-screens ()
"Display fancy splash screens when Emacs starts."
(setq fancy-splash-help-echo (startup-echo-area-message))
(define-key map [mouse-movement] 'ignore)
(setq cursor-type nil
display-busy-cursor nil
+ buffer-undo-list t
mode-line-format
(propertize "---- %b %-" 'face '(:weight bold))
- timer (run-with-timer 0 5 #'fancy-splash-screens-1
+ timer (run-with-timer 0 fancy-splash-delay
+ #'fancy-splash-screens-1
splash-buffer))
- (add-hook 'pre-command-hook 'fancy-splash-pre-command)
(recursive-edit))
(cancel-timer timer)
- (remove-hook 'pre-command-hook 'fancy-splash-pre-command)
(setq display-busy-cursor old-busy-cursor)
(kill-buffer splash-buffer))))
(run-hooks 'window-setup-hook)
(setq window-setup-hook nil))
- (when (memq window-system '(x w32))
+ (when (display-popup-menus-p)
(precompute-menubar-bindings))
(setq menubar-bindings-done t)
(insert (substitute-command-keys "
Activate menubar \\[tmm-menubar]")))
- ;; Windows and MSDOS (currently) do not count as
- ;; window systems, but do have mouse support.
- (if window-system
+ (if (display-mouse-p)
(insert "
Mode-specific menu C-mouse-3 (third button, with CTRL)"))
;; Many users seem to have problems with these.
(erase-buffer)
(when initial-scratch-message
(insert initial-scratch-message))
- (set-buffer-modified-p nil))
-
- (when fancy-splash-pending-command
- (call-interactively fancy-splash-pending-command)))))))
+ (set-buffer-modified-p nil)))))))
;; Delay 2 seconds after the init file error message
;; was displayed, so user can read it.