Προς το περιεχόμενο

Notepad++ + Plugins + MinGW = IDE


migf1

Προτεινόμενες αναρτήσεις

Δημοσ. (επεξεργασμένο)

http://www.insomnia....ost__p__4813493

...

Εγώ προσωπικά δε χρησιμοποιώ κάποιο IDE όταν προγραμματίζω( κυρίως σε C). Σε windows χρησι-

μοποιώ το notepad++, και εδώ θα παρακαλέσω τον mifg1 αν μπορεί να ποστάρει κάποια Links για

τον debugger που έδειξε σε προηγούμενο post.

...

Με πρόσφατη αφορμή την παραπάνω παράθεση, αλλά κυρίως επειδή η απορία επαναλαμβάνεται κατά καιρούς, θα προσπαθήσω να εξηγήσω μέσω ενός μινι-οδηγού πως μπορούμε να μετατρέψουμε το Notepad++ σε ένα αξιοπρεπές IDE.

 

Θα χρησιμοποιήσω ως compiler το MinGW tool-chain, οπότε εδώ μιλάμε για C/C++, αλλά άπαξ και γίνει αυτό η προσέγγιση παραμένει ίδια και για οποιαδήποτε άλλη γλώσσα

 

Δεν ξέρω αν θα τον ολοκληρώσω όλον σε ένα ποστ, πιθανότατα να χρειαστούν περισσότερα, αλλά ας γίνει η αρχή και βλέπουμε...

 

------------------------------------------------------------------------------------------------------------------------------

EDIT: τελικά θα χρειαστούν αρκετά posts, οπότε θα βάζω εδώ links προς το κάθε post ξεχωριστά, σαν άτυπο πίνακα περιεχομένων...

 

1ο Μέρος: Κατέβασμα & Εγκατάσταση

2ο Μέρος: Μερικές χρήσιμες ρυθμίσεις του ίδιου του Notepad++

3ο Μέρος: NppExec (plugin) - Build & Run script

4ο Μέρος: NppExec (plugin) - Μετάβαση σε γραμμή σφάλματος

 

Μάλλον δεν θα υπάρξει 5ο μέρος, δείτε όμως εδώ κάποιες σκόρπιες εξηγήσεις λίγο πιο προχωρημένων λειτουργιών.

------------------------------------------------------------------------------------------------------------------------------

 

1ο Μέρος

 

Τα ελάχιστα που χρειαζόμαστε

 

(σε παρένθεση οι εκδόσεις που χρησιμοποιώ εγώ αυτή τη στιγμή που γράφω)

 

1. Notepad++ (v6.1.3): http://notepad-plus-...oad/v6.1.3.html

Μορφή: Notepad++ v6.1.3 zip package

 

2. NppExec Plugin (v0.4.3): http://sourceforge.n...lugin%20v0.4.3/

Αρχείο: NppExec_043_dll_Unicode.zip

Περιγραφή: Μίνι κονσόλα μέσα στο Notepad++

 

3. Explorer Plugin (v1.8.2): http://sourceforge.n...lugin%20v1.8.2/

Αρχείο: Explorer_1_8_2_UNI_dll.zip

Περιγραφή: Mini file-explorer μέσα στο Notepad++

 

4. LanguageHelp Plugin (v1.40): https://sites.google...lari/nppplugins

Περιγραφή: Offline, context sensitive help (with user defined .chm or .pdf files)

 

5. SourceCookifier Plugin (v7.3.0): http://sourceforge.n...er/files/0.7.3/

Περιγραφή: Περιήγηση συμβόλων (functions, typedefs, preprocessor directives, etc).

 

6. MinGW installer (20120426): http://sourceforge.n...ts/mingw/files/

Αρχείο: mingw-get-inst-20120426.exe

Περιγραφή: Σχεδόν αυτόματη εγκατάσταση του MinGW tool-chain.

 

 

Εγκατάσταση

 

Προσωπικά προτιμώ εκδοχές προγραμμάτων που δεν χρειάζονται εγκατάσταση, παρά μόνο αποσυμπίεση σε όποιον φάκελο επιλέξω εγώ. Σε αυτή τη λογική κινείται και τα link του Notepad++ που έχω παραθέσει στην προηγούμενη ενότητα (στην ίδια σελίδα υπάρχουν και άλλες εκδοχές, οπότε αν π.χ. σας εξυπηρετεί καλύτερα κάποια άλλη κατεβάστε εκείνην, αλλά σε αυτή την περίπτωση υπάρχουν μερικές διαφορές στην εγκατάσταση των plugins, τις οποίες δεν θα τις καλύψω... αναφέρονται όμως στην τεκμηρίωση των plugins).

 

Κατεβάζουμε λοιπόν τα αρχεία που έχω παραθέσει παραπάνω.

 

Notepad++

 

Πρώτα αποσυμπιέζουμε το Notepad++ σε όποιον φάκελο θέλουμε (εγώ χρησιμοποιώ τον C:\Programs\Notepad++ ... γενικώς έχω τον φάκελο C:\Programs στον οποίον αποσυμπιέζω προγράμματα που δεν χρειάζονται εγκατάσταση, το καθένα σε δικό του υποφάκελο μέσα στον Programs). Για να μη χρειάζεται να ανοίγουμε τον φάκελο και να κάνουμε διπλό κλικ στο αρχείο Notepad++ κάθε φορά που θέλουμε να το τρέξουμε, μπορούμε να φτιάξουμε ένα εικονίδιο συντόμευσής του στο Desktop ως εξής:

 

1. Δεξί κλικ στο αρχείο Notepad++.exe και κατόπιν επιλογή της εντολής Αντιγραφή.

2. Δεξί κλικ σε ένα κενό σημείο του desktop, και κατόπιν επιλογή της εντολής Επικόλληση συντόμευσης.

 

(αν κατεβάσατε την εκδοχή με τον installer, τότε το εικονίδιο της συντόμευσης δημιουργείται αυτόματα)

 

Notepad++ Plugins

 

Κατόπιν αποσυμπιέζουμε τα plugins στον φάκελο Notepad++\Plugins.

 

Αν τα plugins έχουν 2 εκδόσεις, μια ANSI (συνήθως με ένα Α στο τέλος των ονομάτων) και μια Unicode (συνήθως με ένα U στο τέλος των ονομάτων), τότε αποσυμπιέζουμε την Unicode. Η ANSI έκδοση του Notepad++ έχει καταργηθεί.

MinGW Toolchain

 

Τέλος τρέχουμε τον installer του MinGW toolchain, ο οποίος μας ρωτάει ποιους compiler θέλουμε να χρησιμοποιήσουμε (c, c++, objective c, fortran και ada) καθώς και ποιος θέλουμε να είναι ο κεντρικός φάκελος του mingw. Παλαιότερα προτεινόταν ο φάκελος αυτός να είναι ο C:\mingw, αλλά επειδή πλέον έχουν κυκλοφορήσει διάφορες διανομές του toolchain, πολλές εκ των οποίων ψάχνουν από μόνες τους πρώτα από όλα τον εν λόγω φάκελο (ακόμα κι αν τις έχουμε εγκατεστημένες αλλού) καλό είναι να ορίσουμε άλλον φάκελο ως κεντρικό... για παράδειγμα c:\programs\mingw (προσωπικά χρησιμοποιώ τον c:\unix\mingw). ΜΗΝ χρησιμοποιήσετε φακέλους που περιέχουν κενά διαστήματα στις ονομασίες τους!

 

Σημείωση: Αποφύγετε να ορίσετε τον κεντρικό φάκελο του MinGW μέσα στον φάκελο του Notepad++. Όχι ότι θα έχετε κάποιο πρόβλημα, αλλά αυτή είναι αυτόνομη διανομή του MinGW η οποία δεν εξαρτάται από κανένα IDE. Αυτό στην πράξη σημαίνει πως μπορείτε να κατεβάσετε όποιο IDE θέλετε χωρίς ενσωματωμένο compiler και κατόπιν να του υποδείξετε ως compiler αυτή την αυτόνομη διανομή του MinGW.

 

