basyura's blog

あしたになったらほんきだす。

vivaldi + cVim でタブが意図せず閉じられてしまうのを修正

ちょっとした挙動が気になってしまい fork して使っている。数か月前の vivaldi のアップデートから cVim の closeTab でピン留めされたタブも、最後のタブも閉じてしまって困る。CPU とメモリがもったいなくて基本的にタブはすぐに閉じてしまう派なので特に最後のタブを閉じてしまったついでに vivaldi も閉じられてしまうことがよくある。vivaldi のアップデートで直ると思って待っていたのだけど、いっこうに直らないし報告しても取り上げてもらえない気がするので自分で直す。

chrome.tabs - Google Chrome

↑このへんをチラ見しながら。

diff --git a/background_scripts/actions.js b/background_scripts/actions.js
index 96b8591..dcd7bc7 100644
--- a/background_scripts/actions.js
+++ b/background_scripts/actions.js
@@ -162,6 +162,12 @@ Actions = (function() {
   };
 
   _.closeTab = function(o) {
+
+    if (o.sender.tab.pinned)
+    {
+      return;
+    }
+
     chrome.tabs.query({currentWindow: true}, function(tabs) {
       var sortedIds = tabs.map(function(e) { return e.id; });
       var base = o.sender.tab.index;
@@ -171,6 +177,12 @@ Actions = (function() {
       if (base < 0) {
         base = 0;
       }
+
+      if (tabs.length == 1)
+      {
+        chrome.tabs.create({ url: "about:blank" });
+      }
+
       chrome.tabs.remove(sortedIds.slice(base, base + o.request.repeats));
     });
   };

最後のタブを閉じた時に作り直すので微妙にちらつくのが気になるけど vivaldi ごと閉じられることに比べたら問題にならない。tabs#update を使う手もあるけど歴が残るので戻れてしまう。< が有効になるぐらいで実害は無いのだけど tabs#create で様子見することにする。

Vivaldi Edition

Vivaldi Edition