diff options
| author | Gerd Moellmann | 2001-05-11 15:12:08 +0000 |
|---|---|---|
| committer | Gerd Moellmann | 2001-05-11 15:12:08 +0000 |
| commit | 752ef2545d7783997115e75199de43e3e7c02fe3 (patch) | |
| tree | 712b1bb9320fbeb3c1eed39e34927c26ed839beb | |
| parent | dd5f324b3c759d220bcef8ba81f8225d0c74c23f (diff) | |
| download | emacs-752ef2545d7783997115e75199de43e3e7c02fe3.tar.gz emacs-752ef2545d7783997115e75199de43e3e7c02fe3.zip | |
(command-line): If parameters have been changed in
the init files which influence font selection, clear the face
cache so that faces get realized with the new parameters.
| -rw-r--r-- | lisp/startup.el | 272 |
1 files changed, 142 insertions, 130 deletions
diff --git a/lisp/startup.el b/lisp/startup.el index a9e9e603f6d..4006ca70092 100644 --- a/lisp/startup.el +++ b/lisp/startup.el | |||
| @@ -819,136 +819,148 @@ or `CVS', and any subdirectory that contains a file named `.nosearch'." | |||
| 819 | (null (cdr tool-bar-lines)) | 819 | (null (cdr tool-bar-lines)) |
| 820 | (eq 0 (cdr tool-bar-lines))))))) | 820 | (eq 0 (cdr tool-bar-lines))))))) |
| 821 | 821 | ||
| 822 | (run-hooks 'before-init-hook) | 822 | (let ((old-scalable-fonts-allowed scalable-fonts-allowed) |
| 823 | 823 | (old-font-list-limit font-list-limit) | |
| 824 | ;; Run the site-start library if it exists. The point of this file is | 824 | (old-face-ignored-fonts face-ignored-fonts)) |
| 825 | ;; that it is run before .emacs. There is no point in doing this after | 825 | |
| 826 | ;; .emacs; that is useless. | 826 | (run-hooks 'before-init-hook) |
| 827 | (if site-run-file | 827 | |
| 828 | (load site-run-file t t)) | 828 | ;; Run the site-start library if it exists. The point of this file is |
| 829 | 829 | ;; that it is run before .emacs. There is no point in doing this after | |
| 830 | ;; Sites should not disable this. Only individuals should disable | 830 | ;; .emacs; that is useless. |
| 831 | ;; the startup message. | 831 | (if site-run-file |
| 832 | (setq inhibit-startup-message nil) | 832 | (load site-run-file t t)) |
| 833 | 833 | ||
| 834 | ;; Load that user's init file, or the default one, or none. | 834 | ;; Sites should not disable this. Only individuals should disable |
| 835 | (let (debug-on-error-from-init-file | 835 | ;; the startup message. |
| 836 | debug-on-error-should-be-set | 836 | (setq inhibit-startup-message nil) |
| 837 | (debug-on-error-initial | 837 | |
| 838 | (if (eq init-file-debug t) 'startup init-file-debug)) | 838 | ;; Load that user's init file, or the default one, or none. |
| 839 | (orig-enable-multibyte default-enable-multibyte-characters)) | 839 | (let (debug-on-error-from-init-file |
| 840 | (let ((debug-on-error debug-on-error-initial) | 840 | debug-on-error-should-be-set |
| 841 | ;; This function actually reads the init files. | 841 | (debug-on-error-initial |
| 842 | (inner | 842 | (if (eq init-file-debug t) 'startup init-file-debug)) |
| 843 | (function | 843 | (orig-enable-multibyte default-enable-multibyte-characters)) |
| 844 | (lambda () | 844 | (let ((debug-on-error debug-on-error-initial) |
| 845 | (if init-file-user | 845 | ;; This function actually reads the init files. |
| 846 | (let ((user-init-file-1 | 846 | (inner |
| 847 | (cond | 847 | (function |
| 848 | ((eq system-type 'ms-dos) | 848 | (lambda () |
| 849 | (concat "~" init-file-user "/_emacs")) | 849 | (if init-file-user |
| 850 | ((eq system-type 'windows-nt) | 850 | (let ((user-init-file-1 |
| 851 | (if (directory-files "~" nil "^\\.emacs\\(\\.elc?\\)?$") | 851 | (cond |
| 852 | "~/.emacs" | 852 | ((eq system-type 'ms-dos) |
| 853 | "~/_emacs")) | 853 | (concat "~" init-file-user "/_emacs")) |
| 854 | ((eq system-type 'vax-vms) | 854 | ((eq system-type 'windows-nt) |
| 855 | "sys$login:.emacs") | 855 | (if (directory-files "~" nil "^\\.emacs\\(\\.elc?\\)?$") |
| 856 | (t | 856 | "~/.emacs" |
| 857 | (concat "~" init-file-user "/.emacs"))))) | 857 | "~/_emacs")) |
| 858 | ;; This tells `load' to store the file name found | 858 | ((eq system-type 'vax-vms) |
| 859 | ;; into user-init-file. | 859 | "sys$login:.emacs") |
| 860 | (setq user-init-file t) | 860 | (t |
| 861 | (load user-init-file-1 t t) | 861 | (concat "~" init-file-user "/.emacs"))))) |
| 862 | 862 | ;; This tells `load' to store the file name found | |
| 863 | ;; If we did not find the user's init file, | 863 | ;; into user-init-file. |
| 864 | ;; set user-init-file conclusively to nil; | 864 | (setq user-init-file t) |
| 865 | ;; don't let it be set from default.el. | 865 | (load user-init-file-1 t t) |
| 866 | (if (eq user-init-file t) | 866 | |
| 867 | (setq user-init-file nil)) | 867 | ;; If we did not find the user's init file, |
| 868 | 868 | ;; set user-init-file conclusively to nil; | |
| 869 | ;; If we loaded a compiled file, set | 869 | ;; don't let it be set from default.el. |
| 870 | ;; `user-init-file' to the source version if that | 870 | (if (eq user-init-file t) |
| 871 | ;; exists. | 871 | (setq user-init-file nil)) |
| 872 | (when (and user-init-file | 872 | |
| 873 | (equal (file-name-extension user-init-file) | 873 | ;; If we loaded a compiled file, set |
| 874 | "elc")) | 874 | ;; `user-init-file' to the source version if that |
| 875 | (let* ((source (file-name-sans-extension user-init-file)) | 875 | ;; exists. |
| 876 | (alt (concat source ".el"))) | 876 | (when (and user-init-file |
| 877 | (setq source (cond ((file-exists-p alt) alt) | 877 | (equal (file-name-extension user-init-file) |
| 878 | ((file-exists-p source) source) | 878 | "elc")) |
| 879 | (t nil))) | 879 | (let* ((source (file-name-sans-extension user-init-file)) |
| 880 | (when source | 880 | (alt (concat source ".el"))) |
| 881 | (when (file-newer-than-file-p source user-init-file) | 881 | (setq source (cond ((file-exists-p alt) alt) |
| 882 | (message "Warning: %s is newer than %s" | 882 | ((file-exists-p source) source) |
| 883 | source user-init-file) | 883 | (t nil))) |
| 884 | (sit-for 1)) | 884 | (when source |
| 885 | (setq user-init-file source)))) | 885 | (when (file-newer-than-file-p source user-init-file) |
| 886 | 886 | (message "Warning: %s is newer than %s" | |
| 887 | (or inhibit-default-init | 887 | source user-init-file) |
| 888 | (let ((inhibit-startup-message nil)) | 888 | (sit-for 1)) |
| 889 | ;; Users are supposed to be told their rights. | 889 | (setq user-init-file source)))) |
| 890 | ;; (Plus how to get help and how to undo.) | 890 | |
| 891 | ;; Don't you dare turn this off for anyone | 891 | (or inhibit-default-init |
| 892 | ;; except yourself. | 892 | (let ((inhibit-startup-message nil)) |
| 893 | (load "default" t t))))))))) | 893 | ;; Users are supposed to be told their rights. |
| 894 | (if init-file-debug | 894 | ;; (Plus how to get help and how to undo.) |
| 895 | ;; Do this without a condition-case if the user wants to debug. | 895 | ;; Don't you dare turn this off for anyone |
| 896 | (funcall inner) | 896 | ;; except yourself. |
| 897 | (condition-case error | 897 | (load "default" t t))))))))) |
| 898 | (progn | 898 | (if init-file-debug |
| 899 | (funcall inner) | 899 | ;; Do this without a condition-case if the user wants to debug. |
| 900 | (setq init-file-had-error nil)) | 900 | (funcall inner) |
| 901 | (error | 901 | (condition-case error |
| 902 | (let ((message-log-max nil)) | 902 | (progn |
| 903 | (save-excursion | 903 | (funcall inner) |
| 904 | (set-buffer (get-buffer-create "*Messages*")) | 904 | (setq init-file-had-error nil)) |
| 905 | (insert "\n\n" | 905 | (error |
| 906 | (format "An error has occurred while loading `%s':\n\n" | 906 | (let ((message-log-max nil)) |
| 907 | user-init-file) | 907 | (save-excursion |
| 908 | (format "%s%s%s" | 908 | (set-buffer (get-buffer-create "*Messages*")) |
| 909 | (get (car error) 'error-message) | 909 | (insert "\n\n" |
| 910 | (if (cdr error) ": " "") | 910 | (format "An error has occurred while loading `%s':\n\n" |
| 911 | (mapconcat 'prin1-to-string (cdr error) ", ")) | 911 | user-init-file) |
| 912 | "\n\n" | 912 | (format "%s%s%s" |
| 913 | "To ensure normal operation, you should investigate the cause\n" | 913 | (get (car error) 'error-message) |
| 914 | "of the error in your initialization file and remove it. Start\n" | 914 | (if (cdr error) ": " "") |
| 915 | "Emacs with the `--debug-init' option to view a complete error\n" | 915 | (mapconcat 'prin1-to-string (cdr error) ", ")) |
| 916 | "backtrace\n")) | 916 | "\n\n" |
| 917 | (message "Error in init file: %s%s%s" | 917 | "To ensure normal operation, you should investigate the cause\n" |
| 918 | (get (car error) 'error-message) | 918 | "of the error in your initialization file and remove it. Start\n" |
| 919 | (if (cdr error) ": " "") | 919 | "Emacs with the `--debug-init' option to view a complete error\n" |
| 920 | (mapconcat 'prin1-to-string (cdr error) ", ")) | 920 | "backtrace\n")) |
| 921 | (pop-to-buffer "*Messages*") | 921 | (message "Error in init file: %s%s%s" |
| 922 | (setq init-file-had-error t))))) | 922 | (get (car error) 'error-message) |
| 923 | ;; If we can tell that the init file altered debug-on-error, | 923 | (if (cdr error) ": " "") |
| 924 | ;; arrange to preserve the value that it set up. | 924 | (mapconcat 'prin1-to-string (cdr error) ", ")) |
| 925 | (or (eq debug-on-error debug-on-error-initial) | 925 | (pop-to-buffer "*Messages*") |
| 926 | (setq debug-on-error-should-be-set t | 926 | (setq init-file-had-error t))))) |
| 927 | debug-on-error-from-init-file debug-on-error))) | 927 | ;; If we can tell that the init file altered debug-on-error, |
| 928 | (if debug-on-error-should-be-set | 928 | ;; arrange to preserve the value that it set up. |
| 929 | (setq debug-on-error debug-on-error-from-init-file)) | 929 | (or (eq debug-on-error debug-on-error-initial) |
| 930 | (unless (or default-enable-multibyte-characters | 930 | (setq debug-on-error-should-be-set t |
| 931 | (eq orig-enable-multibyte default-enable-multibyte-characters)) | 931 | debug-on-error-from-init-file debug-on-error))) |
| 932 | ;; Init file changed to unibyte. Reset existing multibyte | 932 | (if debug-on-error-should-be-set |
| 933 | ;; buffers (probably *scratch*, *Messages*, *Minibuff-0*). | 933 | (setq debug-on-error debug-on-error-from-init-file)) |
| 934 | ;; Arguably this should only be done if they're free of | 934 | (unless (or default-enable-multibyte-characters |
| 935 | ;; multibyte characters. | 935 | (eq orig-enable-multibyte default-enable-multibyte-characters)) |
| 936 | (mapcar (lambda (buffer) | 936 | ;; Init file changed to unibyte. Reset existing multibyte |
| 937 | (with-current-buffer buffer | 937 | ;; buffers (probably *scratch*, *Messages*, *Minibuff-0*). |
| 938 | (if enable-multibyte-characters | 938 | ;; Arguably this should only be done if they're free of |
| 939 | (set-buffer-multibyte nil)))) | 939 | ;; multibyte characters. |
| 940 | (buffer-list)) | 940 | (mapcar (lambda (buffer) |
| 941 | ;; Also re-set the language environment in case it was | 941 | (with-current-buffer buffer |
| 942 | ;; originally done before unibyte was set and is sensitive to | 942 | (if enable-multibyte-characters |
| 943 | ;; unibyte (display table, terminal coding system &c). | 943 | (set-buffer-multibyte nil)))) |
| 944 | (set-language-environment current-language-environment))) | 944 | (buffer-list)) |
| 945 | 945 | ;; Also re-set the language environment in case it was | |
| 946 | ;; Do this here in case the init file sets mail-host-address. | 946 | ;; originally done before unibyte was set and is sensitive to |
| 947 | (or user-mail-address | 947 | ;; unibyte (display table, terminal coding system &c). |
| 948 | (setq user-mail-address (concat (user-login-name) "@" | 948 | (set-language-environment current-language-environment))) |
| 949 | (or mail-host-address | 949 | |
| 950 | (system-name))))) | 950 | ;; Do this here in case the init file sets mail-host-address. |
| 951 | 951 | (or user-mail-address | |
| 952 | (setq user-mail-address (concat (user-login-name) "@" | ||
| 953 | (or mail-host-address | ||
| 954 | (system-name))))) | ||
| 955 | |||
| 956 | ;; If parameter have been changed in the init file which influence | ||
| 957 | ;; face realization, clear the face cache so that new faces will | ||
| 958 | ;; be realized. | ||
| 959 | (unless (and (eq scalable-fonts-allowed old-scalable-fonts-allowed) | ||
| 960 | (eq font-list-limit old-font-list-limit) | ||
| 961 | (eq face-ignored-fonts old-face-ignored-fonts)) | ||
| 962 | (clear-face-cache))) | ||
| 963 | |||
| 952 | (run-hooks 'after-init-hook) | 964 | (run-hooks 'after-init-hook) |
| 953 | 965 | ||
| 954 | ;; If *scratch* exists and init file didn't change its mode, initialize it. | 966 | ;; If *scratch* exists and init file didn't change its mode, initialize it. |