Όταν ερωτηθούμε από τον installer του MinGW από που θέλουμε να κατεβάσει τα αρχεία, επιλέγουμε "Download latest repository catalogs". 2-3 βήματα αργότερα, όταν κληθούμε να επιλέξουμε τι ακριβώς θέλουμε να κατεβάσουμε, εκτός από τους επιθυμητούς compilers (σίγουρα θέλουμε C και C++) επιλέγουμε και το "MinGW Developer Toolkit" το οποίο μεταξύ άλλων περιλαμβάνει και το "MSYS Basic System", άρα αυτό ΔΕΝ χρειάζεται να το επιλέξουμε ξεχωριστά.

 

Σημείωση: MSYS είναι η γραμμή εντολών του MinGW η οποία βασίζεται στο bash-shell του Linux/Unix, και παρέχει έξτρα δυνατότητες συγκριτικά με την γραμμή εντολών των Windows (χρήσιμη αν θέλετε π.χ να κάνετε build open-source προγράμματα από τους πηγαίους τους κώδικες, μιας και στη συντριπτική τους πλειοψηφία διατίθενται με Unix/Linux οδηγίες ;) ). Ο installer θα σας βγάλει εικονίδιο συντόμευσης του MSYS στο desktop, για να το τρέχετε όποτε επιθυμείτε. Εμείς σε αυτό τον οδηγό δεν θα το χρησιμοποιήσουμε, θα χρησιμοποιήσουμε την κανονική γραμμή εντολών των Windows (μέσω του NppExec plugin, μέσα από το Notepad++).

 

Όταν ολοκληρωθεί το κατέβασμα του MinGW toolchain, χρειάζεται να προσθέσουμε τη διαδρομή των εκτελέσιμων αρχείων του στην μεταβλητή περιβάλλοντος (environment variable) PATH των Windows.

 

Για όσους δεν γνωρίζετε πως να το κάνετε αυτό, κάνετε δεξί κλικ στο εικονίδιο Ο Υπολογιστής μου και κατόπιν διαλέγετε Ιδιότητες (My Computer | Properties). Μετά Ρυθμίσεις συστήματος για προχωρημένους | [Για προχωρημένους] | Μεταβλητές περιβάλλοντος

 

Η εικόνα που ακολουθεί το κάνει πολύ πιο σαφές (είναι για Windows 7, αλλά η διαδικασία είναι πολύ παραπλήσια και για Vista και για XP)...

 

post-38307-0-39614900-1340375016_thumb.jpg

 

Στο παράθυρο που στην εικόνα έχει τον αριθμό 6, υπάρχουν 2 περιοχές: η κάτω που περιέχει τις μεταβλητές περιβάλλοντος ολόκληρου του συστήματος και η επάνω που περιέχει τις μεταβλητές περιβάλλοντος που ισχύουν μόνο για τον τρέχοντα χρήστη (λογαριασμό). Αποφύγετε να πειράξετε την κάτω περιοχή, προτιμήστε ότι κάνετε να το κάνετε στην πάνω περιοχή.

 

Αν η πάνω περιοχή περιέχει ήδη την μεταβλητή περιβάλλοντος PATH, τότε πρώτα την επιλέγουμε, κατόπιν πατάμε το κουμπί Επεξεργασία και προσθέτουμε στο τέλος των περιεχομένων της το εξής: ;c:\programs\mingw\bin (δηλαδή γράφουμε πρώτα ένα ελληνικό ερωτηματικό, μετά τον κεντρικό φάκελο του MinGW όπως τον ορίσαμε στον installer ακολουθούμενο από μια ανάποδη κάθετο και αμέσως μετά τη λέξη: bin). Είναι εξαιρετικά σημαντικό να μη σβήσουμε τα ήδη υπάρχοντα περιεχόμενα της μεταβλητής PATH (αν υπάρχουν) αλλά απλώς να προσθέσουμε ότι καινούριο θέλουμε.

 

Μπορούμε αν θέλουμε να προσθέσουμε τον φάκελο c:\programs\mingw στην αρχή του PATH. Σε αυτή την περίπτωση γράφουμε πρώτα το όνομα του φακέλου και κατόπιν τον διαχωρίζουμε από τα υπόλοιπα περιεχόμενα με το ελληνικό ερωτηματικό: c:\programs\mingw\bin;υπόλοιπα περιεχόμενα της μεταβλητής.

 

Αν η εντολή PATH δεν υπάρχει καθόλου στην πάνω περιοχή, τότε πατάμε στο κουμπί Δημιουργία και την δημιουργούμε μόνοι μας, βάζοντάς της ως τιμή: c:\programs\mingw\bin

 

Σημείωση 1η: Η μεταβλητή περιβάλλοντος PATH καθορίζει ποιοι φάκελοι και με ποια σειρά διερευνώνται για τον εντοπισμό των προγραμμάτων που γράφουμε στην γραμμή εντολών των Windows. Οπότε αν για παράδειγμα έχουμε 2 αντίγραφα ενός προγράμματος foo.exe τοποθετημένα σε 2 διαφορετικούς φακέλους, τότε όταν γράφουμε στην γραμμή εντολών: foo (ή foo.exe) τα Windows πρέπει να έχουν έναν τρόπο να γνωρίζουν ποιο από τα 2 θα εκτελεστεί. Θα εκτελεστεί εκείνο του οποίου ο φάκελος προηγείται στα περιεχόμενα της μεταβλητής PATH (αν κανένας από τους 2 φακέλους δεν υπάρχει στο PATH τότε τα Windows θα μας πουν πως το foo που γράψαμε είναι άγνωστη εντολή).

 

Σημείωση 2η: Ο installer δημιουργεί στον κεντρικό φάκελο του MinGW ξεχωριστό υποφάκελο για το MSYS (τον msys\ ) ο οποίος μεταξύ άλλων περιέχει και εντολές γραμμής εντολών που χρησιμοποιούνται στο Unix/Linux (π.χ. ls, cat, grep, gawk, και πολλές ακόμα). Οπότε αν θέλουμε να έχουμε απευθείας πρόσβαση σε αυτές από τη κανονική γραμμή εντολών των Windows, μπορούμε να προσθέσουμε τον φάκελό τους στο PATH. Για παράδειγμα μπορούμε να τον βάλουμε στην αρχή του PATH μαζί με τον κεντρικό φάκελο του MinGW: c:\programs\mingw\bin;c:\programs\mingw\msys\1.0\bin;

 

Σε αυτό το σημείο έχουμε τελειώσει με τις εγκαταστάσεις, και απομένει να παραμετροποιήσουμε το Notepad++ και τα plugins.

 

Παράλληλα όμως έχουμε μια πλήρως λειτουργική και κυρίως αυτόνομη εγκατάσταση του MinGW toolchain, που μπορούμε να την δουλέψουμε από τη γραμμή εντολών των Windows. Ακριβώς επειδή προσθέσαμε τον κεντρικό φάκελο του MinGW αλλά και του MSYS στο PATH των Windows, έχουμε πρόσβαση σε όλο το toolchain από οποιοδήποτε σημείο της γραμμής εντολών.

 

Ως επιβεβαίωση πως όλα πήγαν καλά, κλείστε όσα παράθυρα γραμμής εντολών έχετε ανοιχτά (cmd.exe) και ανοίξτε ένα καινούριο (αυτό εγγυάται πως ενεργοποιούνται οι αλλαγές που έχουμε κάνει στο PATH). Κατόπιν πληκτρολογήστε...

 

>
gcc -v

θα πρέπει να δείτε κάτι σαν το παρακάτω...

 

> gcc -v

Using built-in specs.

COLLECT_GCC=gcc

COLLECT_LTO_WRAPPER=c:/unix/mingw/bin/../libexec/gcc/mingw32/4.7.0/lto-wrapper.exe

Target: mingw32

Configured with: ../gcc-4.7.0/configure --enable-languages=c,c++,ada,fortran,obj

c,obj-c++ --disable-sjlj-exceptions --with-dwarf2 --enable-shared --enable-libgo

