どういった問題か?
少し早くて分かりにくいと思いますので説明します。
PhraseExpressに単語登録(下記)をしていて、それをAtom上で使っているのですが、「(」や「{」などの閉じ括弧がAtomの機能で自動補完されたり、自動インデントで不要なインデントが追加されてしまいます。ただ、これらの機能は手入力する場合はとても役に立つので、この機能はオフにしたくはありません。
PhraseExpressの単語登録
PhraseExpressで『js2;』という単語に下記を登録しています。
<script> jQuery(document).ready(function($){ }); </script>
※3行目には4つの半角スペースでインデントしています
改善したい点
アニメーションの最後の画像です。1行目以外は改善したい点があります。
2~7行目
インデントが1つ分(半角スペース4つ)多い
⇒PhraseExpressで登録したインデントの状態が良い
7行目
2行目の「(」と「{」に対して閉じ括弧が補填される
⇒PhraseExpressで閉じ括弧も登録しているため補填してほしくない
※2行目内に閉じ括弧がないため、補填される
原因
アニメーションの最後の画像です。『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の「ファイル」>「Settings」
「Text Insertion」>「Paste text keystroke ・・・」に文字数を指定するところがありました。
この数値を小さくすることで、短い単語登録の場合も、自動補完やインデントの問題を解決することができます。
スポンサーリンク