Откройте файл сеанса и покажите последние строки документа в верхней части окна.

0

Запись файла сеанса для одного из файлов, которые будут открыты 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 строк документа? (х = количество строк окна)

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

Pollitzer
источник

Ответы:

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])

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

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

Если вы перезапустите NPP, обратный вызов больше не будет активным, поэтому вам нужно будет снова запустить скрипт. Или вы можете импортировать этот скрипт из вашего startup.py, с Плагины & gt; Python Script & gt; Конфигурация ... установив «Инициализация» на «ATSTARTUP», что сделает его автоматический запуск

Если у вас его нет в startup.pyвы можете использовать Конфигурация ... диалог, чтобы добавить его в Пункты меню список; как только это будет сделано и АЭС будет перезапущена, вы можете использовать Настройки & gt; Ярлык быстрого доступа назначить сочетание клавиш.


редактировать: Выяснил для (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()
PeterCJ
источник