mp --disable-win32-registry --enable-libstdcxx-debug --disable-build-poststage1-

with-cxx --enable-version-specific-runtime-libs --build=mingw32 --prefix=/mingw

Thread model: win32

gcc version 4.7.0 (GCC)

 

Μπορείτε επίσης να γράψετε και να αποθηκεύσετε ένα δοκιμαστικό κώδικα C με το απλό Notepad (Σημειωματάριο) των Windows, να πάτε κατόπιν με cd από τη γραμμή εντολών στον φάκελο του κώδικα και να γράψετε...

 

>
gcc myprog.c -o myprog.exe

Το myprog.exe θα δημιουργηθεί στον ίδιο φάκελο που είναι ο κώδικας (.c) και θα είναι πλήρως εκτελέσιμο, είτε μέσα από την γραμμή εντολών πληκτρολογώντας το όνομά του, είτε κάνοντας διπλό κλικ με το ποντίκι στο εικονίδιό του.

 

Μπορείτε επίσης να δοκιμάσετε στη γραμμή εντολών και κάποιες unix/linux-οειδείς εντολές, όπως για παράδειγμα τις ls (αντί για dir), cat (αντί για type), rm (αντί για del) και πάει λέγοντας. Προφανώς θα δουλεύουν κανονικά και οι νορμάλ εντολές της γραμμής εντολών των Windows.

 

Επειδή τα 'παιξα από το πολύ γράψιμο θα κάνω ένα διάλειμμα και θα συνεχίσω με την ρύθμιση του Notepad++ και των plugins του είτε αργότερα είτε από αύριο.

Επεξ/σία από migf1
  • Like 10
Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

  • Απαντ. 79
  • Δημ.
  • Τελ. απάντηση

Συχνή συμμετοχή στο θέμα

Παιδιά ευχαριστώ για τα καλά σας λόγια :)

 

Προσέθεσα κι άλλο ένα plugin στα ελάχιστα που χρειαζόμαστε, το Explorer (υπάρχουν 2-3 file-exlplorer plugins αλλά το συγκεκριμένο πιάνει λιγότερο χώρο κατά πλάτος, για αυτό και το προτιμώ). Γενικώς υπάρχουν αρκετά ακόμα χρήσιμα plugins, όπως για παράδειγμα το Compare, το WebEdit, το Spell-Checker, το Snippets, κλπ... αλλά δεν μπορώ να τα καλύψω όλα, για αυτό βάζω τα κατά τη γνώμη απολύτως απαραίτητα για να γίνει το Notepad++ λειτουργικό σαν IDE.

 

Ευτυχώς η διαχείριση των plugins είναι αυτοματοποιημένη μέσω του μενού Plugins->Plugin Manager->Show Plugin Manager από όπου μπορεί κανείς να ενημερωθεί για το ποια plugins υπάρχουν διαθέσιμα, ποια είναι εγκατεστημένα, ποια είναι συμβατά με την τρέχουσα έκδοση του Notepad++, και διάφορα άλλα, οπότε μπορείτε να πειραματιστείτε και μόνοι σας με διάφορα plugins. Η εγκατάσταση και η απεγκάταστασή τους γίνεται επίσης αυτοματοποιημένα μέσα από τον Plugin Manager, αν βαριέστε να ασχολείστε με χειροκίνητα κατεβάσματα, αποσυμπιέσεις, μεταφορές και διαγραφές αρχείων από το Desktop (πράγμα απόλυτα κατανοητό :) )

 

Απλώς κάποιες φορές ο Plugin Manager καθυστερεί να ενημερωθεί με τις νέες εκδόσεις κάποιων plugins, ενώ μερικές δεν εμφανίζονται καθόλου.

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Να αναφέρω ότι έχω γράψει ένα mod του Explorer plugin, το οποίο υλοποιεί τη λειτουργία snap open που θα βρείτε, π.χ., στο gedit.

 

Περισσότερες πληροφορίες:

http://shiftlock.wordpress.com/2012/05/04/notepad-explorer-plugin-snap-open-mod/

https://github.com/prekageo/npp-explorer/tree/snap-open

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Δημοσ. (επεξεργασμένο)

Να αναφέρω ότι έχω γράψει ένα mod του Explorer plugin, το οποίο υλοποιεί τη λειτουργία snap open που θα βρείτε, π.χ., στο gedit.

 

Περισσότερες πληροφορίες:

http://shiftlock.wor...-snap-open-mod/

https://github.com/p.../tree/snap-open

Ωραίος & πολλά μπράβο φίλε prekageo!

Ευχαριστώ για την ενθάρρυνση φίλε xdir!

 

------------------------------------------------------------------------------------------------------------------------------

1ο Μέρος: Κατέβασμα & Εγκατάσταση

2ο Μέρος: Μερικές χρήσιμες ρυθμίσεις του ίδιου του Notepad++

3ο Μέρος: NppExec (plugin) - Build & Run script

4ο Μέρος: NppExec (plugin) - Μετάβαση σε γραμμή σφάλματος

 

Μάλλον δεν θα υπάρξει 5ο μέρος, δείτε όμως εδώ κάποιες σκόρπιες εξηγήσεις λίγο πιο προχωρημένων λειτουργιών.

------------------------------------------------------------------------------------------------------------------------------

 

 

2ο Μέρος

 

Ας συνεχίσουμε με μερικές βασικές ρυθμίσεις του ίδιου του Notepad++, και μετά με κάποια από τα plugins (όχι όλα, γιατί τα περισσότερα δεν χρειάζονται ιδιαίτερες εξηγήσεις).

 

Το τελικό αποτέλεσμα περιμένουμε να είναι κάπως έτσι...

 

post-38307-0-94878300-1340442564_thumb.jpg

 

Μερικές χρήσιμες ρυθμίσεις του Notepad++

 

Auto Completion

 

Το auto-completion είναι μια συνηθισμένη και χρήσιμη λειτουργία όταν γράφουμε κώδικα. Στο Notepad++ το ρυθμίζουμε από το μενού Settings->Preferences [Backup/Auto-completion]. Όπως δείχνουν οι παρακάτω εικόνες, μπορεί να συνδυαστεί με το λεγόμενο function call-tip (ή function-hint, στην ορολογία του Notepad++). H διαφορά είναι πως το auto-completion ανοίγει λίστα μετά το γράψιμο των πρώτων γραμμάτων, ενώ το function-hint ανοίγει tooltip με τις παραμέτρους της συνάρτησης μόλις πληκτρολογήσουμε την αριστερή παρένθεση. Προσωπικά έχω ενεργοποιημένο μονάχα το function-hint (οι εικόνες είναι από την σελίδα μου και είναι ασπρόμαυρες γιατί τότε προσπαθούσα να εξοικονομήσω χώρο)..

 

post-38307-0-76197600-1340443621_thumb.png post-38307-0-13379300-1340443622_thumb.png post-38307-0-43657400-1340443622_thumb.png

 

Μπορούμε να προσθέσουμε συναρτήσεις και keywords που ενδεχομένως λείπουν βάζοντας τα στο κατάλληλο αρχείο XML, από αυτά που υπάρχουν στον φάκελο Notepad++\plugins\APIs. Για παράδειγμα για τη C είναι το: Notepad++\plugins\APIs\c.xml. Όμως πριν το επιχειρήσετε, διαβάστε τις σύντομες οδηγίες στο Wiki του Notepad++: http://sourceforge.n...Auto_Completion.

 

 

Text Encoding & EOL Characters

 

Γενικώς από το μενού Settings->Preferences έχουμε πρόσβαση στις περισσότερες από τις ρυθμίσεις του Notepad++, οι περισσότερες εκ των οποίων δεν χρειάζονται ιδιαίτερη εξήγηση. Αφιερώστε λίγο χρόνο να το ρυθμίσετε στις προσωπικές σας ανάγκες.

 

Να αναφέρω όμως ξεχωριστά δυο ακόμα χρήσιμες λειτουργίες, που αφορούν την κωδικοποίηση και τις αλλαγές γραμμών.

 

