Autohotkey: скрипт для автоматического отступа горячей строки в следующей строке - PullRequest
1 голос
/ 04 октября 2019

Я создал скрипт Autohotkey, который расширяет некоторые полезные HTML-теги, например, когда вы набираете текст, он автоматически расширяет его и создает новую строку с одним символом табуляции и помещает курсор между ними, как показано ниже (как редактор кода)

<div>

</div>

Этот код похож на

:*:<div>::<div>`n`t`n</div>{up}

Но когда я набрал тот же код после одного пробела, он должен перенастроить закрывающий тег с пробелами, присутствующими перед открывающим тегом. Как и теги внутри

<div>
     <div>

     </div>
<div>

Для одной вкладки код выглядит следующим образом:

:*:<div>::<div>`n`t`t`n`t</div>{up}

Я не знаю, как объединить два приведенных выше кода таким образом, чтобы независимо от того, где находятся табуляциизакрывающие теги должны быть помещены в тот же отступ, что и их открывающие теги

1 Ответ

2 голосов
/ 07 октября 2019

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

Редактировать: Модифицированный код на основе комментариевниже

:*:<div>::
:*:<html>::
:*:<title>::
:*:<body>::
f_TagReplace( SubStr( A_ThisHotkey , 4 ) , "</" . SubStr( A_ThisHotkey , 5 ))
Return

:*:{::
f_TagReplace( "{{}" , "{}}" )
Return

f_TagReplace( sTag , sTagEnd )
{
    Clipboard := ""
    Send , +{home}^c
    ClipWait , 0.2
    Send , ^v%sTag%`n^v`t`n^v%sTagEnd%{up}{end}
}

(Оригинальный код для справки)

:*:<div>::
:*:<html>::
:*:<title>::
:*:<body>::
f_TagReplace( SubStr( A_ThisHotkey , 4 ))
Return

f_TagReplace( sTag )
{
    sTagEnd := "</" . SubStr( sTag , 2 )
    Clipboard := ""
    Send , +{home}^c
    ClipWait , 0.2
    Send , ^v%sTag%`n^v`t`n^v%sTagEnd%{up}
}
...