2013-05-12 12 views
7

In Delphi 2009, ho provato a utilizzare GExperts per configurare il collegamento Ctrl + R (facile da ricordare) per il refactoring dei nomi. Non ho cambiato nessuna combinazione di tasti prima quindi tutto è nello stato predefinito IDE.Come posso impostare Ctrl + R come collegamento per il refactoring "Rinomina" in Delphi?

Ctrl + R si visualizza effettivamente nel menu IDE come collegamento. Ma premendo questa combinazione di tasti non ha alcun effetto nell'editor.

Vedo che Ctrl + R è ora visualizzato nel menu IDE Refactor | Rename .... Come previsto, la chiave predefinita Ctrl + R non viene più visualizzata per la voce di menu 'Cerca | Sostituisci ... '.

Tuttavia, la voce di menu contestuale Refactoring | Rename ... mostra ancora la scelta rapida predefinita Maiusc + Ctrl + E.

C'è un modo per impostare questa scorciatoia?

+0

Che cosa al mondo è 'Strg'? –

+0

@AndreasRejbrand oops, il titolo era corretto (Ctrl + C), il corpo della domanda è ora fissato – mjn

+3

@AndreasRejbrand È la didascalia tedesca per il tasto Ctrl (Strg è l'abbreviazione di Steuerung, che è la traduzione tedesca del controllo) –

risposta

1

F2 - come suggerito da @Whiler - può essere utilizzato come scorciatoia facile da ricordare per il refactoring Rename.

2

Devo ammettere che sono un po 'confuso dai passi che hai fatto. GExperts consente di sovrascrivere le associazioni di tasti predefinite per i propri miglioramenti degli editor in modo sufficientemente semplice, ma non ho mai visto un wizard GExpert che ti consenta di ridefinire i binding dei tasti per le funzionalità IDE di magazzino o altre estensioni di terze parti.

Nevermind. Utilizzo GExperts da anni e trovo ancora cose nuove che non sapevo esistessero. Ad esempio, la funzione "Scorciatoie del menu IDE". Questo rende praticamente inutile la mia precedente risposta. Tuttavia, dal momento che si sta già utilizzando questa funzione e il collegamento non funziona ancora qui ci sono un paio di cose che si possono provare:

  • Prova riordino dei "moduli Enhancement" in Strumenti> Opzioni> Editor Opzioni> mapping dei tasti.
  • Provare a disabilitare il modulo "Refactoring Commands" in questa stessa finestra di dialogo.

In mancanza di questi si può provare armeggiare con la mia risposta precedente. Se scrivere il proprio pacchetto e armeggiare con gli interni dell'IDE continua a non produrre risultati, potrebbe semplicemente non essere possibile. La documentazione GExperts come dice molto:

Se trovate il vostro collegamento scelto non funziona, è probabile perché il collegamento è riservato per l'editor di codice o di un altro elemento del menu, e avrete bisogno di selezionare un diverso, scorciatoia non usata

In ogni caso, spero che questo aiuti.

risposta precedente:

associazioni di tastiera sono implementate utilizzando gli strumenti Open API. Sfortunatamente è la parte più scarsamente documentata dell'IDE, quindi si sta girando al buio.

Ci sono due tipi di combinazioni di tasti:

  • completi - Una mappatura esclusiva di chiavi ai comandi. Può essere attivo solo un binding completo alla volta.
  • Parziale: un'estensione dell'attacco completo attualmente attivo.

Non posso dire con certezza in Delphi 2009, ma in Delphi 2010 e sopra ci è un elenco di questi attacchi parziali (almeno quelli che infastidivano di implementare un nome di visualizzazione) in Opzioni> Opzioni editor > KeyMappings> Moduli di miglioramento. Presumibilmente possono essere abilitati/disabilitati facendo clic sulla casella di controllo accanto a ciascuno, ma questo non sembra avere alcun effetto su quelli che ho provato, anche dopo aver ricaricato l'IDE.

"Comandi di refactoring" è uno dei binding elencati. Il pacchetto di refactoring è implementato come collezione .NET assembly (Borland.Together.Refactoring.*.dll) con solo un piccolo stub BPL standard. Potrebbe essere utile ispezionare i suoi meccanismi interni con uno dei tanti strumenti di "riflessione" disponibili.

In ogni caso l'interfaccia IOTAKeyboardServices in ToolsAPI.pas è dove è necessario cercare di modificare un'associazione esistente. Quattro funzioni di interesse:

  • AddKeyboardBinding
  • LookupKeyBinding
  • GetNextBindingRec
  • RemoveKeyboardBinding

ammesso che effettivamente lavorare in un maniero prevedibile queste funzioni dovrebbero permettere di identificare il TKeyBindingRec che è gestione dello CTRL + R.

Tenete a mente che qualsiasi pacchetto IDE può legarsi a una scorciatoia da tastiera e gli utenti possono caricare e scaricare i pacchetti per un capriccio. Ciò significa che non è possibile assumere che vi sia un solo comando associato a un collegamento. Non è possibile nemmeno assumere che il binding sarà lo stesso tra una stampa e lo successivo.

Mentre in teoria una scorciatoia potrebbe attivare più comandi non correlati raramente funziona in questo modo. La maggior parte dei pacchetti presuppone che siano l'unico listener per un collegamento e restituiscono uno TKeyBindingResult di krHandled, che interromperà l'ulteriore elaborazione di tale collegamento finché non verrà premuto nuovamente .

Come per la domanda sul menu di scelta rapida. Ogni modulo ancorabile nell'IDE presenta un menu di scelta rapida separato da un elenco di azioni. Questo elenco è anche separato per ogni modulo ancorabile. Per quanto posso dire, non c'è alcuna correlazione tra l'elenco delle azioni principali dell'IDE e l'elenco delle azioni della finestra dell'editor. La mia ipotesi è che gli autori di GExperts non volessero tentare di abbinare l'elenco delle azioni del menu contestuale con l'elenco delle azioni del menu principale.

+0

_Se trovi che il collegamento scelto non funziona, è probabile perché il collegamento è riservato dall'editor di codice o da un'altra voce di menu, e dovrai selezionare un scorciatoia diversa, non utilizzata. Giusto, questa è la scorciatoia ** Cerca/Sostituisci ** – Whiler

Problemi correlati