2011-12-13 6 views
0

GNU/EmacsをAndroid用に開発するユーザーの中には、最新のAndroidツールでnew xml formatterが導入されていることは間違いありません。私はxmlファイルを編集しているので...私はXMLを編集するために優れたNXMLモードを使用しています。私はNXMLはインデント変数属性カスタマイズすることができますよう...)と私はそれでかなり満足しているしかし、ドキュメントは言う:GNU/Emacsのnxmlモードインデントをカスタマイズする

Indentation for the attributes of an element relative to the start-tag. Hide 
This only applies when the first attribute of a tag starts a line. 
In other cases, the first attribute on one line is indented the same 
as the first attribute on the previous line. 

何重要なのは、スタンドアロンの属性が要素と同じ行にある場合に、最初の属性にその属性が揃うフォールバックです。

これは、Android Tools互換のインデントを取得するために、この動作を変更することは可能ですか?私はマニュアルには何も見つからないし、失敗した...

アップデートグーグル:

コメントは、私は明確ではないんだということを理解するために私を助けを。

<?xml version="1.0" encoding="utf-8"?> 
<manifest xmlns:android="http://schemas.android.com/apk/res/android" 
      package="org.foo.bar" 
      android:versionCode="1" 
      android:versionName="1.0"> 

    <uses-sdk android:minSdkVersion="8" /> 
    <application 
     android:label="@string/app_name" 
     android:icon="@drawable/ic_launcher"> 

    <activity 
     android:name="Foo" 
     android:label="@string/foo" /> 

    <activity android:name="Bar" 
       android:label="@string/bar" /> 

    </application> 

</manifest> 

私が取得したいと思い何を::

<?xml version="1.0" encoding="utf-8"?> 
<manifest xmlns:android="http://schemas.android.com/apk/res/android" 
    package="org.foo.bar" 
    android:versionCode="1" 
    android:versionName="1.0"> 

    <uses-sdk android:minSdkVersion="8" /> 
    <application 
     android:label="@string/app_name" 
     android:icon="@drawable/ic_launcher"> 

    <activity 
     android:name="Foo" 
     android:label="@string/foo" /> 

    <activity android:name="Bar" 
     android:label="@string/bar" /> 

    </application> 

</manifest> 

最初のケース(デフォルトNXMLモードのインデントの挙動):

したがって、ここではNXMLモードがデフォルトで何をするかの例です。
  • manifest要素のpackage属性はxmlns:android decl
  • と整列されますBar activity要素の属性はandroid:name要素に揃えられています。

第二の場合(意図した結果):manifest要素はBar activity要素のandroid:label属性が親manifest要素プラススペース

  • の設定可能な数と位置合わせされるの

    • package属性親要素と構成可能な数のスペースを揃えたもの

    I ha veはnxmlモードのソースコードを閲覧し、字下げ動作はnxml-indent-lineで始まりますが、私は多くのサブコールに従わずにdefunをカスタマイズする必要があります.Lispの知識が不足しています。

    あなたはmanifest二属性が最初

    乾杯と整合していないことを見ることができ、

    ルノー

  • +0

    いくつかのXMLの例を表示できますか?私は、あなたが「この要素が要素と同じ行にある場合、スタンドアロンの属性が最初の属性に揃うフォールバック」という意味を理解していません。 – mzjn

    +0

    質問がXMLスニペットで更新されました;)申し訳ありませんが、最初に入れておく必要があります... – Renaud

    答えて

    1

    doesnの(ほとんどのAndroidのコーディングとフォーマット規則に準拠するために大規模な頭痛を管理していません) nxml-compute-indent-in-start-tag機能にハードコードされているように見えるので、その動作は簡単に変更可能であるように見えます。

       (let* ((att (car atts)) 
            (start (xmltok-attribute-name-start att))) 
           (when (< start pos) 
            (goto-char start) 
            (setq off 0)))) 
    

    あなたは、元の実装をオーバーライドしますた(常にこれらの行をコメントアウトし、あなた自身のinitファイルにそのメソッドをコピーして、NXMLモードのロード後に関数定義を読み込むことができます:コードの関連するチャンクは、このように見えます)。

    gnu emacsの管理者に、この動作を簡単にカスタマイズ可能にするために、拡張要求を提出することもできます。

    +0

    ありがとう、私はそれを動作させることができたら(そしてあなたの答えを検証する) – Renaud

    関連する問題