Σε ότι αφορά την κωδικοποίηση, το βασικό εργαλείο είναι το μενού Encoding...

 

post-38307-0-50668600-1340445202_thumb.jpg

 

Όπως δείχνει η παραπάνω εικόνα, το βασικό μενού χωρίζεται σε 2 περιοχές: Encode και Convert. Η διαφορά είναι πως με τις εντολές Encode αλλάζει μονάχα η προβολή του ενεργού εγγράφου, ενώ με τις εντολές Convert μετατρέπονται και τα περιεχόμενά του. Η χρησιμότητα της λειτουργίας αυτής γίνεται σημαντική όταν αναπτύσσουμε κώδικα σε περισσότερες της μιας πλατφόρμας.

 

Η μετατροπή των αλλαγών γραμμής είναι επίσης χρήσιμη όταν γράφουμε κώδικα σε περισσότερες της μια πλατφόρμας, κι επιτυγχάνεται από το μενού Edit...

 

post-38307-0-49260700-1340446065_thumb.jpg

 

Μπορούμε επίσης να ορίσουμε default τιμές των παραπάνω για κάθε νέο μας έγγραφο, από το μενού: Settings->Preferences [New Document/Default Directory].

 

 

Syntax Highlighting

 

Τέλος, παρέχεται syntax-highlighting για τις περισσότερες δημοφιλείς γλώσσες (αν όχι όλες) στο οποίο μπορούμε να αλλάξουμε χρώματα, themes ακόμα και keywords για την κάθε γλώσσα, από το μενού: Settings -> Style Configurator (π.χ στην εικόνα που ακολουθεί έχω προσθέσει κάποια keywords της αναθεώρησης C11)...

 

post-38307-0-56872600-1340446663_thumb.jpg

 

Μπορούμε να φτιάξουμε syntax-highlighting και για γλώσσες που δεν υπάρχουν, ή να κατεβάσουμε ήδη φτιαγμένες από άλλους χρήστες. Δυο χρήσιμα link για αυτές τις δουλειές είναι τα εξής (και πάλι από το Notepad++ Wiki):

 

1. How to create your own definition (user-defined language) of a Syntax Highlighting scheme

2. Obtaining files related to user defined languages

 

 

TextFX Characters (plugin)

 

Γενικώς οι δυνατότητες του Notepad++ ψιλοτείνουν στο... άπειρο, οπότε είναι αδύνατο να καλυφθούν σε έναν mini-οδηγό. Ανέφερα μονάχα 3-4 που εκτιμώ ως απολύτως απαραίτητες για συγγραφή κώδικα. Αλλά υπάρχουν και πολλές άλλες, όπως για παράδειγμα ολόκληρο το μενού: TextFX που μόνο καφέ δεν ψήνει (ουσιαστικά πρόκειται για plugin, ονόματι TextFX Characters: http://sourceforge.n...TextFX%20v0.26/ το οποίο συνήθως διανέμεται μαζί με το Notepad++... αν δεν το έχει η έκδοση του Notepad++ που κατεβάσατε, κατεβάστε το! ;) )

 

Σε επόμενα posts θα προσπαθήσω να δείξω πως ρυθμίζονται μερικά από τα βασικά plugins που ανέφερα στην 1η δημοσίευση (κυρίως όμως το NppExec και το LanguageHelp).

Επεξ/σία από migf1
Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Δημοσ. (επεξεργασμένο)

------------------------------------------------------------------------------------------------------------------------------

1ο Μέρος: Κατέβασμα & Εγκατάσταση

2ο Μέρος: Μερικές χρήσιμες ρυθμίσεις του ίδιου του Notepad++

3ο Μέρος: NppExec (plugin) - Build & Run script

4ο Μέρος: NppExec (plugin) - Μετάβαση σε γραμμή σφάλματος

 

Μάλλον δεν θα υπάρξει 5ο μέρος, δείτε όμως εδώ κάποιες σκόρπιες εξηγήσεις λίγο πιο προχωρημένων λειτουργιών.

------------------------------------------------------------------------------------------------------------------------------

 

 

3o Μέρος: NppExec (plugin)

 

Ο κινητήριος μοχλός της μετατροπής του Notepad++ σε IDE είναι αυτό το plugin. Στην εικόνα που ακολουθεί έχω ανοιχτό το μενού του plugin, με ένα απλό hello.c γραμμένο στο φόντο (τέρμα αριστερά φαίνεται το Explorer plugin, τέρμα δεξιά το SourceCookifier και τέρμα κάτω η μίνι κονσόλα του NppExec).

 

post-38307-0-94477400-1340452621_thumb.jpg

 

Έχω μαρκάρει με κόκκινα βέλη τα πιο σημαντικά σημεία που αφορούν μονάχα το NppExec. Για παράδειγμα, από το εικονίδιο της toolbar που δείχνει το πάνω-πάνω βέλος μπορείτε να ανοιγοκλείνετε γρήγορα την κονσόλα του NppExec (την περιοχή δλδ που δείχνει το κάτω-κάτω βέλος).

 

Η γενική ιδέα του NppExec είναι να παρέχει ένα mini-shell, με εξειδικευμένη ενσωμάτωση στο Notepad++. Όπως και τα κανονικά shells, έτσι κι αυτό έχει δικές του εντολές και μεταβλητές, ενώ "καταλαβαίνει" τόσο τις μεταβλητές περιβάλλοντος των Windows όσο και του Notepad++. Δοκιμάστε να πληκτρολογήσετε στην κονσόλα του NppExec την εντολή: help και θα δείτε μια αρκετά μακριά λίστα εντολών και μεταβλητών που μπορείτε να χρησιμοποιήσετε ανά πάσα στιγμή μέσα από Notepad++, στην κονσόλα του NppExec.

 

Από όλες αυτές τις εντολές εμείς θα χρησιμοποιήσουμε μονάχα 2-3, καθώς και 2-3 μεταβλητές του Notepad++, για να γράψουμε ένα απλούστατο σκριπτάκι με το οποίο θα κάνουμε build & run τον κώδικα του ενεργού εγγράφου (το hello.c στη δική μας περίπτωση). To σκριπτάκι αυτό θα το σώσουμε με μια ονομασία της αρεσκείας μας (π.χ. mingw-gcc debug) και θα το καλούμε μέσω της εντολής Execute του NppExec (με F6 για πιο γρήγορα) κάθε φορά που θέλουμε να κάνουμε compile τον κώδικά μας και να τρέχουμε το εκτελέσιμο.

 

Σε αυτό το σημείο είναι χρήσιμο να αναφέρω πως παραπλήσια, αλλά λιγότερο ευέλικτη, λειτουργικότητα παρέχει και το Notepad++ μέσω του μενού Run->Run (F5) χωρίς να χρειάζεται κανένα plugin. Το συγκεκριμένο μενού παρέχει μάλιστα και predefined run commands, όπως για παράδειγμα την Run->Get php help (Alt + F1) η οποία αναζητάει στην online τεκμηρίωση της PHP όποια λέξη κειμένου έχετε επιλεγμένη την ώρα που καλείται την εντολή.

 

Μπορούμε να φτιάξουμε και δικές μας run-commands, και να τις προσθέσουμε στο μενού Run, όπως εξηγεί η online τεκμηρίωση του Notepad++: http://npp-community...manual/commands (σε αυτό το link μπορείτε να δείτε και τις εξειδικευμένες μεταβλητές που παρέχει το Notepad++).

 

Επιστρέφοντας τώρα στο NppExec, καταρχήν κρατήστε ως βασικές ρυθμίσεις τα τσεκαρίσματα του μενού του, όπως τα δείχνω στην εικόνα, στην αρχή αυτού του 3ου μέρους.

 

Το Console command history εξασφαλίζει πως θα κρατείται ιστορικό των εντολών που πληκτρολογείτε στην κονσόλα του NppExec (το οποίο μπορείτε να το ξαναχρησιμοποιήσετε με τα πάνω & κάτω βελάκια του πληκτρολογίου.

 

Το Follow $(CURRENT_DIRECTORY) εξασφαλίζει πως ως τρέχων φάκελος λογίζεται ο φάκελος στον οποίον είναι αποθηκευμένο το ενεργό έγγραφο (το hello.c στη δική μας περίπτωση).

 

To Console Ouput Filters μας επιτρέπει να ρυθμίσουμε το NppExec έτσι ώστε όταν ο compiler παράξει κάποιο σφάλμα, προειδοποίηση ή σημείωση να μπορούμε να κάνουμε διπλό-κλικ πάνω στο μήνυμα και να μας πάει στη συγκεκριμένη γραμμή του κώδικα. Θα τις δούμε λίγο αργότερα αυτές τις ρυθμίσεις.

 

Άμεση χρήση της κονσόλας του NppExec

 

Προς το παρόν ας σταθούμε λίγο στο ότι η κονσόλα του NppExec μπορεί να χρησιμοποιηθεί άμεσα, περίπου σαν να ήμασταν στην κανονική γραμμή εντολών των Windows. Δείτε την εικόνα που ακολουθεί, όπου βασικά κάνω dir στον τρέχοντα φάκελο, κατόπιν κάνω compile και παράγω εκτελέσιμο για το hello..c ( gcc hello.c -o hello.exe ), ξανακάνω dir για να επιβεβαιώσω πως παράχθηκε το εκτελέσιμο hello.exe και τέλος το τρέχω με npp_run hello.exe...

 

post-38307-0-52735000-1340462732_thumb.jpg

 

Έγραψα παραπάνω "περίπου σαν να ήμασταν στην κανονική γραμμή εντολών των Windows" γιατί δεν είμαστε, είμαστε στην κονσόλα του NppExec. Μερικές εντολές λειτουργούν όπως στην cmd.exe (όπως π.χ. η σκέτη dir) αλλά είναι εντολές του NppExec. Για παράδειγμα, αν γράφαμε dir /w αντί για σκέτο dir θα μας έδινε σφάλμα, γιατί η dir του NppExec δεν αναγνωρίζει τον διακόπτη /w (και μάλιστα η dir της cmd.exe δεν είναι καν ξεχωριστό αρχείο dir.exe όπως είναι για παράδειγμα η find.exe, είναι ενσωματωμένη μέσα στο εκτελέσιμο της cmd.exe... το ίδιο νομίζω συμβαίνει και με την dir του NppExec).

 

Από την άλλη μεριά, αν χρησιμοποιήσουμε τις unix-linux-οειδείς εντολές που μας εγκατέστησε ο installer του MinGW στον υποφάκελο της MSYS, κι επειδή τον έχουμε συμπεριλάβει στο PATH των Windows (όπως εξηγήσαμε στο 1ο μέρος), δεν θα έχουμε αυτό το πρόβλημα.

 

Δείτε για παράδειγμα την εικόνα που ακολουθεί η οποία κάνει ότι και προηγούμενη, με 2 διαφορές:

 

α) χρησιμοποιώ την unix-linux-οειδή εντολή ls (και ls -l) αντί της dir

 

β) κάνω compile ένα άλλο πηγαίο αρχείο, το win32hello.c το οποίο είναι ένα hello world γραμμένο σε Win32 API (δείχνει και πως μπορείτε να κάνετε compile με τον mingw-gcc απλές εφαρμογές Win32 API... προσθέτοντας δηλαδή στο τέλος της εντολής του gcc το -Wl,--subsystem,windows ;) ...

 

