Вчера вышла новая версия Zen Coding. Тем, кто не в теме - сюда или сюда. Главная вкусняшка (для меня :-) - это text nodes, вполне самостоятельный элемент. Там так и написано "Text nodes are not just element’s properties". Теперь можно вставлять текст, там, где необходимо во время использование Zen, например, в ссылках или списках. Удобно.
Кстати. От Emacs отошел в сторону Notepad++. Тоже редактор, но для добавление новых функций не требует изучения языка Lisp. В Emacs это надо, уж поверьте. Да и Zen Coding реализован полностью. (Если вы увидите плагин под Emacs полностью поддерживающий Zen, скажите)
Notepad++ отлично поддерживает кодировки, имеет кучу плагинов, среди которых есть очень полезный плагин под названием Python Script. И, чудо!!! С его помощью я сделал такое же управление FireFox, как и в том скринкасте. Всего за полчаса работы, не имея навыков программирования в Python!!! Решение очень простое: MozRepl << скрипт телнет-клиента на python << назначенные горячие клавиши в Notepad++ под этот скрипт.
UPDATE#1:
Расширение для Notepad++ под названием Python Script. Как известно, Npp написан на базе Scintilla, что дает дикую расширяемость, что и использовали создатели Python Script. Все крайне просто, с помощью данного плагина можно получить доступ к редактору, как к объекту Python (ссылка на документацию). Дальше - дело прямых рук и трезвой головы :-)
скрипт перезагрузки Firefox:
Для начала сохраняем содержимое текущего окна Npp - notepad.save(). Так, как Mozrepl является по сути своей вариацией телнет-сервера, то мы и создаем телнет-клиент. Как видно по коду, это не так уж и сложно. Передаем команду "BrowserReload();", затем закрываем соединение. Скрипт этот сохраняем в \Program Files\Notepad++\plugins\PythonScript\scripts\, затем через меню -> плагины -> Pyhon Script ->configuration открываем окно конфигурации плагина. Выбираем нужный нам скрипт, нажимаем "add", после чего перезапускаем редактор. Далее меню -> опции -> горячие клавиши. Откроется окно назначения горячих клавиш, где ищем наш скрипт и назначаем ему связку(у меня это <ALT>+<SHIFT>+<P>). И все...
На самом деле простор для творчества огромный. Используя документацию по Python Script для Notepad++ и документацию по Mozrepl для Firefox можно творить что угодно. Например, передавать лисе имя открытого файла(это при изменении локальной страницы, ибо на сервере, пусть и домашнем, адреса немного отличаются от локальных путей), можно передавать, как в моей статье про Emacs содержимое буфера(текущего окна редактора). Правда с последним моментом у меня не очень получилось. Поясню, что в Emacs-реализации данной техники содержимое буфера передается путем преобразования в JSON. Приведу кусок кода на Lisp из той статьи:
содержимое функции moz-update -
А вот мой код на Python -
Кстати. От Emacs отошел в сторону Notepad++. Тоже редактор, но для добавление новых функций не требует изучения языка Lisp. В Emacs это надо, уж поверьте. Да и Zen Coding реализован полностью. (Если вы увидите плагин под Emacs полностью поддерживающий Zen, скажите)
Notepad++ отлично поддерживает кодировки, имеет кучу плагинов, среди которых есть очень полезный плагин под названием Python Script. И, чудо!!! С его помощью я сделал такое же управление FireFox, как и в том скринкасте. Всего за полчаса работы, не имея навыков программирования в Python!!! Решение очень простое: MozRepl << скрипт телнет-клиента на python << назначенные горячие клавиши в Notepad++ под этот скрипт.
UPDATE#1:
Расширение для Notepad++ под названием Python Script. Как известно, Npp написан на базе Scintilla, что дает дикую расширяемость, что и использовали создатели Python Script. Все крайне просто, с помощью данного плагина можно получить доступ к редактору, как к объекту Python (ссылка на документацию). Дальше - дело прямых рук и трезвой головы :-)
скрипт перезагрузки Firefox:
# coding: utf-8
import sys
import telnetlib
notepad.save()
tn=telnetlib.Telnet("127.0.0.1",4242)
tn.write("BrowserReload();")
tn.close()
import sys
import telnetlib
notepad.save()
tn=telnetlib.Telnet("127.0.0.1",4242)
tn.write("BrowserReload();")
tn.close()
Для начала сохраняем содержимое текущего окна Npp - notepad.save(). Так, как Mozrepl является по сути своей вариацией телнет-сервера, то мы и создаем телнет-клиент. Как видно по коду, это не так уж и сложно. Передаем команду "BrowserReload();", затем закрываем соединение. Скрипт этот сохраняем в \Program Files\Notepad++\plugins\PythonScript\scripts\, затем через меню -> плагины -> Pyhon Script ->configuration открываем окно конфигурации плагина. Выбираем нужный нам скрипт, нажимаем "add", после чего перезапускаем редактор. Далее меню -> опции -> горячие клавиши. Откроется окно назначения горячих клавиш, где ищем наш скрипт и назначаем ему связку(у меня это <ALT>+<SHIFT>+<P>). И все...
На самом деле простор для творчества огромный. Используя документацию по Python Script для Notepad++ и документацию по Mozrepl для Firefox можно творить что угодно. Например, передавать лисе имя открытого файла(это при изменении локальной страницы, ибо на сервере, пусть и домашнем, адреса немного отличаются от локальных путей), можно передавать, как в моей статье про Emacs содержимое буфера(текущего окна редактора). Правда с последним моментом у меня не очень получилось. Поясню, что в Emacs-реализации данной техники содержимое буфера передается путем преобразования в JSON. Приведу кусок кода на Lisp из той статьи:
содержимое функции moz-update -
(interactive)
(comint-send-string (inferior-moz-process)
(concat "content.document.body.innerHTML=" (json-encode (buffer-string)) ";")))
видите заветное "json-encode (buffer-string)"? Таким образом Emacs передает данные в Mozrepl по телнет. (comint-send-string (inferior-moz-process)
(concat "content.document.body.innerHTML=" (json-encode (buffer-string)) ";")))
А вот мой код на Python -
# -*- coding: utf-8 -*-
import sys
import telnetlib
import json
text=json.dumps(editor.getText())
tn=telnetlib.Telnet("127.0.0.1",4244)
tn.write("content.document.body.innerHTML="+text+";\r")
tn.close()
Объясняю, что не срослось. Просто происходит ошибка Mozrepl при передаче некоторых текстов, если можно так выразится. Ошибку можно увидеть через консоль Firefox. Как я понял, что-то здесь на уровне передачи. Что - не знаю, глубже не копал. Мне хватает и моего решения, все же экономит одно движение и пару кликов. А может решение найдете и вы, кто знает :-) import sys
import telnetlib
import json
text=json.dumps(editor.getText())
tn=telnetlib.Telnet("127.0.0.1",4244)
tn.write("content.document.body.innerHTML="+text+";\r")
tn.close()
можешь написать
ОтветитьУдалитьскрипт телнет-клиента на python
без проблем, смотри UPDATE#1
ОтветитьУдалитьспасибо
ОтветитьУдалитьвсе работает
и еще одно спасибо за быстрый и развернутый ответ
пожалуйста, успехов...
ОтветитьУдалитьУ меня немного сложнее получилось прикрутить py скрипт к MozRepl...
ОтветитьУдалитьВо-первых пришлось добавить таймаут к подключению:
# coding: utf-8
import sys
import telnetlib
notepad.save()
tn=telnetlib.Telnet('localhost',4242,1) #таймаут 1
tn.write("BrowserReload();")
tn.close
Во-вторых долго неудомевал почему ничего не работает =) Как оказалось надо запустить telnet сервер MozRepl...
Нашел не сразу, но нашел:
Включаем отображение меню в FF (Кнопка FF - Настройки - Панель меню)
Потом из меню - Инструменты - MozRepl - Старт
Там же поставил галку ActivateOnStratup.
P/S
Комбинацию забиндил на alt-S, Python 2.7
Всем удачи =)
Да, спасибо, все по делу. Действительно, про момент запуска сервера MozRepl как-то забыл указать.
Удалить