zoukankan      html  css  js  c++  java
  • emacs-w3m查看html帮助手册

    emacs-w3m查看html帮助手册

    emacs-w3m查看html帮助手册

    1 使用效果

    使用快捷键C-c C-j之后,打开如图所示的输入界面,可以用 正则表达式 搜索想要的API,查找非常方便:

    screenshot_2016-12-31_10-43-19.png

    用emacs-w3m打开html文件的效果如图:

    screenshot_2016-12-31_10-44-05.png

    2 为什么要用emacs-w3m来查看html的帮助手册?

    • 每次打开firefox,要等待较长时间,只为查看一个API的用法,感觉不爽。
    • 直接用emacs将html文件当作文本文件打开,一堆的tags不方便看。
    • 用浏览器搜索命令不够方便,不如emacs的正则表达式来的带劲。
    • 就是喜欢在emacs中做所有的事,这一条就够了。

    4 配置

    ;;; init-emacs-w3m.el --- Summary
    ;;; Commentary:
    ;; comments
    
    ;;; Code:
    (use-package w3m
      :commands (w3m)
      :config
      ;; (require 'w3m-load)
      (setq w3m-coding-system 'utf-8
            w3m-file-coding-system 'utf-8
            w3m-file-name-coding-system 'utf-8
            w3m-input-coding-system 'utf-8
            w3m-output-coding-system 'utf-8
            w3m-terminal-coding-system 'utf-8)
      (setq w3m-use-cookies t)
      (setq w3m-cookie-accept-bad-cookies t)
      (setq w3m-home-page
            (if (file-readable-p (expand-file-name "html/home.html" unimacs-tempfiles-dir))
                (concat "file://" (expand-file-name "html/home.html" unimacs-tempfiles-dir))
              "http://www.baidu.com"))
    
      ;; set proxy
      (defun toggle-env-http-proxy ()
        "set/unset the environment variable http_proxy which w3m uses"
        (interactive)
        (let ((proxy "http://proxynj.huawei.com:8080"))
          (if (string= (getenv "http_proxy") proxy)
              ;; clear the the proxy
              (progn
                (setenv "http_proxy" "")
                (message "env http_proxy is empty now")
                )
            ;; set the proxy
            (progn
              (setenv "http_proxy" proxy)
              (message "env http_proxy is %s now" proxy)
              ))))
    
      (setq w3m-use-toolbar t
            w3m-key-binding 'info)
    
      ;; show images in the browser
      ;; (setq w3m-default-display-inline-images t)
      ;; (setq w3m-default-toggle-inline-images t)
      (setq w3m-view-this-url-new-session-in-background t)
      ;;显示图标
      (setq w3m-show-graphic-icons-in-header-line t)
      (setq w3m-show-graphic-icons-in-mode-line t)
    
      (setq w3m-search-default-engine "b")
      (eval-after-load "w3m-search"
        '(progn
           ;; C-u S g RET <search term> RET
           (add-to-list 'w3m-search-engine-alist '("b" "http://www.baidu.com/search?hl=en&q=%s" utf-8))
           (add-to-list 'w3m-search-engine-alist '("g" "http://www.google.com.au/search?hl=en&q=%s" utf-8))
           (add-to-list 'w3m-search-engine-alist '("wz" "http://zh.wikipedia.org/wiki/Special:Search?search=%s" utf-8))
           (add-to-list 'w3m-search-engine-alist '("q" "http://www.google.com.au/search?hl=en&q=%s+site:stackoverflow.com" utf-8))
           (add-to-list 'w3m-search-engine-alist '("s" "http://code.ohloh.net/search?s=%s&browser=Default"  utf-8))
           (add-to-list 'w3m-search-engine-alist '("bl" "http://blogsearch.google.com.au/blogsearch?q=%s" utf-8))
           (add-to-list 'w3m-search-engine-alist '("w" "http://en.wikipedia.org/wiki/Special:Search?search=%s" utf-8))
           (add-to-list 'w3m-search-engine-alist '("d" "http://dictionary.reference.com/search?q=%s" utf-8))
           (add-to-list 'w3m-search-engine-alist '("j" "http://www.google.com.au/search?ie=UTF-8&oe=UTF-8&sourceid=navclient&btnI=1&q=%s+site:developer.mozilla.org" utf-8))
           ))
    
      (setq w3m-command-arguments       '("-F" "-cookie")
            w3m-mailto-url-function     'compose-mail
            browse-url-browser-function 'w3m
            mm-text-html-renderer       'w3m)
    
      ;; bind this function to ‘a’, which is the normal w3m bookmark binding:
      (eval-after-load "w3m" '(progn
                                (w3m-lnum-mode 1)
                                ))
    
      ;; external browser
      (setq browse-url-generic-program
            (cond
             (*is-a-mac* "open")
             (*linux* (executable-find "firefox"))
             ))
      (setq browse-url-browser-function 'browse-url-generic)
    
      ;; use external browser to search programming stuff
      (defun w3mext-hacker-search ()
        "search word under cursor in google code search and stackoverflow.com"
        (interactive)
        (require 'w3m)
        (let ((keyword (w3m-url-encode-string (thing-at-point 'symbol))))
          ;; google
          (browse-url-generic
           (concat "http://www.google.com.au/search?hl=en&q=%22"
                   keyword
                   "%22"
                   (if buffer-file-name
                       (concat "+filetype%3A" (file-name-extension buffer-file-name))
                     "")  ))
          (browse-url-generic
           (concat "http://www.google.com.au/search?hl=en&q="
                   keyword
                   "+site:stackoverflow.com" ))
          ;; koders.com
          (browse-url-generic
           (concat "http://code.ohloh.net/search?s=""
                   keyword
                   ""&browser=Default&mp=1&ml=1&me=1&md=1&filterChecked=true" ))
          ))
    
      (defun w3mext-open-link-or-image-or-url ()
        "Opens the current link or image or current page's uri or any url-like text under cursor in firefox."
        (interactive)
        (let (url)
          (if (or (string= major-mode "w3m-mode") (string= major-mode "gnus-article-mode"))
              (setq url (or (w3m-anchor) (w3m-image) w3m-current-url)))
          (browse-url-generic (if url url (car (browse-url-interactive-arg "URL: "))))
          ))
      (global-set-key (kbd "C-c b") 'w3mext-open-link-or-image-or-url)
    
      (defun w3mext-search-js-api-mdn ()
        "search current symbol under cursor in Mozilla Developer Network (MDN)"
        (interactive)
        (let ((keyword (thing-at-point 'symbol)))
          (w3m-search "j" keyword)
          ))
    
      (add-hook 'prog-mode-hook '( lambda () (local-set-key (kbd "C-c ; h") 'w3mext-hacker-search)))
    
      ;; Find in blog.
      ;; @see: http://blog.csdn.net/superwen_go/article/details/8241601
      (add-hook 'w3m-fontify-after-hook 'remove-w3m-output-garbages)
      (defun remove-w3m-output-garbages ()
        "去掉w3m输出的垃圾."
        (interactive)
        (let ((buffer-read-only))
          (setf (point) (point-min))
          (while (re-search-forward "[200-240]" nil t)
            (replace-match " "))
          (set-buffer-multibyte t))
        (set-buffer-modified-p nil))
      )
    
    (provide 'init-emacs-w3m)
    ;;; init-emacs-w3m.el ends here
    

    5 额外资源

    如果找不到w3m的执行程序,可以在我的github上面下载,这个是最新版的:
    https://github.com/yangwen0228/unimacs/tree/master/utils/extra-bins/msys64

    也可以下载我的配置,或者使用其中的部分配置,配置文件放置在 personal/configures中。

    Date: 2016-12-31 10:38

    Created: 2017-03-11 周六 21:53

    Emacs 26.0.50.4 (Org mode 8.2.10)

    Validate

  • 相关阅读:
    2018 桂林ccpc现场赛 总结
    2018 南京icpc现场赛总结
    nowcoder 203J Graph Coloring I(dfs)
    nowcoder 203A Knight(贪心+打表)
    nowcoder 202H-卡牌游戏
    nowcoder 202F-平衡二叉树
    topcoder srm 738 div1 FindThePerfectTriangle(枚举)
    codeforces 1041 E.Vasya and Good Sequences(暴力?)
    hdu 3507 Print Article(dp+斜率优化)
    hdu 1007 Quoit Design(分治)
  • 原文地址:https://www.cnblogs.com/yangwen0228/p/4269923.html
Copyright © 2011-2022 走看看