post-38307-0-02269500-1340464415_thumb.jpg

 

Το τελευταίο που θα ήθελα να σημειώσω σχετικά με την απευθείας χρήση της κονσόλας του NppExec είναι η εντολή npp_run που χρησιμοποίησα για να τρέξω τα εκτελέσιμα. Το πρόβλημα είναι πως η κονσόλα του NppExec δεν κάνει άμεσα redirect μέσα το output stream του C runtime (λεπτομέρειες του γιατί καθώς και πολλές ακόμα πληροφορίες μπορείτε να διαβάσετε στην τεκμηρίωση του NppExec, επιλέγοντας: Plugins -> NppExec -> Help/Manual και κατόπιν την ενότητα 4.5: Advanced Usage | Console output redirection ).

 

Για να μην εξαρτάται λοιπόν η εκτέλεση του εκάστοτε εκτελέσιμου αρχείου από την κονσόλα του NppExec, αντί να το τρέχουμε απευθείας μέσα στην κονσόλα του NppExec, το τρέχουμε ως εξωτερικό process με την εντολή npp_run. Αν πρόκειται για πρόγραμμα κονσόλας, θα ανοίξει ξεχωριστό παράθυρο κονσόλας όπως δείχνει η 1η από τις παραπάνω εικόνες. Αν πρόκειται για GUI εφαρμογή (όπως το win32hello.c) δεν χρειάζεται καθόλου η npp_run, μπορούμε απλά να γράψουμε στην κονσόλα του NppExec το όνομα του εκετελέσιμου (win32hello.exe ή σκέτο win32hello) και θα τρέξει έτσι κι αλλιώς σε δικό του παράθυρο. Και να το τρέξουμε με npp_run το ίδιο αποτέλεσμα θα πάρουμε, οπότε εγώ χρησιμοποιώ πάντα την npp_run ώστε να μην με ενδιαφέρει αν το εκτελέσιμο είναι κονσόλας ή gui.

 

Τέλος, αν θέλουμε να χρησιμοποιήσουμε αυτούσιες εντολές της cmd.exe μέσα στην κονσόλα του NppExec, μπορούμε να το κάνουμε βάζοντας το πρόθεμα: cmd /c. Για παράδειγμα, αν θέλουμε να καλέσουμε dir /w τότε γράφουμε μέσα στην κονσόλα του NppExec: cmd /c dir /w

 

Δημιουργία απλού σκριπτ Build & Run

 

Τα προηγούμενα ήταν ουσιαστικά ένας περιεκτικός πρόλογος, ως στοιχειώδες υπόβαθρο για να μπορούμε να φτιάχνουμε όποιο NppExec σκριπτ θέλουμε, όποτε το θέλουμε και όπως το θέλουμε :) Μπορούμε να το κάνουμε όσο απλό ή όσο σύνθετο επιθυμούμε, ανάλογα με το πόσο χρόνο έχουμε αφιερώσει στην τεκμηρίωση του NppExec για τα ... ενδότερά του.

 

Τα σκριπτ αυτά δεν είναι τίποτε άλλο από μαζεμένες εντολές της κονσόλας του NppExec, ονοματισμένα σύμφωνα με τα γούστα και τις ανάγκες μας, και αποθηκευμένα ώστε να έχουμε πρόσβαση σε αυτά ανά πάσα στιγμή.

 

Η όλη τους διαχείριση γίνεται από το μενού: Plugins->NppExec->Execute... ή πολύ πιο γρήγορα πατώντας F6. Σε εκείνο το μικρό παραθυράκι που ανοίγει μπορούμε να δημιουργούμε, να διορθώνουμε, να μετονομάζουμε, να αποθηκεύουμε, να διαγράφουμε και να καλούμε όσα σκριπτ θέλουμε....

 

Η εικόνα που ακολουθεί δείχνει αυτό το... μικρό παραθυράκι, εστιασμένο στο λεγόμενο temporary script που αρχικά είναι κενό (η ανοιχτή λίστα, στο κάτω μέρος είναι τα ονόματα ήδη φτιαγμένων σκριπτ στο σύστημά μου)....

 

post-38307-0-52773400-1340470519_thumb.jpg

 

Όποιο νέο σκριπ θέλουμε να δημιουργήσουμε, το γράφουμε ως temporary script, ενδεχομένως το δοκιμάζουμε ότι λειτουργεί σωστά και κατόπιν το σώζουμε δίνοντάς του κάποιο όνομα, πατώντας στο κουμπί Save.

 

Το πιο απλό σκριπτ που θα μπορούσαμε να φτιάξουμε θα ήταν ας πούμε μια μόνο γραμμή η οποία θα έκανε compile τον κώδικα του ενεργού παραθύρου.

 

