Re: [CEDET-devel] (semanticdb-directory-loaded-p default-directory) returns nil
Brought to you by:
zappo
From: Eric L. <er...@si...> - 2015-01-30 02:44:43
|
On 01/27/2015 10:53 AM, Oleh Krehel wrote: > Hi Eric, > > I'd like to bump this There is some example code in cedet/semantic/db-mk.el which is meant to be called from etc/semantic/semanticdb.sh which appears to do something vaguely like your hack. I tried a C file in /tmp and the tooling all seemed to boot and work, but not for my .emacs file or other Emacs Lisp file. After poking around, I found that if I do: (semanticdb-directory-loaded-p (file-truename default-directory)) instead of (semanticdb-directory-loaded-p default-directory) that solved the problem - basically, the ~ in default-directory was causing the failure. The database is always created using `file-truename' but the check doesn't call that because it is slow. Instead file-truename is called from semanticdb-get-database, and other higher level fcns which is why it usually appears to work. , as well as add a new question. > Say that I store: > > (setq db (semanticdb-directory-loaded-p path)) > > Now `db` stores the database for all files in path. It happens > sometimes that I know for sure that one of these files was already > deleted. How can I update `db`, deleting the corresponding entry for > both for the current and future sessions? You can use `semanticdb-live-p' on a table to make sure the file still exists. When semanticdb writes out a database, each table is tested to be sure it is still 'live'. If it is not live, it is not written to disk. As such, the databases are kept up to date as you delete files. I never bothered cleaning up deleted files in a running emacs before hand. See the `object-write' method in cedet/semantic/db-file.el. Eric |