HTML - シンタックスハイライト - prism.js - Copy 時の末尾に改行を追加

クラウディア 
1. 概要
2. 編集

1. 概要

 ご存知だろうか?  本サイトは、現在、コードの記述には、この「prism.js」を使用しているのでありますが。  コードの記述を、パソコン上のブラウザで開くと、少なくとも「Vivaldi」(ということは「Chromium」系列)であれば、コードの記述上にマウスカーソルを持って行くと、「言語名 Copy」という表示があらわれます。  この「Copy」をクリックすると、そのコードがそのままクリップボードにコピーされるので。  「Unix」や「Linux」のコマンド記述をコピーすれば、「Unix(Linux)」の端末にそのままペーストして貼り付けられるということを。  「Windows」のコマンドプロンプトでも、同じことができます。  ただ、ちょっと面倒なのが、クリップボードにコピーする際、末尾の1行に改行がはいらないので、複数行のコマンドをコピーしてペーストする際は、末尾で一発 Enter を打たなければならないので、面倒なのだ。  それで、コピーする際に、末尾に改行を追加したいというわけです。

2. 編集

 「prism.js」を開いて、「copy-to-clipboard」を検索します。  2つ目くらいに、下記のようなコードが見つかるはずです。

!function(){if("undefined"!=typeof self&&self.Prism&&self.document){if(!Prism.plugins.toolbar)return console.warn("Copy to Clipboard plugin loaded before Toolbar plugin."),void 0;var o=window.Clipboard||void 0;/(native code)/.test(o.toString())&&(o=void 0),o||"function"!=typeof require||(o=require("clipboard"));var t=[];if(!o){var e=document.createElement("script"),n=document.querySelector("head");e.onload=function(){if(o=window.Clipboard)for(;t.length;)t.pop()()},e.src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/1.5.8/clipboard.min.js",n.appendChild(e)}Prism.plugins.toolbar.registerButton("copy-to-clipboard",function(e){function n(){var t=new o(i,{text:function(){return e.code}});t.on("success",function(){i.textContent="Copied!",r()}),t.on("error",function(){i.textContent="Press Ctrl+C to copy",r()})}function r(){setTimeout(function(){i.textContent="Copy"},5e3)}var i=document.createElement("a");return i.textContent="Copy",o?n():t.push(n),i})}}();
 改行がないのでつらいところですが・・・。  その中に

var t=new o(i,{text:function(){return e.code}});
 というコードがあります。  これを

var t=new o(i,{text:function(){return e.code+"\n"}});
 に変えてやれば、コピー時、末尾に改行が追加されます。
earthcar(アースカー)