Το πλήρες όνομα του αρχείου στο ενεργό παράθυρο αντιστοιχεί στην μεταβλητή "$(FULL_CURRENT_PATH)" ενώ αν θέλουμε να παραλείψουμε την πλήρη διαδρομή του, τότε χρησιμοποιούμε την μεταβλητή "$(FILE_NAME)". Σημειώστε πως τα διπλά εισαγωγικά χρειάζονται ΜΟΝΟ αν το όνομα ή/και η διαδρομή του αρχείου περιέχει κενά διαστήματα (αν θέλετε να μην το έχετε συνέχεια στο μυαλό σας, βάζετε πάντα διπλα εισαγωγικά, δουλεύουν πάντα).

 

Το έχω αναφέρει και παραπάνω, αλλά δίνω ξανά κι εδώ το link με τις διαθέσιμες μεταβλητές του Notepad++: http://npp-community...manual/commands

 

Τώρα, εφόσον έχουμε ήδη ενεργοποιημένη την εντολή Follow $(CURRENT_DIRECTORY) στο μενού του NppExec (δείτε λίγο παραπάνω) μας αρκεί η "$(FILE_NAME)". Χρειαζόμαστε όμως και σκέτο το όνομα του ενεργού αρχείου, χωρίς την κατάληξη, για να του... κοτσάρουμε εμείς την κατάληξη .exe για την ονομασία του εκτελέσιμου αρχείου. Αυτή η μεταβλητή είναι η "$(NAME_PART)".

 

Οπότε το... μονο-γραμμικό μας σκριπτ μπορεί να περιέχει την ακόλουθη γραμμή...

 

>gcc "$(FILE_NAME)" -o "$(NAME_PART)".exe

Και πράγματι αν το δοκιμάσουμε θα διαπιστώσουμε ότι δουλεύει μια χαρά. Μπορούμε όμως να το κάνουμε και λιγάκι πιο περιγραφικό, βάζοντας το να μας κάνει και ένα dir στο τέλος...

 

>gcc "$(FILE_NAME)" -o "$(NAME_PART)".exe
dir

Μπορούμε επίσης να του πούμε πριν κάνει οτιδήποτε, να σώζει αυτόματα το ενεργό έγγραφο (ώστε να φύγει κι αυτή η... έγνοια από το κεφάλι μας :lol:). Υπάρχει ειδική εντολή του NppExec για αυτή τη δουλειά, η npp_save, οπότε έχουμε...

 

>
npp_save
gcc "$(FILE_NAME)" -o "$(NAME_PART)".exe
dir

Ε, αφού φτάσαμε μέχρι εδώ, να μην του πούμε να τρέχει και το εκετελέσιμο αυτόματα; ...

 

>
npp_save
gcc "$(FILE_NAME)" -o "$(NAME_PART)".exe
dir
npp_run "$(NAME_PART)".exe

 

Καλού-κακού (γιατί ως γνωστόν ο διάολος έχει πολλά ποδάρια :P) ας το εξαναγκάσουμε αμέσως μετά το npp_save να μπαίνει στον τρέχοντα φάκελο του ενεργού αρχείου (π.χ. σε περίπτωση που έχουμε ξεχάσει να ενεργοποιήσουμε το Follow $(CURRENT_DIRECTORY) στο μενού του NppExec)...

 

>
npp_save
cd  $(CURRENT_DIRECTORY)
gcc "$(FILE_NAME)" -o "$(NAME_PART)".exe
dir
npp_run "$(NAME_PART)".exe

 

Aς πούμε και του gcc να τυπώνει όλα τα προβλήματα που ενδεχομένως εντοπίζει στον κώδικά μας κατά το compilation (flags -Wall και -Wextra) ...

 

>
npp_save
cd  $(CURRENT_DIRECTORY)
gcc -Wall -Wextra "$(FILE_NAME)" -o "$(NAME_PART)".exe
dir
npp_run "$(NAME_PART)".exe

 

Ας του πούμε επίσης να ενσωματώσει πληροφορίες αποσφαλμάτωσης στο παραγόμενο εκτελέσιμο ( -g3 ) ώστε να μπορούμε το περάσουμε στον debugger αν χρειαστεί...

 

>
npp_save
cd  $(CURRENT_DIRECTORY)
gcc -g3 -Wall -Wextra "$(FILE_NAME)" -o "$(NAME_PART)".exe
dir
npp_run "$(NAME_PART)".exe

 

Τζι τζι...

 

post-38307-0-23051200-1340473039_thumb.jpg

 

Ώρα λοιπόν να το ονομάσουμε και να το αποθηκεύσουμε, ας πούμε ως: GCC CONSOLE DEBUG για να το χρησιμοποιούμε στην ανάπτυξη προγραμμάτων κονσόλας, με πληροφορίες αποσφαλμάτωσης...

 

post-38307-0-00225300-1340474106_thumb.jpg

 

Στο εξής θα ανοίγουμε/γράφουμε όποιο .c αρχείο θέλουμε, θα πατάμε F6 θα διαλέγουμε GCC CONSOLE DEBUG, θα πατάμε ENTER και τα υπόλοιπα θα γίνονται αυτόματα. Μάλιστα, από την 1η φορά και μετά δεν θα χρειάζεται καν να διαλέγουμε το σκριπτ, γιατί το NppExec κρατάει ως ενεργό σκριπτ το τελευταίο που χρησιμοποιήσαμε, οπότε θα μας αρκεί απλώς F6 και μετά ENTER...

 

post-38307-0-09267400-1340474117_thumb.jpg

 

Με τον ίδιο τρόπο μπορούμε να φτιάξουμε 2ο σκριπτ, ας πούμε GCC CONSOLE RELEASE χωρίς τα -g3 -Wall -Wextra flags του gcc, για να κάνουμε το τελικό compilation του κώδικα, απαλλαγμένο από τις έξτρα πληροφορίες αποσφαλμάτωσης, που επιβαρύνουν πολύ το εκτελέσιμο (τόσο σε μέγεθος όσο και σε ταχύτητα). Ή μπορούμε να μην έχουμε καθόλου RELEASE script, κι απλώς να αφαιρέσουμε προσωρινά τα flags αυτά από το DEBUG release, χωρίς να αποθηκεύσουμε το script. Γενικώς μπορούμε να κάνουμε ότι θέλουμε.

 

 

Βελτίωση του Build & Run σκριπτ

 

Το παραπάνω σκριπτ έχει ένα βασικό πρόβλημα. Αν ο gcc βρει πρόβλημα στον κώδικά μας και διακοπεί δεν θα παράξει εκτελέσιμο αρχείο. Άρα η τελευταία εντολή του σκριπτ θα εκτελέσει το προηγούμενο επιτυχημένο εκτελέσιμο αρχείο... NO GOOD :lol:

 

H πιο γρήγορη λύση είναι να βάλουμε το σκριπτ να σβήνει το εκτελέσιμο αρχείο πριν τη γραμμή του compilation (άσχετο, σβήνω και το dir μιας και το είχα βάλει απλά για λόγους demonstration), άρα έχουμε ...

 

>
npp_save
cd  $(CURRENT_DIRECTORY)
cmd /c del "$(NAME_PART)".exe
gcc -g3 -Wall -Wextra "$(FILE_NAME)" -o "$(NAME_PART)".exe
npp_run "$(NAME_PART)".exe

Μπορούμε εξίσου αποτελεματικά να χρησιμοποιήσουμε την unix-linux-οειδή εντολή rm της MSYS...

 

>
npp_save
cd  $(CURRENT_DIRECTORY)
rm -f "$(NAME_PART)".exe
gcc -g3 -Wall -Wextra "$(FILE_NAME)" -o "$(NAME_PART)".exe
npp_run "$(NAME_PART)".exe

Όπως και να έχει, την 1η φορά που δεν θα υπάρχει εκτελέσιμο αρχείο, το σκριπτ θα παραπονεθεί στην κονσόλα του NppExec ότι δεν υπάρχει το εκτελέσιμο για να το σβήσει, αλλά δεν μας πειράζει.. εκτελεί και τις υπόλοιπες εντολές του σκριπτ κανονικά.

 

