Forum: Compiler & IDEs VIM + youcompleteme


von zitter_ned_aso (Gast)


Lesenswert?

Hallo,

ich habe "youcompleteme" für VIM installiert und mir fehlen einige 
Funktionen (in Bezug auf "code-completion").


Die Konfiguration erfolgt durch die ".ycm_extra_conf.py"-Datei. Dort 
werden dann Verzeichnisse zu den benötigten Bibliotheken angegen:


'-isystem',
'/usr/include/'

usw..

Wenn ich Objekte einer Klasse erzeuge (z.B. string str="blabla") und 
dann
"str. " schreibe, dann tauchen nach dem Punkt in einem Extra-Menü alle 
dazugehörigen Funktionen auf (code-completion). Hier funktioniert aslo 
alles (OOP).

Mein Problem: Keine code-completion bei strukturierter Programmierung. 
Wenn ich z.B. math.h inkludiere und dann auf fest definierte Konstanten 
zugreifen will (z.B. M_PI), dann werden hier die Namen nicht ergänzt. 
Ich schreibe also "M_  " und es taucht kein Menü mit allen möglichen 
Namen auf.  Dabei hat doch math.h einiges im Angebot:

# define M_E    2.7182818284590452354  /* e */
# define M_LOG2E  1.4426950408889634074  /* log_2 e */
# define M_LOG10E  0.43429448190325182765  /* log_10 e */
# define M_LN2    0.69314718055994530942  /* log_e 2 */
# define M_LN10    2.30258509299404568402  /* log_e 10 */
# define M_PI    3.14159265358979323846  /* pi */
# define M_PI_2    1.57079632679489661923  /* pi/2 */
# define M_PI_4    0.78539816339744830962  /* pi/4 */
# define M_1_PI    0.31830988618379067154  /* 1/pi */
# define M_2_PI    0.63661977236758134308  /* 2/pi */
# define M_2_SQRTPI  1.12837916709551257390  /* 2/sqrt(pi) */
# define M_SQRT2  1.41421356237309504880  /* sqrt(2) */
# define M_SQRT1_2  0.70710678118654752440  /* 1/sqrt(2) */

Habe ich aber eine Konstante schon ein mal in meinem Quelcode verwendet, 
so wird sie auch im "code-completion"-Menü auftauchen. Dann geht es 
plötzlich. Aber warum wird denn nicht nach allen passenden Namen in 
allen inkludierten Datein gesucht?

von zitter_ned_aso (Gast)


Lesenswert?

Ich habe jetzt Code::Blocks ausprobiert. Wenn ich z.B. sowas schreibe


#include <iostream>
#include <cmath>

using namespace std;

int main()
{
    cout<<"PI:"<<M_PI<<endl;

    return 0;
}


und dort in der "cout"-Zeile "M_P " eingebe, dann funktioniert 
code-completion einwandrei und es werden die Namen "M_PI, M_PI_2, 
M_PI_4" vorgeschlagen.

Und genau das macht "youcompleteme" bei mir unter Vim nicht.

von zitter_ned_aso (Gast)


Lesenswert?

Diese Autovervollständigung kann bei YCM mit Strg+Space Kombinaton 
erzwungen werden ;-)

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.