KDevelop4/TipsAndTricks/da: Difference between revisions

From KDE UserBase Wiki
(Importing a new version from external source)
 
No edit summary
 
(59 intermediate revisions by 2 users not shown)
Line 1: Line 1:
<languages />
<languages />
== Tips And Tricks ==
== Tips og tricks ==


=== Code Completion ===
=== Kodefuldførelse ===


While you have automatic code completion, requesting it manually is often a very good idea. Press <keycap>Ctrl + Space</keycap> and you'll get a detailed code completion list. Navigate with the arrow buttons (<keycap>Up</keycap>/<keycap>Down</keycap>) and press (and keep pressed) <keycap>Alt</keycap> to show documentation of the focused item. Press <keycap>Enter</keycap> to insert the item.
Selvom du har automatisk kodefuldførelse er det ofte en god ide at starte det manuelt. Tast <keycap>Ctrl + Mellemrum</keycap>, så får du en detaljeret liste til kodefuldførelse. Navigér med piletasterne (<keycap>Op</keycap> og <keycap>Ned</keycap>) og hold <keycap>Alt</keycap>-tasten nedtrykket for at vise dokumentationen for det punkt, der har fokus. Tast <keycap>Enter</keycap> for at indsætte punktet.


=== C++ Type Assistant ===
=== Assistent til C++-typer ===


Assume you have something similar to this:
Antag at du har noget i retning af:
{{Input|<syntaxhighlight lang="cpp">
{{Input|<syntaxhighlight lang="cpp">
#include <vector>
#include <vector>
Line 15: Line 15:
}
}
</syntaxhighlight>}}
</syntaxhighlight>}}
Now you want to iterate over the contents, instead of writing the type of the iterator, you just write:
Nu  ønsker du at iterere over indholdet, så istedet for at skrive iteratorens type skriver du blot:
{{Input|<syntaxhighlight lang="cpp">
{{Input|<syntaxhighlight lang="cpp">
   it = vector.begin();
   it = vector.begin();
</syntaxhighlight>}}
</syntaxhighlight>}}
Now wait a second until the assistant pops up at the bottom of the editor. Press <keycap>Alt + 1</keycap> to execute the assistant and you end up with:
Vent nu et øjeblik indtil assistenten dukker op nederst i editoren. Tast <keycap>Alt + 1</keycap> for at udføre assistenten, så ender du med:
{{Input|<syntaxhighlight lang="cpp">
{{Input|<syntaxhighlight lang="cpp">
   std::vector< int >::iterator it = v.begin();
   std::vector< int >::iterator it = v.begin();
</syntaxhighlight>}}
</syntaxhighlight>}}
Nice, lots of time saved. {{Smiley}} And this should work with most/all expressions, as long as the right side can be evaluated, you should get an assistant that adds the correct type to the left side.
Rart, megen tid sparet. {{Smiley}} 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.


=== C++ Signature Assistant ===
===Assistent til C++-signaturer ===


Example code:
Eksempel kode:
{{Input|<syntaxhighlight lang="cpp">
{{Input|<syntaxhighlight lang="cpp">
class foo {
class foo {
Line 37: Line 37:
}
}
</syntaxhighlight>}}
</syntaxhighlight>}}
Now try the following things and after each step wait shortly and apply the assistant that pops up at the bottom of the editor with <keycap>Alt + 1</keycap>:
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 <keycap>Alt + 1</keycap>:


# add a parameter, e.g. <code>int foo</code> to either signature in the definition or the declaration.
# tilføj en parameter, fx. <code>int foo</code> enten til signaturen af definitionen eller erklæringen.
# make one signature <code>const</code>
# gør en signatur <code>const</code>
# change a type of a parameter
# lav en parameters type om
# remove a parameter
# fjern en parameter


Again, a very handy time saver!
Igen, en meget praktisk og tidsbesparende!


=== C++ Missing Declaration Assistant ===
=== Assistent til manglende erklæringer i C++ ===


Example Code:
Eksempelkode:
{{Input|<syntaxhighlight lang="cpp">
{{Input|<syntaxhighlight lang="cpp">
class foo {
class foo {
Line 58: Line 58:
}
}
</syntaxhighlight>}}
</syntaxhighlight>}}
Now write this into the implementation of bar:
Skriv nu dette i implementationen af bar:
{{Input|<syntaxhighlight lang="cpp">
{{Input|<syntaxhighlight lang="cpp">
   myVar = 1;
   myVar = 1;
</syntaxhighlight>}}
</syntaxhighlight>}}
You should get an assistant that offers you three options:
Du skulle nu få en assistent, som giver dig tre valgmuligheder:


