KDevelop4/Tips og tricks

From KDE UserBase Wiki
Revision as of 11:02, 12 August 2012 by Claus chr (talk | contribs) (Importing a new version from external source)

Tips og tricks

Kodefuldførelse

Selvom du har automatisk kodefuldførelse er det ofte en god ide at starte det manuelt. Tast Ctrl + Mellemrum, så får du en detaljeret liste til kodefuldførelse. Navigér med piletasterne (Op og Ned) og hold Alt-tasten nedtrykket for at vise dokumentationen for det punkt, der har fokus. Tast Enter for at indsætte punktet.

Assistent til C++-typer

Antag at du har noget i retning af:

#include <vector>
void myFunc(const std::vector<int>& v) {

}

Nu ønsker du at iterere over indholdet, så istedet for at skrive iteratorens type skriver du blot:

  it = vector.begin();

Vent nu et øjeblik indtil assistenten dukker op nederst i editoren. Tast Alt + 1 for at udføre assistenten, så ender du med:

  std::vector< int >::iterator it = v.begin();

Rart, megen tid sparet. Og dette skulle virke med de fleste eller alle udtryk, når blot højresiden kan evalueres skulle du få en assistent, der tilføjer den rigtige type på venstre side.

Assistent til C++-signaturer

Eksempel kode:

class foo {
  int bar();
};

int foo::bar()
{
}

Prøv nu de følgende punkter; vent et kort øjeblik efter hver skridt og anvend den assistent, der dukker op nederst i editoren ved at taste Alt + 1:

  1. tilføj en parameter, fx. int foo enten til signaturen af definitionen eller erklæringen.
  2. gør en signatur const
  3. lav en parameters type om
  4. fjern en parameter

Igen, en meget praktisk og tidsbesparende!

Assistent til manglende erklæringer i C++

Eksempelkode:

class foo {
  int bar();
};

foo::bar()
{
}

Skriv nu dette i implementationen af bar:

  myVar = 1;

Du skulle nu få en assistent, som giver dig tre valgmuligheder:

  1. erklær en lokal int myVar (se typeassistenten ovenfor)
  2. erklær en public int myVar, som tilføjer erklæringen til klasses
  3. erklær en private int myVar, som gør det samme som ovenstående, men i afsnittet private.

Dette virker også for funktioner:

class foo {
};

int main() {
  foo f;

}

Skriv nu dette under foo f;:

  f.someFunction(1, true, "asdf");

Assistenten tilbyder dig nu at erklære funktionen; du vil få følgende:

class foo {
public:
  void someFunction( int arg1, bool arg2, const char* arg3 );
};

Cool .


Hjælp til overloading

Eksempel kode:

class A {
public:
  virtual A* foo(int something){}
};
class B : public A {

};

Inde i klassen B taster du Ctrl + Mellemrum for at bringe kodefuldførelsen frem. Der skulle være et punkt til at overloade foo(int something>;. Udfør det ved at taste Enter, så skulle du få:

class B : public A {
public:
  virtual A* foo(int something);
};

Cool .

Hjælp med implementering

Fortsæt hvor vi slap med Hjælp til overloadning':

class B : public A {
public:
  virtual A* foo(int something);
};

Placér markøren under klassekonteksten, fremkald kodefuldførelse med Ctrl + Mellemrum, så skulle du bemærke et punkt der implementerer B::foo(int something>;. Udfør den ved at taste Enter, så skulle du få:

A* B::foo(int something)
{
  A::foo(something);
}

Stærkt .

Åbn hurtigt

Åbn hurtigt er nok den funktion i KDevelop, som virkelig forøger produktiviteten:

  • Åbn filer hurtigt

Tast Ctrl + At + O og skriv en del at filens sti og tast Enter, så åbnes den valgte fil. Søgningen adskilles med skråstreger, dvs. du kan skrive således: /a/.cpp, så vil listen kun vise filstier med en mappe, som begynder med a> og filer, som er filendelsen .cpp. Prøv det.

  • Åbn klasser hurtigt

Ctrl + Alt + C og skriv (dele af) den kvalificerede klasseidentifikator, tast Retur og hop til klassens erklæring.

Sørg også for at udforske de andre avancerede funktioner i Åbn hurtigt.

Omrids

På tilsvarende måde som åbn hurtigt kan du taste <keycao>Ctrl + Alt + N</c´keycap> for at få et overblik over det aktuelle dokument med mulighed for at søge efter et navn og hurtigt hoppe til dets erklæring.

Kontekstbrowsing

Lad markøren svæve over en anvendelse, erklæring eller definition for at få en boks med information om den til at dukke op. Du kan også flytte markøren ind i boksen og holde Alt-tasten nedtrykket for at få vist boksen uden at bruge musen. Brug piletasterne til at navigere imellem links i boksen og tast Enter for at følge linket.

When inside a use, press Meta + Left or Meta + Right to jump to the previous/next use. Press Ctrl + . or Ctrl + , to jump to the declaration or definition of the symbol under the cursor. Alternatively click on a symbol with Ctrl button pressed to do the same.

Also take a look at the Navigation menu and it's various shortcuts. Context browsing is awesome!

How to work with autotools: automake, autoconf and libtool

Kdevelop4 does not support very well the autotools. I suggest using Konsole to run configure scripts to build makefile. The custom makefile support works quite well. I suggest using separate building folder (say project/build).

After the custom makefiles are in place (say in 'build'-directory) one can add that to build list by clicking + button on lower left corner Project selection while build directory is selected. This causes command make to be run when pressing Build. One can also directly run say make install on specific directory by right clicking the folder and selecting make install. This is nice if you have lots of projects in working set.

Libtool also causes problems if you try to debug application that has been linked with libtool: the program that see in for example src/bin/program is not the executable, but a script that handles the libraries.

Problem is properly solved in console by running

libtool --mode=execute <dst_binary>

but at least currently KDevelop4 does not work good (at all) with other console than default. I have been stuck of using the real binary (found usually from src/bin/.libs/<exec>) that might use wrong libraries, so do make install before every run.

KDE Classes Documentation

Using the Qt Documentation plugin you may integrate KDE documentation along with Qt documentation. Point your browser at KDE API Reference and download the desired .qch file (not all modules provide one). Then configure the Qt Documentation plugin by adding the downloaded files. That's it! Whenever you hover a KDE class you can see a link Show documentation for KFooClass which points to KFooClass documentation. Enjoy.