Maison > développement back-end > C++ > Développement C avec GNU Emacs

Développement C avec GNU Emacs

Patricia Arquette
Libérer: 2024-12-28 08:28:12
original
695 Les gens l'ont consulté

C Development with GNU Emacs

Emacs est conçu pour la programmation, il prend en charge nativement des langages comme C, Python et Lisp, offrant des fonctionnalités avancées telles que la coloration syntaxique, les styles de codage personnalisables et la détection d'erreurs en temps réel. Son interpréteur Lisp intégré rend Emacs hautement adaptable, permettant aux utilisateurs de façonner l'éditeur pour l'adapter à des flux de travail spécifiques ou de créer des fonctionnalités entièrement nouvelles.

Son riche écosystème d'extensions garantit sa pertinence dans divers domaines, de la rédaction académique à la programmation système, tandis que son interface personnalisable permet aux utilisateurs d'optimiser leur environnement pour une productivité maximale.

Il continue d'être un choix fiable pour ceux qui apprécient le contrôle et la polyvalence, prouvant qu'un outil conçu il y a des décennies peut toujours répondre aux exigences du paysage technologique en évolution rapide d'aujourd'hui.

Pourquoi choisir Emacs ?

Emacs est plus qu'un simple éditeur de texte : c'est une plateforme puissante et extensible pour la programmation, l'écriture et la personnalisation. Contrairement aux éditeurs modernes comme VS Code ou IntelliJ IDEA, Emacs se nourrit de flexibilité et de programmabilité. Il permet aux utilisateurs d'adapter en profondeur leur flux de travail, en le transformant en un environnement adapté à leurs besoins précis. Que vous codiez en C, gériez de grands projets ou même écriviez des romans, Emacs peut s'adapter à vos besoins.

Pour les nouveaux utilisateurs, cela peut sembler écrasant, mais une fois que vous avez compris ses principes, Emacs devient un outil qui évolue avec vous. Ce guide vise à vous aider à mettre en place un environnement Emacs rationalisé, des configurations de base aux intégrations avancées, garantissant que vous êtes productif à chaque étape du processus.

C Development with GNU Emacs

Table des matières

  • Création de init.el
  • S'assurer que le répertoire init.el est correct
  • Configuration de base pour Emacs
  • Ajout des modèles de style de codage du noyau Linux
  • Installation et configuration du gestionnaire de packages MELPA
  • Installation du serveur Clang LSP
  • Amélioration du développement C avec Company, Projectile, Treemacs et Magit
  • Ajout de GNU Global, GTags et Helm-Gtags
  • Utilisation de YASnippet pour les modèles de code
  • Configuration de la sémantique pour la navigation contextuelle
  • Exemple de workflow pratique pour le développement
  • Aide-mémoire
  • Références pour les plugins
  • Ressources d'apprentissage supplémentaires

Mesures:

Création d'init.el

  1. Ouvrez Emacs sur votre système.
  2. Utilisez la commande C-x C-f (appuyez sur Ctrl et x, puis Ctrl et f), qui ouvre un fichier pour l'éditer.
  3. Tapez le chemin du fichier ~/.emacs.d/init.el pour créer ou modifier votre fichier de configuration Emacs et appuyez sur Entrée.
  4. Ajoutez les configurations souhaitées au tampon. Une fois cela fait, enregistrez les modifications avec C-x C-s (appuyez sur Ctrl et x, puis Ctrl et s).

S'assurer que le répertoire init.el est correct

Pour vous assurer que la configuration Emacs fait toujours référence au bon répertoire pour le fichier init.el, ajoutez l'extrait suivant en haut de votre fichier init.el :

(setq user-emacs-directory "~/.emacs.d/")
Copier après la connexion
Copier après la connexion
Copier après la connexion
Copier après la connexion
Copier après la connexion

