- Plugin Installation and Usage¶
- Usage¶
- Startup¶
- Python Script for Notepad++
- Donations
- Скрипт для Notepad++ на Python
- Постановка задачи
- Решение
- Saved searches
- Use saved searches to filter your results more quickly
- License
- bruderstein/PythonScript
- Name already in use
- Sign In Required
- Launching GitHub Desktop
- Launching GitHub Desktop
- Launching Xcode
- Launching Visual Studio Code
- Latest commit
Plugin Installation and Usage¶
Installation is very simple, either through Plugin Manager, or manually. The zip or 7zip archive contains the the files in the correct layout — just copy to your Notepad++ directory (e.g. c:Program FilesNotepad++ )
The file layout is as follows:
Notepad++ (your main Notepad++ directory, probably under "C:\Program Files") + |-- python26.dll (this is important. This needs to go in the main program directory of Notepad++, next to notepad++.exe) | (unless you have a Python installation already, in which case it's probably in C:\windows already) +-- plugins \ |-- PythonScript.dll | |-- PythonScript | \ | |-- lib | | \ | | |-- (*.py) lots of *.py files and subdirectories | | | |-- scripts | \ | |-- (machine-level scripts) | | |-- doc | \ | |-- PythonScript | \ | |-- PythonScript.chm (optional, if it's not there context-sensitive help will use the web) | | | | | |-- Config (this config directory can also be in %APPDATA%\Notepad++\plugins\config\) | \-- PythonScript \ |-- scripts \ |-- (user level scripts go here)
Usage¶
To use Python Script, you’ll first need to create a script. Click New Script from the Python Script menu in the Plugins menu. This creates a new user script (in your config directory). When you’ve typed your script out, you can run it from the Scripts submenu.
The `Scripts` submenu is automatically updated whenever you save a script, so if you copy a file into the scripts directory manually, you’ll need to make a change (a dummy new line or comment etc) and save a script (any will do) in Notepad++ for it to update.
To edit the script, just hold Ctrl down and click the script in the Scripts menu.
If you click Configuration , you can assign the script either to a toolbar icon, or to the Python Script menu itself. If you assign a script to the menu, then it will appear immediately, but you will not be able to assign a shortcut to it until next time Notepad++ starts.
If you assign it to a toolbar icon, then it will only appear on the next start of Notepad++.
Context-Sensitive help is available — if your cursor is on and notepad, editor or console function, the Context-Help menu will take you straight to the documentation for that function. If the CHM file is not in the relevant location, it will open the documentation from the web.
Startup¶
The script called startup.py (in either the “machine” directory or “user” directory — see Installation) is run when Python Script starts up. Normally, that is the first time a script is called. The default startup.py script does some small things like directing the error output to the console, and importing some commonly used modules.
If you want to register an callback (see Handling Notifications) to run from when Notepad++ starts up, you need to change the startup type to ATSTARTUP, instead of LAZY. You can do this in the Configuration dialog.
Python Script for Notepad++
Python’s a great choice for a scripting language — it’s very easy to learn, very easy to read and write, and can be object oriented (in fact, it has an excellent model), but doesn’t need to be. A script that looks like
is just as valid as a full blown object oriented magic system that turns Notepad++ into a coffee-making spreadsheet application.
Donations
So, I do this for fun — Notepad++ is a great editor, but I missed not being able to script things properly, so I put this together.
I’m not after donations towards my coffee, but, my sister’s a doctor, and is trying to build a hospital in Ghana. She’s already raised enough to send a load of equipment over to an existing hospital, which makes a terrific difference in a place where equipment is scarce. She needs 100,000GBP to build the hospital and fill it with decent equipment. It sounds like a lot, but it isn’t really. If one in fifty of the people that downloaded my last plugin (Plugin Manager) gave 1 pound each, that would be enough.
It’s not compulsory by any means (and specifically, for UK tax reasons, is not by way of payment for goods, you get the plugins for free), but, it would bring some meaning to the months of work I put into this, and you know that you’ve made a difference — and it’s got to be a better cause than handing over hard earned cash to profit some software firm.
Visit the charity, or go straight to the online donation page (whatever amount you can, every penny counts).
Скрипт для Notepad++ на Python
Думаю, многим известен — удобная бесплатная утилита, выступающая в качестве «продвинутой» замены стандартному Блокноту Windows. Как и при работе в любом текстовом редакторе, в Notepad++ время от времени возникает необходимость автоматизировать какие-либо повторяющиеся действия, которые в силу сложности логики невозможно записать как макрос. К счастью, для решения этой задачи нет необходимости переключаться из в, например, Word, дабы воспользоваться встроенным в него VB.
Среди плагинов для существуют расширения, реализующие возможность написания скриптов для на разных языках, таких как JavaScript, Lua, PHP или Python. Именно на последнем я и решил остановиться для решения своей задачи.
Постановка задачи
Предположим, перед нами стоит следующая задача (взята из жизни).
- пронумеровать символы ‘@’, находящиеся в начале строки, заменив ‘@’ на ‘@1’, ‘@2’ и т.д.;
- удалить пустые (включая пробелы и табуляцию) строки, идущие подряд по две и более.
3. Если в выделенном фрагменте текста (или во всём документе — в случае если нет выделения) отсутствует символ ‘@’, должно выводиться соответствующее сообщение об ошибке.
- по нажатию соответствующей кнопки на панели инструментов;
- с помощью клавиатурного сочетания;
- через контекстное меню правой кнопки мыши.
Решение
Для начала нам потребуется установить плагин для под названием Python Script. С его помощью можно производить любые операции с редактируемым текстом, открывать/закрывать файлы, переключать вкладки, выполнять команды меню и т.д. — одним словом, практически всё, что вообще можно сделать в .
Далее, выбрав в меню Plugins->Python Script->New Script, создаём скрипт:
# -*- coding: utf-8 -*- #Скрипт для Notepad++, удаляющий пустые строки и нумерующий символы "@", находящиеся в начале строки # Получаем выделенный текст text = editor.getSelText() isSelection = True # Если текст не выделен, то работаем со всем документом if not text: isSelection = False text = editor.getText() #Находим количество вхождений символа "@", находящегося в начале строки import re occurrencesCount = len(re.findall('^@', text, flags=re.MULTILINE)) # Если в тексте нет ни одного символа "@" в начале строки, выводим сообщение об ошибке if occurrencesCount == 0: notepad.messageBox('В тексте должен присутствовать как минимум 1 символ "@" в начале строки', 'Неверный формат входных данных', MESSAGEBOXFLAGS.ICONEXCLAMATION) # Если символ "@" присутствует, то else: countStartFrom = '' # Выдаём запрос до тех пор, пока не будет введено число while not countStartFrom.isdigit(): countStartFrom = notepad.prompt('Введите число, с которого должна начинаться нумерация вхождений в тексте символа "@":', 'Нумерация вхождений символа "@"', '1') if countStartFrom == None: break if countStartFrom != None: # Удаление пустых строк text = re.sub('\r\n\\s*\r\n', '\r\n', text) # Удаление пустой строки в конце и в начале файла/выделения text = re.sub('\r\n\s*$|^\s*\r\n', '', text, flags=re.MULTILINE) # Переводим countStartFrom из строки в целочисленный тип countStartFrom = int(countStartFrom) # Функция, возвращающая символ "@" с добавленным к нему и увеличенным номером def addNumber(matchobj): global countStartFrom countStartFrom += 1 return '@'+str(countStartFrom-1) #Добавляем нумерацию ко всем символам "@", находящимся в начале строки text = re.sub('^@', addNumber, text, flags=re.MULTILINE) #Заменяем обработанной строкой выделение или весь документ if isSelection: editor.replaceSel(text) else: editor.setText(text)
Если мы назвали скрипт «Empty Lines And Count», то запустить его можно из меню Plugins->Python Script->Scripts->Empty Lines And Count. Чтобы добавить его кнопку на панель инструментов и сделать возможным запуск по клавиатурному сочетанию, в настройках плагина (Plugins->Python Script->Configuration) выбираем созданный нами скрипт и добавляем его в меню и на панель инструментов. Теперь после перезапуска соответствующая кнопка появится на панели инструментов.
Назначить скрипту сочетание клавиш можно в меню Settings->Shortcut mapper в разделе Plugin commands.
Чтобы добавить скрипт в контекстное меню , нужно в xml-файл настроек (Settings->Edit Popup ContextMenu) добавить в нужном вам месте (например, перед первым элементом) следующие строчки:
Вот и всё. Теперь даже рутинные действия со сложной логикой можно выполнять одним кликом.
Saved searches
Use saved searches to filter your results more quickly
You signed in with another tab or window. Reload to refresh your session. You signed out in another tab or window. Reload to refresh your session. You switched accounts on another tab or window. Reload to refresh your session.
Python Script plugin for Notepad++
License
bruderstein/PythonScript
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Name already in use
A tag already exists with the provided branch name. Many Git commands accept both tag and branch names, so creating this branch may cause unexpected behavior. Are you sure you want to create this branch?
Sign In Required
Please sign in to use Codespaces.
Launching GitHub Desktop
If nothing happens, download GitHub Desktop and try again.
Launching GitHub Desktop
If nothing happens, download GitHub Desktop and try again.
Launching Xcode
If nothing happens, download Xcode and try again.
Launching Visual Studio Code
Your codespace will open once ready.
There was a problem preparing your codespace, please try again.
Latest commit
* Change input box get focus after run command Currently, after running a command, the focus goes to the output window with the cursor blinking in it. One needs press `Tab` twice to return to the input combobox to enter a subsequent command. It seems to be stemming from a `SetFocus()` command to the handle of `m_hInput` which is defined: PythonScript/PythonScript/src/ConsoleDialog.cpp: «` 126: m_hInput = FindWindowEx(m_hCombo, NULL, L»Edit», NULL); «` Though I’m not sure what that returns since I don’t see an Edit box in the PythonScript dockable dialog. There is however a combobox which is set to `m_hCombo` and that is where the commands are entered. This changes the `giveInputFocus()` method in ConsoleDialog class to give focus to the combobox. The only «issue» is that when gaining focus, the text in the combobox is not cleared, it is highlighted. One can simply start typing and it will overwrite. I think a vast improvement. Fix #184 * Change input box get focus after run command Currently, after running a command, the focus goes to the output window with the cursor blinking in it. One needs press `Tab` twice to return to the input combobox to enter a subsequent command. It seems to be stemming from a `SetFocus()` command to the handle of `m_hInput` which is defined: PythonScript/PythonScript/src/ConsoleDialog.cpp: «` 126: m_hInput = FindWindowEx(m_hCombo, NULL, L»Edit», NULL); «` Though I’m not sure what that returns since I don’t see an Edit box in the PythonScript dockable dialog. There is however a combobox which is set to `m_hCombo` and that is where the commands are entered. This changes the `giveInputFocus()` method in ConsoleDialog class to give focus to the combobox. The only «issue» is that when gaining focus, the text in the combobox is not cleared, it is highlighted. One can simply start typing and it will overwrite. I think a vast improvement. Fix #184 ——— Co-authored-by: VinsWorldcom