日日操夜夜添-日日操影院-日日草夜夜操-日日干干-精品一区二区三区波多野结衣-精品一区二区三区高清免费不卡

公告:魔扣目錄網(wǎng)為廣大站長(zhǎng)提供免費(fèi)收錄網(wǎng)站服務(wù),提交前請(qǐng)做好本站友鏈:【 網(wǎng)站目錄:http://www.ylptlb.cn 】, 免友鏈快審服務(wù)(50元/站),

點(diǎn)擊這里在線咨詢客服
新站提交
  • 網(wǎng)站:51998
  • 待審:31
  • 小程序:12
  • 文章:1030137
  • 會(huì)員:747

之前,我在寫(xiě)有關(guān)embark的內(nèi)容,我的第一設(shè)備為啟動(dòng)遠(yuǎn)程視頻流設(shè)計(jì)了一個(gè)新的 embark。embark 的作者 Omar Antolín Camarena 不僅閱讀了這篇內(nèi)容,還點(diǎn)評(píng)了一下我認(rèn)為值得跟進(jìn)的一些重大改進(jìn)。

首先,你應(yīng)該記得我們?cè)x過(guò)一個(gè)檢測(cè)視頻 URL 的函數(shù):

    (defun jao-video-finder 
      "Check whether we're looking at a video URL.
    Return (video-url . 

當(dāng)我們得到了一個(gè)非空的 url值,即便它不是一個(gè)視頻鏈接,但它仍然是一個(gè)確切的 URL,并且 embark 已有了一個(gè)url類(lèi)別,所以我們可以借助默認(rèn)的 URL 尋檢器存儲(chǔ)一個(gè)新的句法分析,語(yǔ)句如下:

    (when-let ((url (thing-at-point-url-at-point)))
      (cons (if (string-match-p jao-video-url-rx url) 'video-url 'url) url))

這里有一個(gè)潛在的缺點(diǎn)就是:我們重寫(xiě)了 embark 的尋檢器,
embark-target-url-at-point,所以我們可能更愿意保留后者。

實(shí)際上多虧了 embark 的 目標(biāo)轉(zhuǎn)換器我們才能做成。我們可以在embark-transformers-alist中添加任意一個(gè)函數(shù),應(yīng)用于任何一個(gè)給定類(lèi)別的目標(biāo),而 embark 會(huì)將其轉(zhuǎn)換后的值應(yīng)用于它的操作中。Omar 很貼切地把這個(gè)過(guò)程稱(chēng)為“目標(biāo)的精化”;我們具體做法如下:

    (defun jao-refine-url-type (url)
      "Refine type of URL in case it is a video."
      (cons (if (string-match-p jao-video-url-rx url) 'video-url 'url) url))

    (add-to-list 'embark-transformer-alist '(url . jao-refine-url-type))

通過(guò)這種策略,我們就不再需要 jao-video-finder了,而且從概念上來(lái)說(shuō),我們的video-url應(yīng)該被定義為一個(gè)精化操作而并非是一個(gè)目標(biāo) [腳注 1]。Omar 的第二個(gè)提議也與這個(gè)概念相契合:想必我們都希望所有關(guān)于url和我們的video-url的操作都是可用的,不是嗎? 唔,這就是為什么我們用來(lái)定義行為的embark-define-keymap的宏可以通過(guò)使用關(guān)鍵字 [腳注 2]:parent繼承其他鍵映射中已經(jīng)定義的所有操作的原因:

    (embark-define-keymap jao-video-url-map
      "Actions on URLs pointing to remote video streams."
      :parent embark-url-map
      ("p" jao-play-video-url))

    (add-to-list 'embark-keymap-alist '(video-url . jao-video-url-map))

這種繼承鍵映射的功能并非是 embark 的附屬功能:vanilla Emacs 鍵映射通過(guò)標(biāo)準(zhǔn)函數(shù) set-keymap-parent已經(jīng)搞定它了。你可以完全不用embark-define-keymap來(lái)定義jao-video-url-map,工作原理是一樣的。

這樣,我們的代碼就能夠更短,特征更多:謝謝你,Omar!

腳注 1:在某些情況下,保留 jao-video-finder 是有意義的,即,如果我們想要改變檢測(cè) URL 的功能的話。例如,我在使用 emacs-w3m 的時(shí)候,經(jīng)常有一個(gè) URL 作為文本屬性儲(chǔ)存了起來(lái)(實(shí)際文本是個(gè)鏈接文本)。要通過(guò)那里檢索 URL,就需要調(diào)用w3m-anchor,而用
embark-target-url-at-point就會(huì)錯(cuò)過(guò)它。對(duì)于這種情況,我最終編寫(xiě)(并使用)jao-video-finder將其通過(guò)下文定義:

    (when-let ((url (or (w3m-anchor) (thing-at-point-url-at-point))))
      (cons (if (string-match-p jao-video-url-rx url) 'video-url 'url) url))

另一種達(dá)成同件事情的方式(再次向 Omar 致敬)便是為 w3m 的錨點(diǎn)放置一個(gè)特定的巡檢器(且繼續(xù)使用 video-url 的轉(zhuǎn)換器):

    (defun jao-w3m-url-finder 
      (when-let ((url (w3m-anchor)))
        (cons 'url url)))

    (add-to-list 'embark-target-finders #'jao-w3m-url-finder)

這種方法更加模塊化,并且取決于你們的喜好,且更加巧妙。這些功能都很小巧并且兩種方法之間并沒(méi)有太大的差別,但是如果其中某一種繼續(xù)加入更多尋檢器的話,前一種方法用起來(lái)來(lái)反而會(huì)讓一切變得更糟。

腳注 2:在我最開(kāi)始的例子中,我在視頻地圖中還添加了browse-urlbrowse-url-firefox。前一個(gè)已不再重要,因?yàn)樗呀?jīng)在embark-url-map中出現(xiàn)過(guò)了,如果我們想讓browse-url-firefox對(duì)所有的 URLs 可用,我們可以將其加入到embark-url-map(謹(jǐn)記,embark 的鍵映射只是 Emacs 的鍵映射)。這是另一種擴(kuò)展 embark 的簡(jiǎn)便方法。

(題圖:MJ:emacs video geek wallpaper dark plain background Illustration)

via: https://jao.io/blog/an-even-better-video-wharf.html

作者:jao選題:lujun9972譯者:Drwhooooo校對(duì):wxy

本文由 LCTT原創(chuàng)編譯,linux中國(guó)榮譽(yù)推出

分享到:
標(biāo)簽:視頻
用戶無(wú)頭像

網(wǎng)友整理

注冊(cè)時(shí)間:

網(wǎng)站:5 個(gè)   小程序:0 個(gè)  文章:12 篇

  • 51998

    網(wǎng)站

  • 12

    小程序

  • 1030137

    文章

  • 747

    會(huì)員

趕快注冊(cè)賬號(hào),推廣您的網(wǎng)站吧!
最新入駐小程序

數(shù)獨(dú)大挑戰(zhàn)2018-06-03

數(shù)獨(dú)一種數(shù)學(xué)游戲,玩家需要根據(jù)9

答題星2018-06-03

您可以通過(guò)答題星輕松地創(chuàng)建試卷

全階人生考試2018-06-03

各種考試題,題庫(kù),初中,高中,大學(xué)四六

運(yùn)動(dòng)步數(shù)有氧達(dá)人2018-06-03

記錄運(yùn)動(dòng)步數(shù),積累氧氣值。還可偷

每日養(yǎng)生app2018-06-03

每日養(yǎng)生,天天健康

體育訓(xùn)練成績(jī)?cè)u(píng)定2018-06-03

通用課目體育訓(xùn)練成績(jī)?cè)u(píng)定