Spica*

プログラミングの話。

VimFxではてなブックマーク

[2017-06-01 18:23 追記] 公式のブックマークレット、内部でhttp呼んでるからhttpsで使えない(Mixed Contentになる)!!だめじゃん!!ということでこの記事は早くも消費期限切れです

前に導入記事に加えてこれ書いたんですけど、その時はショートカットで新しくウィンドウを開いて、ブックマークさせる感じでした。で、よく考えたらブックマークレット実行してあげたほうが良いじゃんって思ってエントリ書いてます。

ちなみになんでFirefox拡張使わないのかというと、現状それ入れるとe10sが無効になるからです。

導入

下記をそれぞれconfig.js/frame.jsに入れます。

config.js

vimfx.addCommand({
  name: 'open_hatena_bookmark_entry',
  description: 'Open Hatena Bookmark Entry',
}, ({vim}) => {
  vimfx.send(vim, 'openHatena', {}, () => {});
});


let map = (shortcuts, command, custom=false) => {
  vimfx.set(`${custom ? 'custom.' : ''}mode.normal.${command}`, shortcuts)
}

map('cc', 'open_hatena_bookmark_entry', true);

frame.js

vimfx.listen('openHatena', (params, callback) => {
  var document = content.document;
  // Hatena ブックマークレットの中身
  // https://www.hatena.ne.jp/tool/bookmarklet
  (function() {
    var d = (new Date);
    var s = document.createElement('script');
    s.charset = 'UTF-8';
    s.onload = callback;
    s.src = 'https://b.hatena.ne.jp/js/Hatena/Bookmark/let.js?' + d.getFullYear() + d.getMonth() + d.getDate();
    (document.getElementsByTagName('head')[0] || document.body).appendChild(s);
  })();
});