+emacs+开机启动wttrin天气界面
让每次启动Emacs时都能看见指定位置的天气。
1. 安装软件
melpa
安装wttrin
包
2. 设置本地天气
- 进入wttrin网页,查看左上角显示的本地城市名称,如
AAA, China
- 如下配置wttrin包
(use-package wttrin :config (setq wttrin-default-languages '("Accept-Language" . "zh-CN,zh")))
3. 调整显示界面
如果你用的全局中英文等宽字体,忽略以下部分。
如果不是,先设置字体界面。在custom-set-faces
中加入相关字体样式:
(custom-set-faces ;; custom-set-faces was added by Custom. ;; If you edit it by hand, you could mess it up, so be careful. ;; Your init file should contain only one such instance. ;; If there is more than one, they won't work right. '(wttrin-buffer-face ((t (:family "Sarasa Term SC")))))
然后为wttrin-buffer-face
设置中英文字体:
(defun create-variable-pitch-fontset (name ascii-font han-font) "Create fontset named NAME with given ASCII-FONT and HAN-FONT." (let ((registry (concat "fontset-variable pitch " name))) (create-fontset-from-fontset-spec (font-xlfd-name (font-spec :family ascii-font :registry registry))) (set-fontset-font registry 'han (font-spec :family han-font)) (set-fontset-font registry 'cjk-misc (font-spec :family han-font)))) (create-variable-pitch-fontset "regular" "Sarasa Term SC" "Sarasa Term SC") (set-face-attribute 'wttrin-buffer-face nil :fontset "fontset-variable pitch regular")
最后覆盖wttrin-qurey
函数:
(defun wttrin-query (location-name) "Query weather of LOCATION-NAME via wttrin, display the result in new buffer." (let ((raw-string (wttrin-fetch-raw-string location-name))) (if (string-match "ERROR" raw-string) (message "Cannot retrieve weather data. Perhaps the location was misspelled?") (let ((buffer (get-buffer-create (format "*wttr.in*"))) date-time-stamp location-info) (switch-to-buffer buffer) (setq buffer-read-only nil) (erase-buffer) ;; Enable `truncate-lines` to avoid garbling the output in small windows (setq truncate-lines t) ;; set the preferred font attributes for this buffer only ;; (setq buffer-face-mode-face `(:family ,wttrin-font-name :height ;; ,wttrin-font-height)) (setq buffer-face-mode-face 'wttrin-buffer-face) ;; display buffer text and insert wttr.in data (buffer-face-mode t) (insert (xterm-color-filter raw-string)) ;; rearrange header information (goto-char (point-min)) (forward-line 4) (setq date-time-stamp (buffer-substring-no-properties (line-beginning-position) (line-end-position))) (goto-char (point-min)) (forward-line 6) (setq location-info (buffer-substring-no-properties (line-beginning-position) (line-end-position))) (goto-char (point-min)) (forward-line 8) (delete-region (point-min) (line-beginning-position)) (insert "\n" location-info "\n" date-time-stamp "\n\n\n") ;; provide user instructions (goto-char (point-max)) (insert "\nPress: [g] to query another location\n") (insert " [q] to quit\n") ;; align buffer to top (goto-char (point-min)) ;; create choice keymap and disallow modifying buffer (use-local-map (make-sparse-keymap)) (local-set-key "q" 'wttrin-exit) (local-set-key "g" 'wttrin-requery) (setq buffer-read-only t)))))
4. 启动时显示天气
在启动文件的最后一行加上以下命令:
(wttrin-query "AAA, China")