[LINUX] GNU GLOBAL (gtags) + α dans Go, Ruby, Python

global.png

Aperçu

L'importation de l'analyseur Pygments dans GNU GLOBAL devrait rendre la lecture du code source incroyablement rapide

Une fonction très utile a été introduite, j'ai donc écrit la version Linux. (Ce qui précède est Mac) Enfin, les paramètres d'Emacs sont également publiés.

Installation de GNU GLOBAL

Veuillez vérifier ici la dernière version. Getting GLOBAL

homebrew or linuxbrew

brew install global

Installation source

VERSION=6.4
wget http://tamacom.com/global/global-${VERSION}.tar.gz
tar xvf global-${VERSION}.tar.gz
cd global-${VERSION}
./configure
make
make install

Paramètres GNU GLOBAL

cp /usr/local/share/gtags/gtags.conf /etc/

Vous n'avez pas besoin de modifier gtags.conf cette fois, mais si le chemin vers pygments-parser.la est différent, modifiez-le en conséquence. Si vous souhaitez spécifier les paramètres GNU GLOBAL pour chaque utilisateur, vous pouvez écraser les paramètres en plaçant gtags.conf dans $ HOME / .globalrc.

Installation de Python

Pour Linux, je pense que la plupart des distributions l'ont préinstallé. S'il n'est pas installé, installez Python à partir du gestionnaire de packages de chaque distribution.

J'ai confirmé l'opération avec Python 2.6.6.

installation de pip

pip est un système de gestion de packages permettant d'installer et de gérer des logiciels packagés écrits en Python.

curl -kL https://bootstrap.pypa.io/get-pip.py | python

Installer Pygments

Pygments est un surligneur de syntaxe pour différentes langues.

pip install pygments

Contrôle de fonctionnement

Veuillez consulter ici pour la génération de balises et la référence des balises. L'importation de l'analyseur Pygments dans GNU GLOBAL devrait rendre la lecture du code source incroyablement rapide

Pour autant que je sache, la génération de balises a réussi dans tous les rubis, python et go, mais seule la référence de la balise Go à l'aide de la commande global ne fonctionnait pas. (Rien n'est sorti en standard même s'il est exécuté) Cependant, comme la référence de balise Go réussit à partir des balises helm-gtags ci-dessous, il semble que seule la référence de balise de la commande global ne fonctionne pas.

Comment utiliser GNU GLOBAL à partir de commandes, Vim, Emacs

gtags.vim et gtags.el se trouvent dans/ usr / local / share / gtags /.

ll /usr/local/share/gtags/gtags.{vim,el}
-rw-r--r-- 1 root root 36494 Sep 17 19:50 /usr/local/share/gtags/gtags.el
-rw-r--r-- 1 root root 16170 Sep 17 19:50 /usr/local/share/gtags/gtags.vim

+α for Emacs

Dans ce qui précède, gtags.el est introduit, mais voici un helm-gtags.el plus pratique. Veuillez installer Emacs 24.3, helm, helm-gtags, go-mode.

Cliquez ici pour les balises helm-gtags. helm-gtags - Emacs JP

(require 'helm-gtags)          
(add-hook 'go-mode-hook (lambda () (helm-gtags-mode)))
(add-hook 'python-mode-hook (lambda () (helm-gtags-mode)))  
(add-hook 'ruby-mode-hook (lambda () (helm-gtags-mode)))                         
(setq helm-gtags-path-style 'root)                       
(setq helm-gtags-auto-update t)
(add-hook 'helm-gtags-mode-hook
          '(lambda ()                                                                   
             (local-set-key (kbd "M-g") 'helm-gtags-dwim)
             (local-set-key (kbd "M-s") 'helm-gtags-show-stack)
             (local-set-key (kbd "M-p") 'helm-gtags-previous-history)
             (local-set-key (kbd "M-n") 'helm-gtags-next-history)))                        

Après cela, vous pouvez démarrer Emacs, déplacer le curseur sur la cible et sauter la fonction avec M-g.

L'image en haut de la page est Emacs + helm-gtags, qui fait référence à la balise Go.

Vous pouvez désormais sauter des fonctions dans Python, Ruby, Go sans aucun paramètre Emacs spécial en exécutant la commande gtags une fois!

Je suis impressionné.

référence

Recommended Posts

GNU GLOBAL (gtags) + α dans Go, Ruby, Python
Combinaison de regroupement en Python / Ruby / PHP / Golang (Go)
Gérer les nombres premiers avec Python / Ruby / PHP / Golang (Go)
Combinaisons qui se chevauchent avec des limites supérieures en Python / Ruby / PHP / Golang (Go)
Hiérarchie, ordre, combinaison (dupliquée) en Python / Ruby / PHP / Golang (Go)
Sélection en plusieurs étapes (Go / C # / Ruby / Python)
Utilisation de variables globales dans les fonctions python
[Python3] Définir dynamiquement des variables globales dans une fonction
Différences entre Ruby et Python dans la portée
Grande différence dans les performances de ruby, python, httpd
[Résumé du scraping] | Python Node.js PHP Ruby Go VBA | Scraping Yahoo Top en 6 langues
Différence entre non local et global en Python
Référence du fichier INI en Python ou Ruby
Essayez quelque chose comme Python for-else dans Ruby
Comment écrire Ruby to_s en Python
Implémenter la récurrence et l'exploration commémoratives dans Python and Go
Installez Python 3.5.1 + numpy + scipy + α dans l'environnement Windows
Traitement Y / n avec bash, Python et Go
Créer un package contenant des commandes globales en Python
Nom de groupe symbolique d'expression régulière en Python / Ruby
Quadtree en Python --2
Python en optimisation
CURL en Python
Métaprogrammation avec Python
Python 3.3 avec Anaconda
Géocodage en python
SendKeys en Python
Méta-analyse en Python
Unittest en Python
Python avec Go
Époque en Python
Allemand en Python
DCI en Python
tri rapide en python
nCr en python
N-Gram en Python
Programmation avec Python
Plink en Python
Constante en Python
FizzBuzz en Python
Janken en Ruby
Sqlite en Python
Étape AIC en Python
L'algorithme de cette semaine: calculez l'itinéraire le plus court! (Itérateur de permutation en Ruby / Python / C # / VB / Go)
LINE-Bot [0] en Python
CSV en Python
Assemblage inversé avec Python
Réflexion en Python
Constante en Python
nCr en Python.
format en python
Scons en Python 3
Puyopuyo en python
python dans virtualenv
PPAP en Python
Quad-tree en Python
Réflexion en Python
Chimie avec Python