Dois plugins gedit se chocam. Como alterar as teclas de atalho ou ativar / desativar um plug-in

8

O Gedit tem dois plugins da página Gedit dos plugins do Gnome, que eu particularmente quero ...

No entanto, os dois disputam as mesmas teclas de atalho: Ctrl + PageUp e Ctrl + PageDown

Posso ver duas soluções possíveis, e talvez haja mais ,,, (geralmente há :)

A melhor solução pode ser alterar as teclas de atalho na edição múltipla para Shift + Ctrl + PageUp e Shift + Ctrl + PageDown ... mas tenho muito pouco conhecimento de python e como fazê-lo me escapa.

O método mais simples (para mim) é apenas ativá-lo / desativá-lo através de outra tecla de atalho. Conheço o comando para ativar / desativar o recurso de edição múltipla (mas não o script inteiro) ... Basicamente, para esta opção, preciso de um comando para ativar / desativar um plug-in do Gedit.

Uma ou ambas as soluções (ou outras) seriam apreciadas ...

ATUALIZAÇÃO : Estou procurando um comando de linha de comando (vs, um comando de menu)
e / ou uma 'correção' para o script python do Multi-edit.

Nota: O plug-in 'Editar atalhos' não mostra o plug-in de edição múltipla ... (portanto, não posso fazê-lo dessa maneira)

Peter.O
fonte

Respostas:

3

Eu escrevi o seguinte script python ( download ) que ativa / desativa o plug-in de edição múltipla:

#!/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)

Para alternar a edição múltipla com um atalho de teclado:

  1. Salve o script como toggle-multi-edit.pyna sua pasta pessoal.

  2. Abra Sistema → Preferências → Atalhos do teclado . Clique em Adicionar e coloque python /home/<user>/toggle-multi-edit.pyo comando , substituindo <user>pelo seu nome de usuário real.

    texto alternativo

Isaías
fonte
Obrigado DoR .. Eu estive ocupado e voltei para a página para postar meu script bash :) .. Estou muito interessado em ver o seu script python .. mas por enquanto vou postar o meu .. (preciso um break..It sido uma-noite toda) ....
Peter.O
É bom ... Obrigado .... Python tem uma simplicidade que eu gosto, mas infelizmente não é simples para mim (ainda) :) Fiquei focado no bash por mais algum tempo, para tentar obter uma compreensão inicial decente dele ... então eu vou olhar mais detalhadamente em python ... (Eu tentei te dar um +1, mas ele diz que te marquei duas horas atrás .. Lembro-me de ter te dado um +1 , então eu retraído até que eu poderia ter um bom olhar para a resposta ... Agora ele diz que eu não posso mudar nada até que a resposta é modificado / editado ..
Peter.O
@ fred.bear Eu fiz uma edição minúscula para que você possa votar agora;)
Isaiah
2

É simples :)

Possibilitando

  1. Editar> Preferências

  2. Agora veja a seção Plugins .

  3. Marque a caixa de seleção ao lado do nome do plug-in que você deseja ativar.

  4. Agora você pode clicar em Fechar para fechar o Gedit e iniciá-lo novamente

Desativando

  1. Editar> Preferências

  2. Agora veja a seção Plugins .

  3. Desmarque a caixa de seleção ao lado do nome do plug-in que você deseja ativar.

  4. Agora você pode clicar em Fechar para fechar o Gedit e iniciá-lo novamente

megubyte
fonte
Obrigado Michael .. Parece que não deixei claro .. Presumi que todos vejam a palavra "comando" como eu ... mas eles não ... eu quis dizer um comando de linha de comando (e você pensou: comando de menu) .. devo Ammende minha pergunta .. (+1 .. você apresentou uma resposta muito clara)
Peter.O
2

Depois de finalmente encontrar uma referência aos plugins do gedit, montei um script bash ...

Como esse script é exclusivo do gedit, adicioná-lo pelas Ferramentas Externas do gedit localiza o escopo de sua escolha da tecla de atalho somente para o gedit. Estou usando Ctrl + NumPad7 (porque está muito próximo ao PageUp e 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
fonte
0

Eu estava / estou navegando nisso com os plugins regex e ipython , nos quais ambos desejam executar ctrlr. Eu cheirei em "regexsearchinstance.py" (in ~/.local/share/gedit/plugins/regex_replace) e encontrei o seguinte:

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)

Eu mudei uma linha para:

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

e saia do gedit. Agora, as pesquisas regex são carregadas ctrlshfitf. Eu vejo uma linha comparável em /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)])

Então, se você quer realmente editar os plugins para que eles usem diferentes atalhos por padrão, farejar em torno de <Control>ou <control>ou add_actionno arquivo plugin.

Amanda
fonte