Я не знаю, как автоматически прокрутить за конец для опции (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()