Запись файла сеанса для одного из файлов, которые будут открыты Notepad++ 7.4.2:

<File firstVisibleLine="36070" xOffset="0" scrollWidth="1232" startPos="1677659" endPos="1677659" selMode="0" lang="Normal Text" encoding="-1" filename="<pathToFile>" backupFilePath="" originalFileLastModifTimestamp="1547671177" mapFirstVisibleDisplayLine="39239" mapFirstVisibleDocLine="36070" mapLastVisibleDocLine="36102" mapNbLine="56" mapHigherPos="1677659" mapWidth="326" mapHeight="224" mapKByteInDoc="1639" mapWrapIndentMode="1" mapIsWrap="yes" />

(1) После загрузки файла (длина меняется ежедневно) я хочу увидеть 16 последних строк документа в верхней части окна.

Если невозможно: (2) Как я могу всегда видеть последние x строк документа? (х = количество строк окна)

Опция «Настройки | Настройки | Редактирование | Включить прокрутку за пределы последней строки» отмечена.

1 ответ1

0

Я не знаю, как автоматически прокрутить за конец для опции (1), но для опции (2): если у вас есть PythonScript, вы можете использовать editor.documentEnd() для прокрутки до конца активного документа. Чтобы автоматически прокрутить до конца при открытии, запустите следующий скрипт:

# encoding=utf-8
"""in response to https://superuser.com/questions/1395356/open-a-session-file-and-show-the-last-document-lines-at-the-top-of-the-window"""
from Npp import *

def su1395356_ScrollToEnd_Callback(args):
    """this will scroll to the end of the current file"""
    b = args['bufferID']
    notepad.activateBufferID(b)
    editor.documentEnd()

def su1395356_EndCallback():
    """This deactivates (clears) the scroll-to-end callback"""
    notepad.clearCallbacks(su1395356_ScrollToEnd_Callback)

if __name__ == '__main__':
    """This registers (activates) the scroll-to-end callback"""
    su1395356_EndCallback()
    notepad.callback(su1395356_ScrollToEnd_Callback, [NOTIFICATION.FILEOPENED])

Каждый файл, который вы открываете после запуска этого скрипта, должен прокручиваться до конца буфера при его открытии.

Чтобы остановить этот обратный вызов, подключаемые модули> PythonScript> Показать консоль, а затем запустите su1395356_EndCallback() из прямой строки. Или обратный вызов может быть помещен в отдельный скрипт, который сначала импортирует его, а затем вызывает su1395356_EndCallback() .

Если вы перезапустите NPP, обратный вызов больше не будет активным, поэтому вам нужно будет снова запустить скрипт. Или, возможно, вы захотите импортировать этот скрипт из startup.py с помощью плагинов> Python Script> Configuration ..., установив "Initialisation" в "ATSTARTUP", что приведет к его автоматическому запуску.

Если у вас его нет в startup.py , вы можете использовать диалоговое окно « Конфигурация ... », чтобы добавить его в список элементов меню ; как только это будет сделано и перезапуск NPP, вы можете использовать Настройки> Сопоставление ярлыков, чтобы назначить сочетание клавиш.


edit: вычислили для (1): отредактируйте первую функцию и добавьте другую функцию, как показано ниже. Установите n=16 для любого количества строк, которые вы хотите, или сделайте его параметром, как вам нужно. Это только отправная точка.

def su1395356_ScrollToEnd_Callback(args):
    """this will scroll to the end of the current file"""
    b = args['bufferID']
    notepad.activateBufferID(b)
    su1395356_AlternateScrollToLastNLines()

def su1395356_AlternateScrollToLastNLines():
    """will scroll the last n, assuming **Settings | Preferences | Editing | Enable scrolling beyond last line** enabled"""
    n = 16
    editor.scrollToEnd()
    for i in range(n-1):        # use n-1 because one row is already visible
        editor.lineScrollUp()

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .