Ich bin neu in Emacs Lisp-Programmierung. Ich bin ein Entwickler und Programmierer in c auf täglicher Basis. Ich möchte Tags zum Code-Browsing mit Emacs verwenden. Allerdings ist die Größe meines Projekts sehr groß und ich kann es mir nicht leisten, etags zu laufen. Ich möchte lisp Funktion oder Code in Emacs so hinzufügen, jede Datei, die ich öffne emacs muss in eine Datei geschrieben (nennen Sie es als ~/project_files_opened.txt) und ich werde Cron Job, der nur die geöffneten Dateien Etags. Kann mir bitte jemand mit einigen Referenzen oder bestehendem Code helfen? Sogar einige Beispiele würden mir helfen, ... Danke.emacs Lisp-Code zum Hinzufügen von Dateien zur Überwachung
Antwort
Wie wärs mit einem etwas anderen Takt? Wenn Sie eine Datei öffnen (die Ihnen wichtig ist), fügen Sie sie zu diesem Zeitpunkt der TAGS-Datei hinzu. Sie können mit dem folgenden Code, das ist ziemlich leicht tun:
(setq tags-file-name "/scratch2/TAGS")
(setq tags-revert-without-query t)
(add-hook 'find-file-hooks 'add-opened-file-to-tags)
(defun add-opened-file-to-tags()
"every time a file is opened, add it to the TAGS file (if not already present)
Note: only add it to the TAGS file when the major mode is one we care about"
(when (memq major-mode '(c-mode c++-mode))
(let ((opened-file (buffer-file-name)))
(save-excursion
(visit-tags-table-buffer)
(unless (member opened-file (tags-table-files))
(shell-command
(format "etags -a --output %s %s" tags-file-name opened-file)))))))
;; create an empty TAGS file if necessary
(unless (file-exists-p tags-file-name)
(shell-command (format "touch %s" tags-file-name)))
jeder einmal in eine Weile Sie die TAGS Datei gelöscht werden soll, um den Inhalt zu aktualisieren. Oder Sie können so etwas wie die folgenden M-x Refresh-Tags-Tabelle verwenden:
(defun refresh-tags-file()
"rebuild the tags file"
(interactive)
(let ((tags-files
(save-excursion
(visit-tags-table-buffer)
(tags-table-files))))
(delete-file tags-file-name)
(dolist (file tags-files)
(shell-command (format "etags -a --output %s %s" tags-file-name file)))))
Sie können sich das CEDET-Framework ansehen. Siehe die semantic module.
Möglicherweise möchten Sie GNU Global als Ersatz für Etags betrachten. Mein Vorbehalt ist, dass ich es selbst nicht verwendet habe, aber ich glaube, dass es eine richtige Datenbank im Gegensatz zu der grundlegenden flachen TAGS-Datei implementiert, und dass inkrementelle Updates daher sehr effizient sein sollten.
Siehe die tutorial für Details; insbesondere 3.6 Extended Emacs using GLOBAL und 4.3 Incremental updating.
Es gibt auch eine Seite im Emacs Wiki:
http://www.emacswiki.org/emacs/GnuGlobal
- 1. konnte Munin-Knoten nicht zur Überwachung hinzufügen
- 2. Beste Methode zur Überwachung von Android-Systemmetriken
- 3. Hinzufügen von Dateien zur Listenansicht in C#
- 4. Gefahren der Verwendung von Reflektion zum Hinzufügen von Dateien zum Classpath zur Laufzeit
- 5. Tool zur Überwachung von HTTP-Verkehr
- 6. Tools zur Überwachung von SQL Server
- 7. Kernel-Modul zur Überwachung von Systemaufrufen?
- 8. HttpModule zum Hinzufügen von Kopfzeilen zur Anfrage
- 9. In Emacs dired, wie finden/besuchen Sie mehrere Dateien?
- 10. Überwachung des Inhalts von Dateien/Verzeichnissen?
- 11. Überwachung für Nicht-PGP-Dateien
- 12. Ember-Addon zum Hinzufügen von Dateien zum Root-Verzeichnis
- 13. XeLaTeX zur Befehlsliste hinzufügen
- 14. Sollte ich .vcxproj.filter-Dateien zur Quellcodeverwaltung hinzufügen?
- 15. Bestes Tool zur Überwachung der Netzwerkverbindungsbandbreite
- 16. Betriebssystemunabhängige API zur Überwachung des Dateisystems?
- 17. Verwenden von startActivityForResult zum Hinzufügen von Daten zur Liste
- 18. Tools zur Überwachung der Java-Thread-Ausführung
- 19. Powershell-Skript zur Überwachung des Ordnerbereichs
- 20. jQuery: Hinzufügen von zusätzlichen CSS-Dateien zur aktuellen Seite
- 21. Emacs: Hostname zu Moduszeile hinzufügen?
- 22. Hinzufügen von Dateien zum xcode-Projekt von git repository
- 23. Tipps zum Profilieren von Fehlverhalten Emacs Lisp?
- 24. Tool zur Überwachung von HTTP, TCP, etc. Web Service-Verkehr
- 25. Alle Tools zur Überwachung der von einer Anwendung vorgenommenen Änderungen?
- 26. Tools und Methoden zur Live-Überwachung von ASP.NET-Webanwendungen?
- 27. Software zur Überwachung von Ereignissen aus dem Code
- 28. Überwachung von Windows-Prozessen
- 29. Überwachung von Graphit fullQueueDrops
- 30. Verwenden von MPMediaLibrary zum Hinzufügen eines Titels zur Wiedergabeliste
Das * könnte * sein der Weg zu gehen, aber es ist ziemlich schwer. –