Cela définit explicitement la variable user-emacs-directory sur ~/.emacs.d/, garantissant qu'Emacs utilise le chemin spécifié pour son fichier d'initialisation et les configurations associées. Cette approche évite les problèmes potentiels où Emacs pourrait référencer un répertoire différent en raison de paramètres spécifiques à l'environnement.

Configuration de base pour Emacs

Voici une configuration Emacs simple et pratique, expliquée clairement pour vous aider à comprendre son objectif. Cette configuration améliore la convivialité, simplifie l'interface et garantit une expérience de codage efficace.

Cette ligne consolide tous les fichiers de sauvegarde dans un seul répertoire (~/.saves). Il garde vos projets propres et évite d'encombrer votre espace de travail.

(setq backup-directory-alist `(("." . "~/.saves")))
Copier après la connexion
Copier après la connexion
Copier après la connexion
Copier après la connexion

Pour réduire les distractions, cela supprime les éléments d'interface inutiles tels que la barre d'outils, la barre de défilement, les info-bulles et la barre de menus. Une interface plus propre vous aide à vous concentrer sur le codage sans bruit visuel.

(tool-bar-mode -1)
(scroll-bar-mode -1)
(tooltip-mode -1)
(menu-bar-mode -1)
Copier après la connexion
Copier après la connexion
Copier après la connexion
Copier après la connexion

Cette configuration désactive l'écran de démarrage d'Emacs, supprime le message par défaut dans le tampon *scratch* et fait taire la cloche du système. Cela crée un environnement sans distraction dès le début.

(setq inhibit-startup-screen t
      initial-scratch-message nil
      ring-bell-function 'ignore)
Copier après la connexion
Copier après la connexion
Copier après la connexion
Copier après la connexion

Le curseur est défini sur un style de boîte pour une meilleure visibilité et l'effet clignotant est désactivé. L'appariement automatique des parenthèses et de l'indentation est activé, ce qui rend le codage plus fluide et plus rapide.

(setq user-emacs-directory "~/.emacs.d/")
Copier après la connexion
Copier après la connexion
Copier après la connexion
Copier après la connexion
Copier après la connexion

Les numéros de ligne sont affichés globalement pour une navigation plus facile, et le numéro de colonne est affiché dans la barre d'état pour suivre la position du curseur dans chaque ligne.

(setq backup-directory-alist `(("." . "~/.saves")))
Copier après la connexion
Copier après la connexion
Copier après la connexion
Copier après la connexion

Cette configuration ajoute un affichage de l'heure propre et concis dans la ligne de mode, affichant le jour, la date et l'heure au format 24 heures. La charge moyenne est exclue pour garder l'interface minimale.

(tool-bar-mode -1)
(scroll-bar-mode -1)
(tooltip-mode -1)
(menu-bar-mode -1)
Copier après la connexion
Copier après la connexion
Copier après la connexion
Copier après la connexion

Les sélections remplacent automatiquement le texte en surbrillance lors de la saisie, et l'intégration du presse-papiers garantit un copier-coller transparent entre Emacs et d'autres applications.

(setq inhibit-startup-screen t
      initial-scratch-message nil
      ring-bell-function 'ignore)
Copier après la connexion
Copier après la connexion
Copier après la connexion
Copier après la connexion

Tous les encodages sont définis sur UTF-8, garantissant la compatibilité avec les formats de texte modernes et évitant les problèmes d'encodage, en particulier lorsque vous travaillez avec du texte international ou du code source.

(setq cursor-type 'box
      blink-cursor-mode nil
      electric-pair-mode 1
      electric-indent-mode 1)
Copier après la connexion
Copier après la connexion
Copier après la connexion

La mise en évidence de la syntaxe est activée globalement avec le mode global-font-lock-mode. Les longues lignes sont enveloppées naturellement avec le mode ligne visuelle. Les parenthèses sont mises en surbrillance lorsque le curseur est à proximité d'elles et les fichiers récemment ouverts sont suivis pour un accès rapide.

(global-display-line-numbers-mode t)
(column-number-mode t)
Copier après la connexion
Copier après la connexion

Le thème tangotango offre une palette de couleurs visuellement attrayante. La police est définie sur "Consolas" avec un poids gras et une taille de 15,2 pt pour une meilleure lisibilité lors de longues sessions de codage.

(setq display-time-format "%a %b %d %R"
      display-time-interval 60
      display-time-default-load-average nil)
(display-time-mode 1)
Copier après la connexion
Copier après la connexion

Remarque : N'oubliez pas que nous utilisons Emacs Lisp (Elisp), un langage de programmation fonctionnel, pour configurer Emacs. Il s’agit d’un énorme avantage, car cela permet une personnalisation très flexible et programmable. La capacité d'écrire de la logique dans un puissant dialecte Lisp fait d'Emacs non seulement un éditeur, mais une plate-forme pour des flux de travail personnalisés.


Ajout des modèles de style de codage du noyau Linux

La configuration fournie ci-dessous configure Emacs pour qu'il adhère strictement au style de codage du noyau Linux, en mettant l'accent sur les tabulations à 8 caractères, le placement des accolades K&R et une lisibilité claire. Il inclut une fonction d'alignement personnalisé pour les listes d'arguments, une détection automatique des fichiers liés au noyau (par exemple, les fichiers avec des en-têtes Kbuild, Kconfig ou du noyau) et applique automatiquement le style approprié. Cela garantit la cohérence et simplifie l'édition du code du noyau dans Emacs.

La fonction linux-kernel-coding-style/setup configure Emacs pour les paramètres spécifiques au noyau comme indent-tabs-mode, tab-width et c-basic-offset sur 8, tandis que la fonction linux-kernel-coding-style/ La fonction c-lineup-arglist-tabs-only aligne les listes d'arguments à l'aide de tabulations, en maintenant la conformité avec les directives du noyau. Ces hooks appliquent automatiquement le style au mode C lors de l'édition des fichiers du noyau Linux, améliorant ainsi la productivité et le respect des normes de codage.

(setq select-enable-primary nil
      select-enable-clipboard t)
(delete-selection-mode 1)
Copier après la connexion
Copier après la connexion

Ajoutez cette configuration à votre fichier d'initialisation Emacs (init.el). Emacs détectera désormais automatiquement les fichiers du noyau Linux et appliquera le style de codage approprié, vous faisant gagner du temps et garantissant le respect des normes de codage du noyau.


Installation et configuration du gestionnaire de packages MELPA

MELPA facilite l'installation de packages supplémentaires dans Emacs.

Mesures:

  • Ajouter MELPA à Emacs :
(setq user-emacs-directory "~/.emacs.d/")
Copier après la connexion
Copier après la connexion
Copier après la connexion
Copier après la connexion
Copier après la connexion
  • Installer automatiquement les packages s'ils ne sont pas présents :
(setq backup-directory-alist `(("." . "~/.saves")))
Copier après la connexion
Copier après la connexion
Copier après la connexion
Copier après la connexion

Après avoir modifié votre fichier init.el ou ajouté de nouvelles configurations, vous pouvez actualiser Emacs sans fermer ni rouvrir :

  1. Recharger le fichier init.el :

    • Appuyez sur M-x (Alt x), tapez eval-buffer et appuyez sur Entrée lorsque vous êtes dans votre tampon init.el.
    • Vous pouvez également utiliser le raccourci C-x C-e à la fin du bloc de code pour l'évaluer.
  2. Évaluer manuellement le code :

    • Sélectionnez l'extrait de code que vous souhaitez recharger, appuyez sur M-x, tapez eval-region et appuyez sur Entrée.

Cela vous permet d'appliquer immédiatement les modifications à votre configuration Emacs sans redémarrage


Installation du serveur Clang LSP

Le Language Server Protocol (LSP) fournit des fonctionnalités avancées telles que la saisie semi-automatique et la vérification des erreurs en temps réel.

Exigences nécessaires

Fenêtres

  • LLVM/Clang :
    • Téléchargez le programme d'installation de LLVM sur le site officiel : LLVM Releases
    • Pendant l'installation, assurez-vous d'ajouter LLVM au PATH du système.

Linux

  • Debian/Ubuntu :
(tool-bar-mode -1)
(scroll-bar-mode -1)
(tooltip-mode -1)
(menu-bar-mode -1)
Copier après la connexion
Copier après la connexion
Copier après la connexion
Copier après la connexion
  • Fédora :
(setq inhibit-startup-screen t
      initial-scratch-message nil
      ring-bell-function 'ignore)
Copier après la connexion
Copier après la connexion
Copier après la connexion
Copier après la connexion

GratuitBSD

  • Installer clangd :
(setq cursor-type 'box
      blink-cursor-mode nil
      electric-pair-mode 1
      electric-indent-mode 1)
Copier après la connexion
Copier après la connexion
Copier après la connexion

Mesures:

  • Installer le mode lsp et le mode entreprise :
(global-display-line-numbers-mode t)
(column-number-mode t)
Copier après la connexion
Copier après la connexion
  • Configurez le chemin vers clangd si nécessaire :
(setq display-time-format "%a %b %d %R"
      display-time-interval 60
      display-time-default-load-average nil)
(display-time-mode 1)
Copier après la connexion
Copier après la connexion
  • Facultatif : configurez la coloration syntaxique avancée avec lsp-ui :
(setq select-enable-primary nil
      select-enable-clipboard t)
(delete-selection-mode 1)
Copier après la connexion
Copier après la connexion

Qu’est-ce que LSP et pourquoi l’utiliser ?

Le Language Server Protocol (LSP) comble le fossé entre les éditeurs et les langages de programmation, en fournissant des fonctionnalités telles que la saisie semi-automatique, la vérification des erreurs et la navigation dans le code. Ceci est particulièrement utile pour le développement C/C, où la gestion des en-têtes, le débogage et la navigation dans de grandes bases de code peuvent s'avérer difficiles.

En configurant LSP dans Emacs, vous obtenez la possibilité de :

  • Affichez les erreurs de syntaxe en temps réel au fur et à mesure que vous tapez.
  • Accédez instantanément aux définitions de fonctions ou de variables.
  • Accédez à des suggestions intelligentes pour compléter le code.

Cela rend Emacs compétitif par rapport aux IDE modernes tout en conservant sa nature légère et personnalisable.

Compagnie, Projectile, Treemacs et Magit

L'amélioration de votre configuration Emacs pour le développement C implique l'intégration de Company, Projectile, Treemacs et Magit. Company fournit la saisie semi-automatique pour la programmation C, permettant des suggestions en temps réel de fonctions, de variables et de mots-clés, rendant le codage plus rapide et plus efficace. En le configurant pour utiliser company-clang, vous garantissez un support robuste et adapté au développement C.

Projectile rationalise la gestion de projet en permettant une navigation rapide, la découverte de fichiers et la compilation de projets. Il s'associe parfaitement à Treemacs, qui fournit une représentation visuelle arborescente de la structure de votre projet, vous aidant à localiser et à gérer les fichiers de manière intuitive. Enfin, Magit est une interface avancée pour Git, fournissant des outils puissants pour le contrôle de version directement dans Emacs.

Avec des raccourcis comme C-x g, vous pouvez effectuer des opérations telles que des validations, des branchements et des fusions de manière interactive, améliorant ainsi votre flux de travail et votre productivité. Voici la configuration complète pour mettre en place ces outils dans votre environnement Emacs :

(setq user-emacs-directory "~/.emacs.d/")
Copier après la connexion
Copier après la connexion
Copier après la connexion
Copier après la connexion
Copier après la connexion

Exemple de flux de travail pratique

Voyons comment vous pouvez combiner ces outils dans un scénario réel :

  1. Ouvrir un projet :
    • Utilisez C-c p f pour rechercher rapidement un fichier dans le répertoire de votre projet à l'aide de Projectile.
  2. Naviguer visuellement dans les fichiers :
    • Ouvrez Treemacs avec M-0 et utilisez les touches fléchées pour parcourir la structure de votre projet. Double-cliquez sur un fichier pour l'ouvrir.
  3. Git Workflow avec Magit :
    • Changements de scène : ouvrez Magit avec C-x g, appuyez sur s pour mettre en scène les fichiers.
    • Commit : appuyez sur c c pour valider les modifications avec un message.
    • Push : utilisez P pour transmettre les modifications à votre référentiel distant.
  4. Achèvement du code :
    • Lors de la modification d'un fichier .c, saisissez partiellement le nom d'une fonction et utilisez les suggestions du mode entreprise en appuyant sur TAB.

Améliorations à ajouter à l'article

  1. Configuration GNU Global et GTags :
    • Ajoutez des instructions pour configurer GNU Global et GTags pour la navigation dans le code :
(setq user-emacs-directory "~/.emacs.d/")
Copier après la connexion
Copier après la connexion
Copier après la connexion
Copier après la connexion
Copier après la connexion
  1. Intégration Helm-Gtags :
    • Inclure la configuration pour helm-gtags pour améliorer la navigation dans le projet :
(setq backup-directory-alist `(("." . "~/.saves")))
Copier après la connexion
Copier après la connexion
Copier après la connexion
Copier après la connexion
  1. Modèles Yasnippet :
    • Inclure YASnippet pour les modèles de code :
(tool-bar-mode -1)
(scroll-bar-mode -1)
(tooltip-mode -1)
(menu-bar-mode -1)
Copier après la connexion
Copier après la connexion
Copier après la connexion
Copier après la connexion
  1. Configuration Sémantique :
    • Ajoutez de la sémantique pour la complétion et l'analyse contextuelle du code :
(setq inhibit-startup-screen t
      initial-scratch-message nil
      ring-bell-function 'ignore)
Copier après la connexion
Copier après la connexion
Copier après la connexion
Copier après la connexion
  1. Fonctionnalités supplémentaires de navigation dans les codes :
    • Mentionnez la symref sémantique pour la collecte de référence :
(setq cursor-type 'box
      blink-cursor-mode nil
      electric-pair-mode 1
      electric-indent-mode 1)
Copier après la connexion
Copier après la connexion
Copier après la connexion

Ces ajouts améliorent le contenu existant en fournissant la prise en charge d'outils avancés de navigation, de gestion de projet et d'automatisation dans Emacs, alignant l'article sur les meilleures pratiques pour le développement C/C moderne.


Aide-mémoire

C Development with GNU Emacs

C Development with GNU Emacs


Références pour les plugins

  • lsp-mode : prise en charge du protocole Language Server pour l'auto-complétion et la vérification des erreurs. GitHub
  • mode entreprise : saisie semi-automatique contextuelle. GitHub
  • lsp-ui : améliorations de l'interface utilisateur pour le mode lsp. GitHub
  • projectile : Navigation et gestion de projet. GitHub
  • treemacs : Explorateur de fichiers basé sur une arborescence. GitHub
  • magit : Interface Git pour Emacs. GitHub
  • ggtags : intégration GNU Global pour la navigation dans le code. GitHub
  • helm-gtags : Navigation avec GNU Global et Helm. GitHub
  • yasnippet : Gestion des extraits de code réutilisables. GitHub
  • sémantique : analyse de code et navigation avancées. GNU CEDET

Ressources d'apprentissage supplémentaires

  • Emacs pour les débutants : Un guide convivial pour les débutants sur la configuration et l'utilisation d'Emacs. Lien
  • Introduction à Emacs Lisp : Apprenez à personnaliser Emacs à l'aide de Lisp. Lien
  • Linux Kernel Coding Style : Documentation officielle sur les normes de codage du noyau. Lien
  • Configuration d'Emacs pour le développement C : Un guide pratique pour configurer Emacs pour la programmation C/C. Lien

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:dev.to
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal