Re: [CEDET-devel] cpp-root project related fixes
Brought to you by:
zappo
From: Eric M. L. <er...@si...> - 2013-03-05 01:45:57
|
On 03/03/2013 05:06 AM, Tomasz Gajewski wrote: [ snip ] >> Now that i understand the issue better, I'll lay out how I understand >> > things. >> > >> > 1) semantic-idle-scheduler-work-parse-neighboring-files is trying to >> > parse files next to the current buffer. Thus, directory matches >> > shouldn't generally affect it much. >> > 2) You are just trying to overcome the problem of directory-files >> > throwing an error. > I think I was not clear enough again :-). > > No. directory-files doesn't throw error. Files just do not match my > regular expression becuase only filename is matched and my entry from > directory-files contains pattern on directories. > > In consequence your patch doesn't change anything. The only solution > that I see is to retrieve all files and match them against > auto-mode-alist entries just like I did in my patch. [snip] > I have left this check but done individually for each file. As I think > about it more a slightly more efficient algoright (though not for the > most pessimistic case) would be to filter auto-mode-alist with this > check, retrieve full directory listing and check files against this > filtered list. Something like this implements patch below. > > > Regards > Tomasz Gajewski > > > === modified file 'lisp/cedet/semantic/idle.el' > *** lisp/cedet/semantic/idle.el 2013-01-31 20:50:32 +0000 > --- lisp/cedet/semantic/idle.el 2013-03-03 10:01:48 +0000 > *************** > *** 435,449 **** > (defun semantic-idle-scheduler-work-parse-neighboring-files () > "Parse all the files in similar directories to buffers being edited." > ;; Let's check to see if EDE matters. > ! (let ((ede-auto-add-method 'never)) > (dolist (a auto-mode-alist) > (when (eq (cdr a) major-mode) > ! (dolist (file (directory-files default-directory t (car a) t)) > ! (semantic-throw-on-input 'parsing-mode-buffers) > ! (save-excursion > ! (semanticdb-file-table-object file) > ! )))) > ! )) > > > ;;; REPARSING > --- 435,452 ---- > (defun semantic-idle-scheduler-work-parse-neighboring-files () > "Parse all the files in similar directories to buffers being edited." > ;; Let's check to see if EDE matters. > ! (let ((ede-auto-add-method 'never) > ! (matching-auto-mode-paterns nil)) > (dolist (a auto-mode-alist) > (when (eq (cdr a) major-mode) > ! (add-to-list 'matching-auto-mode-paterns (car a)))) > ! (dolist (file (directory-files default-directory t ".*" t)) > ! (when (file-regular-p file) > ! (dolist (a matching-auto-mode-paterns) > ! (when (string-match a file) > ! (semantic-throw-on-input 'parsing-mode-buffers) > ! (save-excursion > ! (semanticdb-file-table-object file)))))))) Thanks for your patience in explaining. This final patch is something I understand with the needed backstory. I was hesitant to do full directory lookups in this function. The ".*" is always scary. I suppose it is no worse that several shorter lookups. Perhaps this will be faster in the end. Your patch is currently passing tests, but I don't think we have any tests that explicitly try this out idle routine out. Instead, I'm going to run with this for a little bit and see how it goes. Fortunately, this patch is smaller than 10 lines of new code, so I don't need any special papers to accept contributions such as this. Thanks Eric |