【解決】AtomでPhraseExpressを使うと自動保管で重複したりインデントがずれる!?

どういった問題か?

引用元:Atom

少し早くて分かりにくいと思いますので説明します。

PhraseExpressに単語登録(下記)をしていて、それをAtom上で使っているのですが、「(」や「{」などの閉じ括弧がAtomの機能で自動補完されたり、自動インデントで不要なインデントが追加されてしまいます。ただ、これらの機能は手入力する場合はとても役に立つので、この機能はオフにしたくはありません。

PhraseExpressの単語登録

PhraseExpressで『js2;』という単語に下記を登録しています。

<script>
jQuery(document).ready(function($){
    
});
</script>

※3行目には4つの半角スペースでインデントしています

改善したい点

引用元:Atom

アニメーションの最後の画像です。1行目以外は改善したい点があります。

2~7行目
インデントが1つ分(半角スペース4つ)多い
PhraseExpressで登録したインデントの状態が良い

7行目
2行目の「(」と「{」に対して閉じ括弧が補填される
⇒PhraseExpressで閉じ括弧も登録しているため補填してほしくない
※2行目内に閉じ括弧がないため、補填される

原因

引用元:Atom
引用元:Atom

アニメーションの最後の画像です。『js3;』の場合、PhraseExpressに登録したままの形になりました。

特に設定を変更してはいないのに改善されました。理由は簡単です。PhraseExpressに登録した文字数の違いです

文字数の違い

100文字以下か、100文字より多いかで動きに違いが出ることが確認できました。

js2;』⇒69文字

<script>
jQuery(document).ready(function($){
    
});
</script>

js3;』⇒138文字※単純に『js2;』を2つ分

<script>
jQuery(document).ready(function($){
    
});
</script>
<script>
jQuery(document).ready(function($){
    
});
</script>

何が違うか?

それはUndo(Ctrl+Z)を使うとよく分かります。下記2つの動画は、『js2;』『js3;』をそれぞれ入力し、その後Undoをしています。ご覧ください。

引用元:Atom。
js2;』の場合は、複数回Undoを行うことで『js2;』に戻ります。

引用元:Atom。
js3;』の場合は、1回のUndoで『js3;』に戻ります。

これらの違いから下記を推察できます。
js2;』の場合は、1文字ずつ手書きしている。
js3;』の場合は、貼り付ける(コピペのイメージです)

Atomの機能は入力中にいろいろと補完してくれたりします。これがコピペの場合は、括弧の保管などはされません。よって、『js3;』の場合は理想の形になったわけです。

さて、100文字以上かそれ以外で動きに違いがあるので、「100」と設定されて箇所を探します。

解決方法

引用元:PhraseExpress

PhraseExpressの「ファイル」>「Settings」

引用元:PhraseExpress

「Text Insertion」>「Paste text keystroke ・・・」に文字数を指定するところがありました。

この数値を小さくすることで、短い単語登録の場合も、自動補完やインデントの問題を解決することができます