Столкновение двух плагинов Gedit. Как изменить сочетания клавиш или включить / отключить плагин

8

У Gedit есть два плагина со страницы плагинов Gnit, которые я особенно хочу ...

Однако они оба соперничают за одинаковые сочетания клавиш: Ctrl + PageUp и Ctrl + PageDown

Я вижу два возможных решения, и, возможно, есть и другие, (обычно есть :)

Лучшим решением может быть изменение сочетаний клавиш в режиме Multi-edit на Shift + Ctrl + PageUp и Shift + Ctrl + PageDown ... но у меня очень мало знаний о Python, и как это сделать, ускользает от меня ..

Самый простой способ (для меня) - просто включить / выключить их с помощью другой комбинации клавиш. Я знаю команду для включения / выключения функции Multi-edit (но не весь скрипт) ... По сути, для этой опции мне нужна команда для включения / выключения Gedit Plugin ..

Либо, либо оба (или другие) решения будут оценены ...

ОБНОВЛЕНИЕ : я ищу команду командной строки (vs, команду меню)
и / или 'исправление' для сценария Python Multi-edit.

Примечание: плагин «Edit Shortcuts» не показывает плагин Multi-edit ... (поэтому я не могу сделать это таким образом)

Peter.O
источник

Ответы:

3

Я написал следующий скрипт Python ( скачать ), который включает / отключает плагин Multi-edit:

#!/usr/env/python

import re
import commands

active_plugins = commands.getoutput("gconftool --get /apps/gedit-2/plugins/active-plugins")

r1 = re.compile(r'multi_edit')

if r1.search(active_plugins):
    # Disable multi-edit plugin
    active_plugins = re.sub("multi_edit,|,multi_edit","", active_plugins)

else:
    # Enable multi-edit plugin
    active_plugins = re.sub("]",",multi_edit]", active_plugins)

commands.getoutput("gconftool --set --type=list --list-type=string /apps/gedit-2/plugins/active-plugins "+active_plugins)

Чтобы включить мультиредактирование с помощью сочетания клавиш:

  1. Сохраните скрипт как toggle-multi-edit.pyв вашей домашней папке.

  2. Откройте Систему → Настройки → Сочетания клавиш . Нажмите Добавить и поставить python /home/<user>/toggle-multi-edit.pyдля командования , заменив <user>ваш действительное имя пользователя.

    альтернативный текст

Исайя
источник
Спасибо DoR .. Я сам был занят и вернулся на страницу, чтобы опубликовать мой bash-скрипт :) .. Я очень хочу увидеть ваш скрипт на python ... но сейчас я просто опубликую свой .. (нужно перерыв .. Это было все ночи.) ...
Peter.O
Это хорошо ... Спасибо .... У Python есть простота, которая мне нравится, но, к сожалению, это не просто для меня (пока):) ... Я еще немного сосредоточусь на bash, чтобы попытаться получить приличное первоначальное понимание этого .. тогда я посмотрю дальше на python ... (Я пытался дать вам +1, но там говорится, что я отметил вас 2 часа назад .. Я помню, я дал вам +1 затем я отозвал его до тех пор, пока не смог внимательно рассмотреть ответ ... Теперь он говорит, что я ничего не могу изменить, пока ответ не будет изменен / отредактирован ..
Peter.O
@ fred.bear Я сделал небольшое изменение, чтобы вы могли голосовать сейчас;)
Исаия
2

Это просто :)

Включение

  1. Правка> Настройки

  2. Теперь посмотрите на раздел плагинов .

  3. Установите флажок рядом с названием плагина, который вы хотите включить.

  4. Теперь вы можете нажать кнопку Закрыть, чтобы закрыть Gedit, а затем запустить его снова

Отключение

  1. Правка> Настройки

  2. Теперь посмотрите на раздел плагинов .

  3. Снимите флажок рядом с именем плагина, который вы хотите включить.

  4. Теперь вы можете нажать кнопку Закрыть, чтобы закрыть Gedit, а затем запустить его снова

megubyte
источник
Спасибо, Майкл .. Я, кажется, не дал понять ... Я предполагал, что все видят слово "команда", как и я ... но они не ... Я имел в виду команду командной строки (и вы подумали: команда меню) .. Я должен изменить свой вопрос .. (+1 .. Вы дали очень четкий ответ)
Peter.O
2

Наконец, найдя ссылку на плагины gedit, я собрал скрипт bash ...

Поскольку этот скрипт является эксклюзивным для gedit, добавление его с помощью внешних инструментов gedit локализует область действия выбранной вами комбинации клавиш только для gedit. Я использую Ctrl + NumPad7 (потому что он очень близок к PageUp и PageDown) ...

#!/bin/bash
# Toggle gedit plugin ControlYourTabs  ON/OFF, with inverse switching for   
# Multi-Edit's "Columns Always Available" feature, which uses same shortcuts 
# ==========================================================================
cytab=controlyourtabs
plugins=$(gconftool-2 --get /apps/gedit-2/plugins/active-plugins)
#
if [[ "$plugins" =~ ^\[(.+,)*$cytab(,.+)*\]$ ]] ; then
    #
    # "Control Your Tabs" found in list... Disable it
    #  and enable "Multi Edit - Columns Always Available"  
    #
    if   [[ "$plugins" =~ ^.+\,$cytab(,.+)*\]$ ]] ; then plugins=${plugins/,${cytab}/}
    elif [[ "$plugins" =~   ^\[$cytab\,.+$     ]] ; then plugins=${plugins/${cytab},/}
    elif [[ "$plugins" =~   ^\[$cytab\]$       ]] ; then plugins=[]
    else echo "Logic Error in one of the regex patterns"; exit 1
    fi
    multi=true
else
    # "Control Your Tabs" NOT found in list... Enable it
    #  and disable "Multi Edit - Columns Always Available"  
    #
    plugins=${plugins%]},$cytab]
    multi=false
fi
#
gconftool-2 --set /apps/gedit-2/plugins/active-plugins --type=list --list-type=string "$plugins"
gconftool-2 --set /apps/gedit-2/plugins/multi_edit/columns_always_avail --type bool  $multi  

Peter.O
источник
0

Я перебирал это с плагинами regex и ipython , которые оба хотят запустить ctrlr. Я обнюхал в "regexsearchinstance.py" (в ~/.local/share/gedit/plugins/regex_replace) и нашел это:

def create_menu_item(self):
        """
        Create a menu item in the "Tools" menu.
        """
        action = gtk.Action("RegexSearch", 
                _("Regular expression..."), 
                _("Search using regular expressions"), None)
        action.connect("activate", self.on_open_regex_dialog)

        action_group = gtk.ActionGroup("RegexSearchActions")
        action_group.add_action_with_accel(action, "<control>r")

        manager = self._window.get_ui_manager()
        manager.insert_action_group(action_group, -1)
        manager.add_ui_from_string(ui_str)

Я изменил одну строку на:

action_group.add_action_with_accel(action, "<control><shift>f")

и выйти из Gedit. Теперь поиск по регулярному выражению загружается ctrlshfitf. Я вижу похожую строку в /usr/lib/gedit/plugins/ipython.py:

self._action_group.add_actions([('IPython', None,
        _('Run in IPython'), '<Control>r', _('Clear the document'),
        self.send_to_ipython)])

Так что если вы действительно хотите изменить плагин , так что они используют различные ярлыки по умолчанию, обнюхать для <Control>или <control>или add_actionв файле плагин.

Аманда
источник