Ένα παραπλήσιο θέμα μπορεί να προκύψει όταν θέλουμε να κάνουμε compile το *.c ακόμα κι αν δεν έχουμε κάνει αλλαγές στον κώδικα (π.χ. επειδή θέλουμε να το κάνουμε link με κάποια άλλη βιβλιοθήκη ή π.χ. όταν αλλάζουμε ένα preprocessor directive με το flag -D στη γραμμή εντολών του gcc που θέλουμε να επηρεάσει τον κώδικά μας).

 

Το compilation δεν παράγει απευθείας εκτελέσιμο αρχείο, παράγει το λεγόμενο object file (με κατάληξη .o) το οποίο στη συνέχεια το συνδέει ο linker με όποιες βιβλιοθήκες έχουμε ορίσει, και όλα μαζί παράγουν το τελικό εκτελέσιμο .exe. Όταν η ημερομηνία τροποποίησης του αρχείου .o ΔΕΝ προηγείται χρονικά του αρχείου .c, τότε το compilation δεν εκτελείται, γιατί θεωρείται "up to date". Το πρόβλημα είναι πιο συχνό σε πρίτζεκτ με πολλά πηγαία αρχεία.

 

Όπως και να ΄χει, για να μπορούμε να κάνουμε rebuild (έτσι ονομάζεται) το εκτελέσιμο, ακόμα κι όταν δεν έχουμε κάνει απευθείας αλλαγές στον κώδικα, πρέπει να εξασφαλίσουμε πως τα object αρχεία είτε δεν υπάρχουν καθόλου είτε έχουν νωρίτερη ημερομηνία δημιουργίας από τα .c αρχεία που τους αντιστοιχούν.

 

Σε περιβάλλοντα Posix υπάρχει ως στάνταρ το εργαλείο touch, το οποίο ανανεώνει την ημερομηνία τροποποίησης των ορισμάτων του. Αλλά στα Windows δεν είναι σίγουρο πως θα υπάρχει, οπότε αν δεν υπάρχει θα πρέπει να σβήσουμε τα object αρχεία πριν επιχειρήσουμε να κάνουμε rebuild..

 

Η MSYS παρέχει το εργαλείο touch, οπότε πριν κάνουμε compile, μπορούμε να πούμε στο script μας είτε να κάνει touch το πηγαίο μας αρχείο...

 

>
npp_save
cd  $(CURRENT_DIRECTORY)
rm -f "$(NAME_PART)".exe
touch $(FILE_NAME)
gcc -g3 -Wall -Wextra "$(FILE_NAME)" -o "$(NAME_PART)".exe
npp_run "$(NAME_PART)".exe

είτε να σβήσει το object αρχείο μαζί με το εκτελέσιμο...

 

>npp_save
cd  $(CURRENT_DIRECTORY)
rm -f "$(NAME_PART)".ο "$(NAME_PART)".exe
gcc -g3 -Wall -Wextra "$(FILE_NAME)" -o "$(NAME_PART)".exe
npp_run "$(NAME_PART)".exe

Φυσικά μπορούμε αν το επιθυμούμε να διατηρούμε ξεχωριστό σκριπτ ειδικά για rebuild, ονομάζοντάς το ας πούμε GCC CONSOLE REBUILD, αλλά με εξαίρεση τα πολύ μεγάλα προζεκτς που έχουν άπειρα αρχεία και το comiplation τους διαρκεί κάνα μισάωρο στην καλύτερη, μας είναι παραπάνω από αρκετό από το απλώς να σβήνουμε όλα τα .o αρχεία (ή να κάνουμε touch όλα τα .c) πριν το compilation.

 

Η εικόνα που ακολουθεί παρουσιάζει το γενικό σκριπτ που χρησιμοποιώ εγώ για τα προγράμματα κονσόλας...

 

post-38307-0-71810300-1340478564_thumb.jpg

 

Η μόνη διαφορά συγκριτικά με αυτά που καλύψαμε μέχρι τώρα, είναι το flag -std=c11 στην γραμμή εντολών του gcc, με την οποία ενεργοποιείται η υποστήριξη της αναθεώρησης C11 (αν και δεν είναι πλήρης η υποστήριξη).

 

