Симпатичные XML-файлы печати на Emacs

Toast и Intent, оба требуют ссылки на контекст . И getApplication, getApplicationContext, LoginActivity.this и getBaseContext, все они предлагают ссылку на контекст.

Теперь это смущает декларация разных контекстов и их специфическое использование.

  1. Контекст приложения
  2. Контекст активности

  • Контекст приложения привязан к жизненному циклу приложения и всегда будет таким же на протяжении всего срока службы. Поэтому, если вы используете Toast , вы можете использовать контекст приложения или даже контекст активности (оба), потому что тост может быть поднят из любого места в вашем приложении и не привязан к окну.

    Контекст активности привязан к жизненному циклу Деятельности и может быть уничтожен, если возникает onDestroy() активности. Если вы хотите запустить новое действие, вам нужно будет использовать контекст активности в своем Intent , чтобы новая активность запуска была связана с текущей деятельностью (с точки зрения стека активности). Однако вы также можете использовать контекст приложения для запуска нового действия, но тогда вам нужно установить флаг Intent.FLAG_ACTIVITY_NEW_TASK в намерении рассматривать его как новую задачу.

    Теперь, ссылаясь на ваши случаи:

    LoginActivity.this, хотя его ссылка на ваш собственный класс, который расширяет класс Activity, но базовый класс (Activity) также расширяет класс Context, поэтому его можно использовать для контекста активности.

    getApplication(), хотя его ссылка на объект Application, но класс Application расширяет класс Context, поэтому его можно использовать для предоставления контекста приложения.

    getApplicationContext() предлагает контекст приложения.

    getBaseContext() предлагает контекст активности.

    Советы: всякий раз, когда вам нужно манипулировать Views, перейдите в Activity-Context, иначе Application-Context будет достаточно.

  • 80
    задан Community 11 September 2008 в 02:13
    поделиться

    7 ответов

    Я использую nXML режим для редактирования и Опрятный , когда я хочу отформатировать и расположить с отступом XML или HTML. Существует также интерфейс Emacs для Уборки.

    25
    ответ дан Jeff Trull 5 November 2019 в 17:28
    поделиться

    Вы не должны даже писать свою собственную функцию - sgml-режим (гну emacs базовый модуль) имеет встроенную симпатичную вызванную функцию печати (sgml-структурная-распечатка-программы...), который занимает начало региона и аргументы конца.

    , Если Вы вырезаете и вставляете xml и Вы находите, что Ваш терминал прерывает строки в произвольных местах, можно использовать этот симпатичный принтер , который фиксирует прерывистые линии сначала.

    103
    ответ дан Juan Garcia 5 November 2019 в 17:28
    поделиться

    Если Вам только нужно симпатичное расположение с отступом, не представляя новых разрывов строки, можно подать заявку эти indent-region команда ко всему буферу с этими нажатиями клавиш:

    C-x h
    C-M-\
    

    , Если также необходимо представить разрывы строки, так, чтобы открывающие и закрывающие тэги были на отдельных строках, Вы могли использовать следующую очень хорошую функцию elisp, записанную Benjamin Ferrari . Я нашел его на его блоге, и надеются, что для меня нормально воспроизводить его здесь:

    (defun bf-pretty-print-xml-region (begin end)
      "Pretty format XML markup in region. You need to have nxml-mode
    http://www.emacswiki.org/cgi-bin/wiki/NxmlMode installed to do
    this.  The function inserts linebreaks to separate tags that have
    nothing but whitespace between them.  It then indents the markup
    by using nxml's indentation rules."
      (interactive "r")
      (save-excursion
          (nxml-mode)
          (goto-char begin)
          (while (search-forward-regexp "\>[ \\t]*\<" nil t) 
            (backward-char) (insert "\n"))
          (indent-region begin end))
        (message "Ah, much better!"))
    

    Это не полагается на внешний инструмент как Опрятный.

    85
    ответ дан Christian Berg 5 November 2019 в 17:28
    поделиться
    1. nxml-режим Emacs может работать над представленным форматом, но необходимо будет разделить строки.
    2. Для более длинных файлов, который просто не стоит того. Запустите эту таблицу стилей (идеально с саксом, который, по моему скромному мнению, получает отступы строки о праве) против более длинных файлов для получения хорошей структурной распечатки программы. Для любых элементов, где Вы хотите сохранить пробел, добавляют их имена вместе с 'programlisting' как в 'programlisting yourElementName'

    HTH

    2
    ответ дан DaveP 5 November 2019 в 17:28
    поделиться

    Опрятный похож на хороший режим. Должен посмотреть на него. Будет использовать его, если мне действительно будут нужны все функции, это предлагает.

    Так или иначе, эта проблема ворчала меня приблизительно в течение недели, и я не искал правильно. После регистрации я начал искать и нашел один сайт с функция elisp , который делает это довольно хороший. Автор также предлагает использовать Опрятный.

    спасибо за ответ Marcel <забастовка> (слишком плохо у меня нет достаточного количества точек к upmod Вами) .

    <забастовка> скоро отправит об этом на моем блоге. Вот сообщение об этом (со ссылкой на сайт Marcel).

    1
    ответ дан cnu 5 November 2019 в 17:28
    поделиться

    Боюсь, мне гораздо больше нравится версия Бенджамина Феррари. Внутренний красивый вывод всегда помещает конечный тег в новую строку после значения, вставляя нежелательный CR в значения тегов.

    0
    ответ дан 24 November 2019 в 09:44
    поделиться

    Emacs может запускать произвольные команды с M- |. Если у вас установлен XMLLINT:

    «M- | XMLLINT --Format -» отформатирует выбранную область

    «Cu M- | XMLLINT - Format -» сделает то же самое, заменив область выходом

    35
    ответ дан 24 November 2019 в 09:44
    поделиться
    Другие вопросы по тегам:

    Похожие вопросы: