Having specified the header this section explains how the indentation scripting itself works. The basic skeleton of the body looks like this: triggerCharacters = "{}/:;"; function indent(line, indentWidth, ch) {/ / called for each newline (ch == '\ ') and all characters specified in / / the global variable triggerCharacters. When calling Tools Align / / the variable ch is empty, i. e. ch ==' '. / / / / see also: Scripting API return -2;} The function indent() has three parameters: line: the line that has to be indented indentWidth: the indentation width in amount of spaces ch: either a newline character (ch == '\'), the trigger character specified in triggerCharacters or empty if the user invoked the action Tools Align. The return value of the indent() function specifies how the line will be indented. If the return value is a simple integer number, it is interpreted as follows: return value -2: do nothing return value -1: keep indentation (searches for previous non-blank line) return value 0: numbers & gt; = 0 specify the indentation depth in spaces Alternatively, an array of two elements can be returned: return [indent, align]; In this case, the first element is the indentation depth like above with the same meaning of the special values. However, the second element is an absolute value representing a column for alignment. If this value is higher than the indent value, the difference represents a number of spaces to be added after the indentation of the first parameter. Otherwise, the second number is ignored. Using tabs and spaces for indentation is often referred to as mixed mode.
Тепер, озброєні знаннями про формат заголовка, ви можете перейти до вивчення того, як же працює сам скрипт встановлення відступів. Основа подібного скрипту виглядає так: triggerCharacters = "{} /:;"; function indent( line, indentWidth, ch) {// скрипт буде викликано під час обробки символу нового рядка (ch == '\') і всіх символів, вказаних у // загальній змінній triggerCharacters. Під час використання пункту меню Інструменти Вирівняти // змінна ch матиме порожнє значення, тобто ch == ''. // // див. також розділ « Інтерфейс (API) роботи зі скриптами » return - 2;} У функції indent () передбачено три параметри: line: рядок, у якому слід встановити відступ indentWidth: ширина відступу у пробілах ch: символ нового рядка (ch == '\'), символ перемикання, вказаний за допомогою triggerCharacters або порожній рядок, якщо користувачем було обрано пункт меню Інструменти Вирівняти. Значення, повернуте функцією indent (), визначатиме спосіб встановлення відступу у рядку. Якщо буде повернуто ціле число, його обробку буде виконано за такими варіантами: повернуто значення - 2: нічого не робити повернуто значення - 1: зберегти відступ (його буде визначено на основі попереднього непорожнього рядка) повернуто значення 0: числа & gt; = 0 визначають глибину відступу у пробілах Крім того, може бути повернуто масив з двох елементів: повернуто [відступ, вирівнювання]; Першим елементом такого масиву є глибина відступу, подібна на значення, про яке ми говорили раніше. Інший же елемент є абсолютним значенням, що відповідає стовпчику « вирівнювання ». Якщо це значення буде більшим за значення відступу, до відступу після додавання відступу, визначеного першим параметром, буде додано різницю між цими значенням. Якщо ж значення другого параметра буде меншим за відступ, його буде проігноровано. Одночасне використання для встановлення відступів пробілів і символів табуляції часто називають « мішаним режимом ».