Question

J'aimerais pouvoir exécuter une commande shell sur le fichier en cours que je suis en train de modifier et afficher le résultat dans la fenêtre Sortie de commande du shell . J'ai pu définir le fonction qui est indiquée ci-dessous.

(defun cpp-check ()
  "Run cpp-check on current file the buffer is visiting."
  (shell-command
   (concat "/home/sburke/downloads/cppcheck-1.31/cppcheck "
       (buffer-file-name))))

Le seul problème est que la fenêtre de sortie n'est pas mise au premier plan. Ce que j'aimerais, c'est que la fenêtre soit scindée et que la fenêtre de sortie soit affichée ici. De plus, suis-je sur la bonne voie pour définir la fonction à insérer dans mon fichier .emacs ou existe-t-il un meilleur moyen?

Toute aide serait appréciée. Merci.

Était-ce utile?

La solution 3

C'est ce que j'ai proposé. Merci pour les réponses. J'ai défini une fonction qui va aller de l'avant et lancer cpp-check. Je voulais que cela soit lié à une clé en mode c, je l’ajoute donc comme un crochet. Je me suis heurté à la différence entre les fonctions normales et celles qui peuvent être liées à des keymaps. Je devais donc rendre la fonction interactive. Cet article a permis d'expliquer cela. Alors maintenant, quand on appuie sur le raccourci, les résultats apparaissent dans une autre fenêtre, mais le curseur reste dans la mémoire tampon d'origine, ce que je veux. Le seul problème est que la sortie est également affichée dans le mini-tampon, ce qui n’est pas tout à fait ce que je veux. Avez-vous des idées pour résoudre ce petit détail?

(defun cpp-check ()
  (interactive)
  "Run cpp-check on current file the buffer is visiting."
  (shell-command
   (concat "/home/sburke/downloads/cppcheck-1.31/cppcheck "
       (buffer-file-name)))
  (display-buffer "*Shell Command Output*"))

(add-hook 'c-mode-common-hook
           (lambda ()
         (define-key c-mode-base-map
               "\C-x\p" 'cpp-check)))

Autres conseils

Consultez la documentation de 'commande-shell , cela a bien fonctionné pour moi:

(defun cpp-check ()
  "Run cpp-check on current file the buffer is visiting."
  (shell-command
   (concat "/home/sburke/downloads/cppcheck-1.31/cppcheck "
       (buffer-file-name))
   "cpp-check"))

Il crée un nouveau tampon nommé "cpp-check". et met les résultats là-bas. La trame en cours est divisée en et le "cpp-check" le tampon est placé dans l'autre fenêtre.

Voir la fonction `pop-to-buffer '. Je pense.

Vous devriez pouvoir lui attribuer un nom de tampon à afficher - il suffit de le donner dans le tampon de sortie de commande Shell.

diviser la fenêtre est (split-window-verticalically) Il a un argument optionnel de la taille de la partie (haut si positif, bas si négatif) de la fenêtre.

Ensuite, il vous suffit de placer le tampon de résultats du shell au premier plan avec switch-to-buffer ou switch-to-buffer-other-window.

N'oubliez pas que lorsque vous crachez la fenêtre (cadre) dans emacs, vous vous retrouvez avec deux "fenêtres". à cause d’une dénomination déroutante dans la journée, il est trop tard pour y faire face maintenant ...

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top