emacs konfigurieren



  • Hallo,
    ich benutze zur Zeit den Source-Navigator zum Bearbeiten meiner C++-Quelldateien. Nun habe ich allerdings von einigen Seiten schon gehört, dass der emacs ein ziemlich mächtiges Tool zum Bearbeiten von Quelldateien jeder Art ist.
    Daher habe ich meine alten C++-Sourcecode-Dateien in Emacs geladen und musste dann feststellen, das am Ende einer jeden Zeile ein "^M" steht.
    Mal davon abgesehen, dass ich gar nicht weiß, was das zu bedeuten hat, finde ich dies doch sehr störend. Wenn ich neue Zeilen mittels emacs einfüge steht am Zeilenende kein ^M.
    Daher würde ich gerne wissen, wie man emacs dazu bringen kann, das er die störenden Zeichen am Ende der Zeilen nicht darstellt?
    Als nächstes würde mich interessieren wie man einfach makefile in emacs erstellt und diese ausführt.
    Dann wäre ich gerne noch an weitere bzw. generellen Konfigurationen oder Tipps interessiert, mit dem es sich unter emacs mit cpp-Dateien gut arbeiten lässt.
    Sind zwar viele Fragen auf einmal, aber irgendwie muss ich ja damit auch arbeiten können 😉

    Vielen Dank schonmal im Voraus 🙂

    Gruß Christian



  • hi,
    das ^M ist ein Steuerzeichen und kommt wohl daher, dass du die Dateien mal mit Windows geöffnet hast. UNter Linux wird dieses Steuerzeichen nicht benötigt und einfach mit angezeigt.
    Konvertieren kannst du die Dateien mit dem Befehl dos2unix, das entfernt die überflüssigen Steuerzeichen.
    Du kannst aber auch mit dem Emacs 'search and replace' machen ( Tastenkombination Alt-Shift-5).

    Wie du makefiles erstellst kannst du zum Beispiel hier nachlesen: http://www.ijon.de/comp/tutorials/makefile.html

    Wenn dann das makefile in dem gleichen Verzeichnis liegt wie die zu übersetzenden Dateien kannst du das makefile mit der Tastenfolge 'Alt-x compile' ausführen.

    Was mir sonst so zum Programmieren noch spontan einfällt ist:

    Strg-c-Strg-q formatiert einen Absatz mit den richtigen Einrückungen
    Alt-Shift-7 vervollständigt einen angefangenen String (ist super für lange Variablennamen).

    und schau dir mal das Programm ctags an, damit wird aus den Quellcodedateien eine TAGS Datei geschrieben. Wenn du das gemacht hast, kannst du den Cursor im emacs auf eine Funktion oder Variable stellen und mit der Tastenk. 'ESC-.' zu deren Defenition springen. Das klappt auch dateiübergreifend bei mehreren Quellcodedateien.

    Gruss Amtrak

    PS: emacs rules the world



  • Amtrak: Gibt aber doch sicher auch eine Möglichkeit den Emacs das ^M einfach nicht anzeigen zu lassen, hm?

    christian123: Hier meine .emacs:

    ; allgemeines
    (global-font-lock-mode t)
    (setq font-lock-maximum-decoration t)
    (mouse-wheel-mode t)
    (transient-mark-mode t)
    (setq calendar-week-start-day 1)
    
    ; C++
    (defun my-c-hook nil "setup cc-mode"
      (c-toggle-auto-hungry-state t)
      (set-variable 'c-file-style "Stroustrup")
    )
    (add-hook 'c-mode-common-hook 'my-c-hook)
    
    ; div. Gentoo-Spezifika
    ;(load "/usr/share/emacs/site-lisp/site-gentoo")
    
    ; autogeneriertes zeugs
    (custom-set-variables
      ;; custom-set-variables was added by Custom -- don't edit or cut/paste it!
      ;; Your init file should contain only one such instance.
     '(case-fold-search t)
     '(current-language-environment "Latin-9")
     '(default-input-method "latin-9-prefix")
     '(global-font-lock-mode t nil (font-lock))
     '(mouse-sel-mode t nil (mouse-sel))
     '(tool-bar-mode nil nil (tool-bar))
     '(transient-mark-mode t))
    (custom-set-faces
      ;; custom-set-faces was added by Custom -- don't edit or cut/paste it!
      ;; Your init file should contain only one such instance.
     '(cursor ((t (:background "orange"))))
     '(isearch ((((class color) (background dark)) (:background "darkgreen" :foreground "white"))))
     '(region ((t (:background "wheat" :foreground "black")))))
    


  • Ich danke dir vielmals Amtrak!
    Eine Sache noch: weißt du wie man toggle-truncate-lines bei jedem Start automatisch auf true schaltet?
    ich hab einfach in .emacs ganz am Ende geschrieben:

    (setq toggle-truncate-lines t)
    

    Aber es passiert einfach nichts. Ich muss es jedesmal manuell über
    M-x toggle-truncate-lines aktivieren.
    Wie mache ich das?

    Gruß Christian



  • edit: Blödsinn, habs selbst ausprobiert. 🙂



  • @nman: Was meinst du mit Blödsinn?
    Naja du hast aber schon recht, es wäre natürlich schön, wenn man die Dateien nicht gleich alle konvertieren müsste. Das geht bestimmt unter emacs, allerdings gibt es ja soooo viele Konfigurationsmöglichkeiten...

    Gruß Christian



  • christian123 schrieb:

    @nman: Was meinst du mit Blödsinn?

    Ich hatte in meinem Post Blödsinn geschrieben und hab ihn schnell wieder wegeditiert. 🙂



  • moin,
    @christian123
    der Befehl lautet (setq truncate-lines t), du musst das toggle davor weglassen.

    @nman:

    nman schrieb:

    Amtrak: Gibt aber doch sicher auch eine Möglichkeit den Emacs das ^M einfach nicht anzeigen zu lassen, hm?

    Sicher wird es einen Weg geben dem Emacs das abzugewöhnen, ich habe ihm ja auch nur einen Vorschlag gemacht. Wie du sicher aus eigener Erfahrung weist, gibt es immer mehrere Wege unter Unix/Linux zum Ziel zu kommen 🙂



  • Amtrak schrieb:

    Sicher wird es einen Weg geben dem Emacs das abzugewöhnen, ich habe ihm ja auch nur einen Vorschlag gemacht. Wie du sicher aus eigener Erfahrung weist, gibt es immer mehrere Wege unter Unix/Linux zum Ziel zu kommen 🙂

    Ja und unter Emacs mindestens drei weitere. 🙂

    (Ich für meinen Teil sehe die ^Ms ganz gerne...



  • Hi!
    (setq truncate-lines t) klappt komischerweise auch nicht?!
    Ich habe es schon ganz am Ende von .emacs geschrieben.
    Da stimmt doch wohl irgendwas nicht?
    Ich verwende GNU-emacs. Hat das damit vielleicht etwas zu tun?

    Gruß Christian



  • Ich dachte diese truncate-lines-Optionen wirken immer nur bufferweit? 😕



  • Was ich eigentlich noch meinte, war, wie ich denn makefiles automatisch in emacs erstellen kann bzw. mehrere Quelldateien compilieren kann?
    Oder muss ich die makefile extra selbst schreiben?
    Denn in source-navigator gab es die Möglichkeit das die Makefile automatisch aus allem in einem Projekt verhandenen Quelldateien erstellt wurde.
    Gibt es sowas auch in emacs?

    Gruß Christian



  • nabend,

    @nman

    nman schrieb:

    Ich dachte diese truncate-lines-Optionen wirken immer nur bufferweit? 😕

    bei mir wirken die truncate-lines Optionen auf alle Buffer die ich geöffnet habe. Was jetzt das Standardverhalten ist weis ich auch nicht 🙂

    @christian123
    emacs: schreib in deine .emcas

    (setq-default truncate-lines t)

    hab ich eben ausprobiert und bei mir hat es geklappt.

    was du auch machen kannst ist den folgenden Abschnitt in deine .emacs einfügen, damit kannst du das Verhalten von truncate-lines nach belieben umstellen:

    ; Bei Eingabe von M-C-j werden von allen Zeilen nur die ersten 79
    ; Zeichen angezeigt.
    ;
    (defun truncon()
    (interactive)
    (setq-default truncate-lines t)
    (recenter)
    )
    (global-set-key "\M-\C-j" 'truncon)

    ;
    ; Bei Eingabe von M-j werden alle Zeichen einer Zeile angezeigt.
    ;
    (defun truncoff()
    (interactive)
    (setq-default truncate-lines nil)
    (recenter)
    )
    (global-set-key "\M-j" 'truncoff)

    make: schau dir mal die Tools autoconf und automake an, das geht in etwa so in die Richtung was du suchst. Must allerdings auch dort ein bischen Gehirnschmalz investieren, bis du zu einem funktionierenden makefile kommst.

    Gruss Amtrak



  • Gut ich werde mich dann mal mit autoconf und automake auseinandersetzen.
    Mit den truncate-lines klappts jetzt. Also vielen Dank!
    Aber sag mal, gibt es in emacs eigentlich so etwas wie einen class-browser oder eine Navigationsleiste mit der ich mit Quellcode-Dateien in irgendeiner Form effizient durchforsten kann?
    Weil von source-navigator war ist dies bezüglich seeeehr verwöhnt 😉
    Und was hat es eigentlich mit den Styles wie Stroustrup auf sich?

    Gruß Christian



  • nabend,
    Stroustrup,Gnu,K&R sind Formatierungsvorlagen für Quellcode. Da kannst du einen nach deinem Gusto auswählen.

    Als source code browser für den emacs fällt mir direkt nur ecb ein, kannst dir den ja mal anschauen. Gibt aber bestimmt auch noch andere. 🙂

    http://ecb.sourceforge.net/

    Gruss Amtrak



  • Hey super!
    Jetzt kann ich zumindest mal zwischen Source-Dateien einfach navigieren.
    Trotzdem klappt noch nicht alles so wie ich es mir vorstelle.
    Also meine Sourcedateien sind über mehrere Unterverzeichnisse zerstreut.
    Das Fenster, dass die Methoden und Klassen anzeigen soll, zeigt nur die der aktuell geöffneten Datei an.
    Wie kann ich den dazu bringen, das es mir alle Klassen von allen Dateien aus allen Unterverzeichnissen anzeigt?
    Das wäre echt toll wann das klappt!

    EDIT: Wie ich gerade festgestellt habe, werden Klassen überhaupt nicht angezeigt, nur Methoden. Woran kann das liegen? Hängt das vielleicht irgendwie mit "Semantic" zusammen?

    Gruß Christian



  • bei dem ecb kann ich dir leider nicht weiterhelfen, da ich sowas selbst nicht benutze, sorry 😞

    Gruss Amtrak



  • bei dem ecb kann ich dir leider nicht weiterhelfen, da ich sowas selbst nicht benutze, sorry 😞

    Gruss Amtrak



  • Aber schon bei cedet (was ja ecb braucht) werden bei der Speedbar keine Klassen angezeigt.
    Was auch komisch war, ich musste make mit MAKEINFO=echo starten, bei der Installation, weil sonst immer Fehlermeldungen kamen.
    Vielleicht hängt das damit zusammen?

    Gruß Christian



  • Aber schon bei cedet (was ja ecb braucht) werden bei der Speedbar keine Klassen angezeigt.
    Was auch komisch war, ich musste make mit MAKEINFO=echo starten, bei der Installation, weil sonst immer Fehlermeldungen kamen.
    Vielleicht hängt das damit zusammen?

    Gruß Christian


Log in to reply