Μπορείτε να το αλλάξετε σε -std=c99 ή σε -std=c89 για να καθορίσετε άλλο πρότυπο υποστήριξης των στάνταρ της γλώσσας. Μπορείτε επίσης να το παραλείψετε και τελείως, μόνο που δεν θυμάμαι τι υποστηρίζει σε αυτή την περίπτωση ο gcc... νομίζω την C11 αλλά δεν είμαι σίγουρος (βασικά ο gcc έχει άπειρα flags, κι όταν λέω άπειρα εννοώ άπειρα... οπότε έχετε εύκαιρη την τεκμηρίωσή του... http://linux.die.net...-pc-mingw32-gcc :P).

 

Κλείνοντας απλώς να σημειώσω πως αν σκοπεύετε να κάνετε compile c++ κώδικα, τότε όπου βλέπετε gcc αλλάξτε το με g++.

 

Στη συνέχεια θα προσπαθήσω να δείξω τις βασικές ρυθμίσεις του NppExec για μετάβαση στις γραμμές με λάθη του κώδικα κάνοντας διπλό κλικ στα μηνύματα λάθους της κονσόλας. Μάλλον από αύριο όμως. Δεν είναι κάτι το δύσκολο πάντως, το έχουμε ξαναθίξει κατά καιρούς, πρόχειρα βρήκα αυτό εδώ: http://www.insomnia....ost__p__4684237

 

Αλλά θα το ξαναγράψω για να υπάρχουν μαζεμένα όλα σε ένα νήμα. Επίσης θέλω κάποια στιγμή να γράψω και 5 πράγματα για σκριπ με χρήση του gdb debugger, αλλά και για σκριπτ που διαχειρίζονται projects πολλών πηγαίων αρχείων.

Επεξ/σία από migf1
  • Like 1
Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Το αμέσως προηγούμενο ποστ το γράφω τμηματικά (με συνεχόμενα edits). Όποτε προσθέτω κάτι νέο (όπως έκανα μόλις τώρα) θα γράφω νέο ενημερωτικό ποστ, όπως αυτό εδώ, ώστε και να ανεβαίνει το νήμα στο index και να ειδοποιούνται όσοι το παρακολουθούν.

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

  • Moderators

Μετα απο καποια χρονικη περιοδο, δεν θα εχεις τη δυνατοτητα να κανεις edit το εκαστοτε post (μιλαω εκ πειραςgrin.png), οποτε θα χρειαστει να ζητησεις τη βοηθεια καποιου mod.

Απλα ενημερωτικα το παραπανω. Οπως και να χει, μολις τελειωσεις, ή θεωρεις πως εφτασες καποιο milestone, προτεινω να ανανεωσεις το αρχικο post, καθως εαν παρει διαστασεις το thread, θα ψαχνουμε τα posts σου. Εσυ αποφασιζεις προφανως, απλη ιδεα ειναι το post μου.

Και παλι, ευχαριστω για τον κοπο σου, +1 pushed και παλιsmilie.png

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Δημοσ. (επεξεργασμένο)

Να 'στε καλά ρε παιδιά, πολύ χαίρομαι που τα βρίσκετε ενδιαφέροντα και χρήσιμα. Ήθελα εδώ και πάνω από 1 χρόνο να το κάνω, αλλά όλο το ανέβαλα. Μόλις ολοκλήρωσα και το 3ο μέρος.

 

@Gio: Ναι έχεις δίκιο, το είχα ξεχάσει τελείως. Αν την πατήσω τελικά και δεν βρω και εύκαιρο mod, ίσως τα μαζέψω όλα μαζί στο τέλος σε ξεχωριστό νήμα.

Επεξ/σία από migf1
Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Δημοσ. (επεξεργασμένο)

------------------------------------------------------------------------------------------------------------------------------

1ο Μέρος: Κατέβασμα & Εγκατάσταση

2ο Μέρος: Μερικές χρήσιμες ρυθμίσεις του ίδιου του Notepad++

3ο Μέρος: NppExec (plugin) - Build & Run script

4ο Μέρος: NppExec (plugin) - Μετάβαση σε γραμμή σφάλματος

 

Μάλλον δεν θα υπάρξει 5ο μέρος, δείτε όμως εδώ κάποιες σκόρπιες εξηγήσεις λίγο πιο προχωρημένων λειτουργιών.

------------------------------------------------------------------------------------------------------------------------------

 

 

4o Μέρος: NppExec (plugin)

 

Μετάβαση σε γραμμή σφάλματος

 

Μια σημαντική ευκολία στην ανάπτυξη προγραμμάτων είναι η δυνατότητα άμεσης μετάβασης σε γραμμές κώδικα που παράγουν σφάλμα μεταγλώττισης (ή προειδοποίηση ή σημείωση). Σε όλα σχεδόν τα IDE αυτό επιτυγχάνεται με διπλό-κλικ του ποντικιού στο μήνυμα σφάλματος, όπως εμφανίζεται στην κονσόλα.

 

Με το NppExec μπορούμε να το πετύχουμε από το μενού Plugins->NppExec->Console Output Filters.

 

Ας δούμε καταρχήν κάποια μηνύματα σφάλματος που παράγει ο gcc και πως εμφανίζονται στην κονσόλα του NppExec. Η εικόνα που ακολουθεί δείχνει συνειδητά λανθασμένο κώδικα, που έχει μεταγλωττιστεί (compiled) κι έχει παράξει συγκεκριμένα μηνύματα για το κάθε πρόβλημα στην κονσόλα του NppExec. Σημειώστε όμως πως σε εσάς τα μηνύματα αυτά δεν θα είναι μορφοποιημένα (έντονη, πλάγια, υπογραμμισμένη γραφή) επειδή ακόμα δεν έχουμε ρυθμίσει αυτή τη συμπεριφορά στο Console Output Filters.

 

post-38307-0-36021600-1340529754_thumb.jpg

Σημείωση: Όπως συμβαίνει με όλους τους compilers έτσι και με τον gcc, τα παραγόμενα μηνύματα σφάλματος δεν είναι εγγυημένο πως αντιστοιχούν πάντα 100% στις γραμμές κώδικα που αναφέρουν αυτά τα μηνύματα.

 

Παρατηρώντας προσεκτικά την εικόνα, διαπιστώνουμε πως είτε πρόκειται για error, είτε για warning, είτε για note, ακολουθείται πάντα ένα συγκεκριμένο μοτίβο μέσα στην κάθε γραμμή.

 

Πιο συγκεκριμένα, παρατηρούμε ότι σε όλες τις περιπτώσεις αναφέρονται συνεχόμενα μέσα στη γραμμή (είτε στην αρχή της είτε ενδιάμεσα) και με τη συγκεκριμένη σειρά οι εξής πληροφορίες:

 

όνομα_αρχείου:αριθμός_γραμμής:ένα_άλλο_νούμερο: τύπος_προβλήματος: περιγραφή_προβλήματος

 

Έχω χρωματίσει με πορτοκαλί και μπλε όποιες από αυτές τις πληροφορίες θα χρησιμοποιήσουμε στη ρύθμιση του Console Output Filters [Highlight].

 

Χωρίς χρονοτριβή παρουσιάζω στην παρακάτω εικόνα τις ρυθμίσεις που χρησιμοποιώ εγώ στην εν λόγω καρτέλα ρυθμίσεων (σημειώστε όμως πως περιέχει ρυθμίσεις και για άλλους compilers/γλώσσες)...

 

post-38307-0-08519700-1340531872_thumb.jpg

 

Το NppExec μας παρέχει μερικές μεταβλητές για να διαχειριζόμαστε πληροφορίες που παρουσιάζονται στην κονσολα του, όπως οι παραπάνω. Συγκεκριμένα για το όνομα αρχείου μας παρέχει τις %FILE% και %ABSFILE% (η 1η αναφέρεται στο σκέτο όνομα του αρχείου, ενώ η 2η στην πλήρη διαδρομή του) Για αριθμό γραμμής μας παρέχει την %LINE%. Παρέχει επίσης τα wildcards * και ? για ταίριασμα ενός ή περισσοτέρων χαρακτήρων, ανεξαρτήτως των τιμών τους. Η λίστα με τις μεταβλητές και τα wildcards, συνοδευόμενα από παραδείγματα, αναγράφεται στην κάτω μεριά της καρτέλας Console Output Filters [Highlight]

 

Επομένως,η παράσταση %FILE%:%LINE%:*: error:* που φαίνεται στο 1ο "κουτάκι" της καρτέλας (δείτε την εικόνα) ουσιαστικά λέει στο NppExec ότι όταν βλέπει μέσα στην κονσόλα κείμενο που ταιριάζει με αυτό το μοτίβο, τότε οι 2 πρώτες λέξεις που διαχωρίζονται με τον χαρακτήρα : (άνω-κάτω τελεία) αναφέρονται σε όνομα αρχείου και σε αριθμό της γραμμής, αντίστοιχα.

 

Αν στο δικό σας σύστημα τα μηνύματα σφάλματος που παράγει ο gcc στην κονσόλα εμφανίζουν το όνομα του αρχείου με την πλήρη διαδρομή του, τότε αντικαταστήστε την μεταβλητή %FILE% με την %ABSFILE%

 

Επιπρόσθετα, μπορούμε να ορίσουμε χρώμα και είδος γραφής για αυτές τις γραμμές, ρυθμίζοντας κατάλληλα τα 'κουτάκια' που βρίσκονται στην δεξιά μεριά της καρτέλας (προφανώς σε ξεχωριστή σειρά για κάθε ρυθμισμένη γραμμή). Επίσης μην ξεχάσετε να ενεργοποιήσετε με τσεκάρισμα τις σειρές που θέλετε μέσα στην καρτέλα (ξαναδείτε την εικόνα).

 

Πέρα από τα παραπάνω, με διπλό κλικ σε μια highlighted γραμμή της κονσόλας "λέμε" στο NppExec να μεταβεί στην συγκεκριμένη γραμμή κώδικα, στο συγκεκριμένο αρχείο.

 

Τώρα που αναλύσαμε πως δουλεύει και γιατί δουλεύει αυτή η λειτουργία, μπορείτε να συνδυάσετε τις 2 εικόνες αυτής της δημοσίευσης και να κατανοήσετε ότι οι highlighted γραμμές της κονσόλας στην 1η εικόνα, οφείλονται στις σειρές 1, 2 και 6 μέσα στην καρτέλα που απεικονίζει η 2η εικόνα :)

 

Τέλος, μην ξεχάσετε να έχετε ενεργοποιημένη (τσεκαρισμένη) την εντολή Console Output Filters στο μενού Plugins->NppExec. Για να το πετύχετε αυτό, θα πρέπει να επιλέξετε τη συγκεκριμένη εντολή και κατόπιν να πάτε στην καρτέλα Replace και να ενεργοποιήσετε την επιλογή Enable Replacing Filters ... δείτε την εικόνα που ακολουθεί.

 

post-38307-0-45292400-1340533818_thumb.jpg

Επεξ/σία από migf1
Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Αφού εγκατέστησα το language help, κάθε φορά που ανοίγω το notepad++, μου εμφανίζει μήνυμα για ασυμβατότητα του εν λόγω ANSI plug-in Με την Unicode έκδοση του notepad++ μου..

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Δημιουργήστε ένα λογαριασμό ή συνδεθείτε για να σχολιάσετε

Πρέπει να είστε μέλος για να αφήσετε σχόλιο

Δημιουργία λογαριασμού

Εγγραφείτε με νέο λογαριασμό στην κοινότητα μας. Είναι πανεύκολο!

Δημιουργία νέου λογαριασμού

Σύνδεση

Έχετε ήδη λογαριασμό; Συνδεθείτε εδώ.

Συνδεθείτε τώρα

  • Δημιουργία νέου...