mikrocontroller.net

Forum: Compiler & IDEs VIM + youcompleteme


Autor: zitter_ned_aso (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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?

Autor: zitter_ned_aso (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: zitter_ned_aso (Gast)
Datum:

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

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.