# declare local <code>int myVar</code> (see type assistant above)
# erklær en lokal <code>int myVar</code> (se typeassistenten ovenfor)
# declare public <code>int myVar</code>, adds the declaration to the class body
# erklær en public <code>int myVar</code>, som tilføjer erklæringen til klasses
# declare private <code>int myVar</code>, same as above, but in private section.
# erklær en private <code>int myVar</code>, som gør det samme som ovenstående, men i afsnittet private.


This even works for functions:
Dette virker også for funktioner:
{{Input|<syntaxhighlight lang="cpp">
{{Input|<syntaxhighlight lang="cpp">
class foo {
class foo {
Line 78: Line 78:
}
}
</syntaxhighlight>}}
</syntaxhighlight>}}
Now write this below <code>foo f;</code>:
Skriv nu dette under <code>foo f;</code>:
{{Input|<syntaxhighlight lang="cpp">
{{Input|<syntaxhighlight lang="cpp">
   f.someFunction(1, true, "asdf");
   f.someFunction(1, true, "asdf");
</syntaxhighlight>}}
</syntaxhighlight>}}
The assistant now offers you to declare that function, you'll end up with:
Assistenten tilbyder dig nu at erklære funktionen; du vil få følgende:
{{Input|<syntaxhighlight lang="cpp">
{{Input|<syntaxhighlight lang="cpp">
class foo {
class foo {
Line 92: Line 92:




=== Overload Helper ===
=== Hjælp til overloading ===


Example code:
Eksempel kode:
{{Input|<syntaxhighlight lang="cpp">
{{Input|<syntaxhighlight lang="cpp">
class A {
class A {
Line 104: Line 104:
};
};
</syntaxhighlight>}}
</syntaxhighlight>}}
Inside the class body of <code>B</code> press <keycap>Ctrl + Space</keycap> to bring up code completion. You should notice an item to overload <code>foo(int something);</code>. Execute it with <keycap>Enter</keycap> and you should get:
Inde i klassen <code>B</code> taster du <keycap>Ctrl + Mellemrum</keycap> for at bringe kodefuldførelsen frem. Der skulle være et punkt til at overloade <code>foo(int something);</code>. Udfør det ved at taste <keycap>Enter</keycap>, så skulle du få:
{{Input|<syntaxhighlight lang="cpp">
{{Input|<syntaxhighlight lang="cpp">
class B : public A {
class B : public A {
Line 113: Line 113:
Cool {{Smiley}}.
Cool {{Smiley}}.


=== Implementation Helper ===
=== Hjælp med implementering ===


Continue where we left of in the '''Overload Helper''':
Fortsæt hvor vi slap med '''Hjælp til overloadning'''':
{{Input|<syntaxhighlight lang="cpp">
{{Input|<syntaxhighlight lang="cpp">
class B : public A {
class B : public A {
Line 122: Line 122:
};
};
</syntaxhighlight>}}
</syntaxhighlight>}}
Place your cursor below the class context, request code completion with <keycap>Ctrl + Space</keycap>, you should notice an item to implement <code>B::foo(int something);</code>. Execute it with <keycap>Enter</keycap> and you should get:
Placér markøren under klassekonteksten, fremkald kodefuldførelse med <keycap>Ctrl + Mellemrum</keycap>, så skulle du bemærke et punkt der implementerer <code>B::foo(int something);</code>. Udfør den ved at taste <keycap>Enter</keycap>, så skulle du få:
{{Input|<syntaxhighlight lang="cpp">
{{Input|<syntaxhighlight lang="cpp">
A* B::foo(int something)
A* B::foo(int something)
Line 129: Line 129:
}
}
</syntaxhighlight>}}
</syntaxhighlight>}}
Awesome {{Smiley}}.
Stærkt {{Smiley}}.


=== Quick Open ===
=== Åbn hurtigt ===


<menuchoice>Quick Open</menuchoice> is probably one of ''the'' features in '''KDevelop''' that increases productivity:
<menuchoice>Åbn hurtigt</menuchoice> er nok den funktion i '''KDevelop''', som virkelig forøger produktiviteten:


* Quick Open Files
* Åbn filer hurtigt
Press <keycap>Ctrl + Alt + O</keycap> and type part of a filepath, press <keycap>Enter</keycap> and the selected file gets opened. The search is separated by forward slashes, i.e. you can write this: <code>/a/.cpp</code> and the list will only show paths that have a folder starting with <code>a</code> and files that end on <code>.cpp</code>. Try it out.
Tast <keycap>Ctrl + At + O</keycap> og skriv en del at filens sti og tast <keycap>Enter</keycap>, så åbnes den valgte fil. Søgningen adskilles med skråstreger, dvs. du kan skrive således: <code>/a/.cpp</code>, så vil listen kun vise filstier med en mappe, som begynder med <code>a</code> og filer, som er filendelsen <code>.cpp</code>. Prøv det.


* Quick Open Classes
* Åbn klasser hurtigt
<keycap>Ctrl + Alt + C</keycap> and input (parts) of the qualified class identifier, press <keycap>Return</keycap> and jump to the declaration of that class.
<keycap>Ctrl + Alt + C</keycap> og skriv (dele af) den kvalificerede klasseidentifikator, tast <keycap>Retur</keycap> og hop til klassens erklæring.


Also make sure to explore the other advanced features in <menuchoice>Quick Open</menuchoice>.
Sørg også for at udforske de andre avancerede funktioner i <menuchoice>Åbn hurtigt</menuchoice>.


=== Outline ===
=== Omrids ===


Similar to quick open, pressing <keycap>Ctrl + Alt + N</keycap> gives you an outline of the current document with the ability to search for an identifier and quickly jump to its declaration.
På tilsvarende måde som åbn hurtigt kan du taste <keycap>Ctrl + Alt + N</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.


=== Context Browsing ===
=== Kontekstbrowsing ===


Hover a use, declaration or definition and you'll get a popup with information about it. You can also move your cursor in there and press (and keep pressed) the <keycap>Alt</keycap> button to show that popup without using the mouse. Use the arrow keys to navigate between the links in the popup, use <keycap>Enter</keycap> to jump to the destination of a link.
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 <keycap>Alt</keycap>-tasten nedtrykket for at få vist boksen uden at bruge musen. Brug piletasterne til at navigere imellem links i boksen og tast <keycap>Enter</keycap> for at følge linket.


When inside a use, press <keycap>Meta + Left</keycap> or <keycap>Meta + Right</keycap> to jump to the previous/next use. Press <keycap>Ctrl + .</keycap> or <keycap>Ctrl + ,</keycap> to jump to the declaration or definition of the symbol under the cursor. Alternatively click on a symbol with <keycap>Ctrl</keycap> button pressed to do the same.
Når du er inde i en anvendelse kan du taste <keycap>Meta + Venstrepil</keycap> eller <keycap>Meta + højrepil</keycap> for at hoppe til den næste eller forrige anvendelse. Tast <keycap>Ctrl + .</keycap> eller <keycap>Ctrl + ,</keycap> for at hoppe til erklæringen eller definitionen af symbolet under markøren; eller du kan klikke på et symbol mens <keycap>Ctrl</keycap>-tasten holdes nede for at opnå det samme.


Also take a look at the <menuchoice>Navigation</menuchoice> menu and it's various shortcuts. Context browsing is awesome!
Beærk også menuen <menuchoice>Navigation</menuchoice> og dens forskellige tastaturgenveje. Kontekstbrowsing er skærkt!


=== How to work with autotools: automake, autoconf and libtool ===
=== Hvordan man bruger autotools: automake, autoconf og libtool ===


Kdevelop4 does not support very well the autotools. I suggest using [[Special:myLanguage/Konsole|Konsole]] to run configure scripts to build makefile. The custom makefile support works quite well. I suggest using separate building folder (say project/build).
'''KDevelop 4''' understøtter ikke autotools særligt godt. Jeg foreslår at du bruger [[Special:myLanguage/Konsole|Konsole]] til at køre konfigurationsscripts for at lave makefiler. Den tilpassede understøttelse af makefiler fungerer ret godt. Jeg foreslår at bruge en separat byggemappe (fx <tt>project/build</tt>).


After the custom makefiles are in place (say in 'build'-directory) one can add that to build list by clicking <menuchoice>+</menuchoice> button on lower left corner <menuchoice>Project selection</menuchoice> while build directory is selected. This causes command '''make''' to be run when pressing <menuchoice>Build</menuchoice>. 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.  
Efter at have lavet de tilpassede makefiler (f.eks. i mappen <tt>build</tt>) kan man føje den til byggelisten ved at klikke på knappen {{Plus}} nederste i  visningen '''Projekter''' under '''Projektvalg'''. Det får kommandoen '''make''' til at blive kørt når du klikker på <menuchoice>Byg valgte</menuchoice>. Man kan også køre f.eks. '''make install''' direkte på en specifik mappe ved at højreklikke på mappen og vælge '''make install'''. Det er praktisk, hvis du har mange projekter i et arbejdssæt.  


'''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.  
'''Libtool''' giver også problemer, hvis du prøver at debugge programmer, som er blevet linket med '''libtool''': for eksempel er programmet, som du ser i <tt>src/bin/program</tt> ikke et udførbart program men et script, som håndterer bibliotekerne.  


Problem is properly solved in console by running {{Input|1=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.
Problemet løses ved at åbne en konsol og køre {{Input|1=libtool --mode=execute'' '''<dst_binary>''' ''}}men endnu virker '''KDevelop 4''' ikke godt sammen med andre konsoller end standarden. Jeg har været kørt fast når jeg har brugt den rigtige udførbare fil (sædvanligvis fundet i <tt>src/bin/.libs/<exec></tt>), som måske bruger de forkerte biblioteker, så kør '''make install''' før hver kørsel.


=== KDE Classes Documentation ===
=== Dokumentation for KDE-klasser ===


Using the '''Qt Documentation''' plugin you may integrate KDE documentation along with Qt documentation. Point your browser at [http://api.kde.org/ 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 <menuchoice>Show documentation for KFooClass</menuchoice> which points to KFooClass documentation. Enjoy.
Bruger du pluginet '''Qt-dokumentation''', så kan du integrere KDE-dokumentationen med Qt-dokumentationen. Browse til  [http://api.kde.org/ KDE API Reference] og download den ønskede <tt>.qch</tt>-til (ikke alle moduler tilbyder en sådan). Indstil så pluginet '''Qt-dokumentation''' ved at tilføje de downloadede filer. Det er det! Når du nu lader markøren svæve over en KDE-klasse, så kan du se linket <menuchoice>Vis dokumentation for KFooClass</menuchoice>, som linker til dokumentationen for KFooClass. God fornøjelse.


[[Category:Development]]
[[Category:Udvikling/da]]

Latest revision as of 10:34, 14 July 2019

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 Ctrl + Alt + N 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.

Når du er inde i en anvendelse kan du taste Meta + Venstrepil eller Meta + højrepil for at hoppe til den næste eller forrige anvendelse. Tast Ctrl + . eller Ctrl + , for at hoppe til erklæringen eller definitionen af symbolet under markøren; eller du kan klikke på et symbol mens Ctrl-tasten holdes nede for at opnå det samme.

Beærk også menuen Navigation og dens forskellige tastaturgenveje. Kontekstbrowsing er skærkt!

Hvordan man bruger autotools: automake, autoconf og libtool

KDevelop 4 understøtter ikke autotools særligt godt. Jeg foreslår at du bruger Konsole til at køre konfigurationsscripts for at lave makefiler. Den tilpassede understøttelse af makefiler fungerer ret godt. Jeg foreslår at bruge en separat byggemappe (fx project/build).

Efter at have lavet de tilpassede makefiler (f.eks. i mappen build) kan man føje den til byggelisten ved at klikke på knappen nederste i visningen Projekter under Projektvalg. Det får kommandoen make til at blive kørt når du klikker på Byg valgte. Man kan også køre f.eks. make install direkte på en specifik mappe ved at højreklikke på mappen og vælge make install. Det er praktisk, hvis du har mange projekter i et arbejdssæt.

Libtool giver også problemer, hvis du prøver at debugge programmer, som er blevet linket med libtool: for eksempel er programmet, som du ser i src/bin/program ikke et udførbart program men et script, som håndterer bibliotekerne.

Problemet løses ved at åbne en konsol og køre

libtool --mode=execute <dst_binary> 

men endnu virker KDevelop 4 ikke godt sammen med andre konsoller end standarden. Jeg har været kørt fast når jeg har brugt den rigtige udførbare fil (sædvanligvis fundet i src/bin/.libs/<exec>), som måske bruger de forkerte biblioteker, så kør make install før hver kørsel.

Dokumentation for KDE-klasser

Bruger du pluginet Qt-dokumentation, så kan du integrere KDE-dokumentationen med Qt-dokumentationen. Browse til KDE API Reference og download den ønskede .qch-til (ikke alle moduler tilbyder en sådan). Indstil så pluginet Qt-dokumentation ved at tilføje de downloadede filer. Det er det! Når du nu lader markøren svæve over en KDE-klasse, så kan du se linket Vis dokumentation for KFooClass, som linker til dokumentationen for KFooClass. God fornøjelse.