Traffine I/O

日本語

2022-09-18

MarkdownをPrettierでフォーマットしたときのアルファベットと日本語の間に入るスペースを解消する

はじめに

PrettierはMarkdownをフォーマットすると、アルファベットと日本語の間に半角スペースが入る仕様となっています。例えば、AIエンジニアをフォーマットするとAI エンジニアとなります。

この記事では、Prettierでのフォーマット時にアルファベットと日本語の間に半角スペースが入らないようにする方法を紹介します。

解決法

Prettierは以下のディレクトリに存在します。

~/.vscode/extensions/esbenp.prettier-vscode-<Your Version>/node_modules/prettier

ディレクトリ内のindex.jsをエディタで開き、以下のコードの部分を探します。

~/.vscode/extensions/esbenp.prettier-vscode-<Your Version>/node_modules/prettier/index.js
if (lastNode && lastNode.type === "word") {
      if (lastNode.kind === KIND_NON_CJK && node.kind === KIND_CJ_LETTER && !lastNode.hasTrailingPunctuation || lastNode.kind === KIND_CJ_LETTER && node.kind === KIND_NON_CJK && !node.hasLeadingPunctuation) {
        nodes.push({
          type: "whitespace",
          value: " "
        });
      } else if (!isBetween(KIND_NON_CJK, KIND_CJK_PUNCTUATION) && // disallow leading/trailing full-width whitespace
      ![lastNode.value, node.value].some(function (value) {
        return /\u3000/.test(value);
      })) {
        nodes.push({
          type: "whitespace",
          value: ""
        });
      }
    }

以下のように修正します。

~/.vscode/extensions/esbenp.prettier-vscode-<Your Version>/node_modules/prettier/index.js
 if (lastNode && lastNode.type === "word") {
       if (lastNode.kind === KIND_NON_CJK && node.kind === KIND_CJ_LETTER && !lastNode.hasTrailingPunctuation || lastNode.kind === KIND_CJ_LETTER && node.kind === KIND_NON_CJK && !node.hasLeadingPunctuation) {
         nodes.push({
           type: "whitespace",
-           value: " "
+           value: ""
         });
       } else if (!isBetween(KIND_NON_CJK, KIND_CJK_PUNCTUATION) && // disallow leading/trailing full-width whitespace
       ![lastNode.value, node.value].some(function (value) {
         return /\u3000/.test(value);
       })) {
         nodes.push({
           type: "whitespace",
           value: ""
         });
       }
     }

value: " "となっている部分をvalue: ""の変更しています。変更を保存すると、Prettierでのフォーマット時にアルファベットと日本語の間に半角スペースが入らなくなります。

参考

https://qiita.com/kumapo0313/items/92d1597da5f3752f6584

Ryusei Kakujo

researchgatelinkedingithub

Focusing on data science for mobility

Bench Press 100kg!