Re: [CEDET-devel] [PATCH] several small improvements
Brought to you by:
zappo
From: Eric M. L. <er...@si...> - 2010-02-05 02:32:19
|
On 02/01/2010 06:49 PM, Jan Moringen wrote: > +;;; Customization > +;; > + > +(defgroup srecode-cpp nil > + "srecode-cpp group." > + :group 'srecode) > + > +(defcustom srecode-cpp-namespaces > + '("std" "boost") > + "*" > + :group 'srecode-cpp > + :type '(repeat string)) > + > ;;; :cpp ARGUMENT HANDLING > ;; > ;; When a :cpp argument is required, fill the dictionary with > @@ -57,12 +73,27 @@ > ) > ) > > +(defun srecode-semantic-handle-:using-namespaces (dict) > + "" > + (let ((tags (semantic-find-tags-by-class > + 'using (semantic-fetch-tags)))) > + (dolist (name srecode-cpp-namespaces) > + (let ((variable (format "PREFIX_%s" (upcase name))) > + (prefix (format "%s::" name))) > + (srecode-dictionary-set-value dict variable prefix) > + (dolist (tag tags) > + (when (and (eq (semantic-tag-get-attribute tag :kind) > + 'namespace) > + (string= (semantic-tag-name tag) name)) > + (srecode-dictionary-set-value dict variable "")))))) > + ) > + Hi Jan, For the above patch, I'm guessing the use case is is: {PREFIX_boost}boostsymbol; where the PREFIX is either "" or boost:: dependent on using statements in the file? This seems like something that could benefit from a small extension to the SRecode grammar to allow something like this in a .srt file: set NAMESPACES ( "boost" "std" ) ;; - need to impl this feature... and then individual template files could stand independently, and each have their own namespace lists when using the :using argument. ie, one template file just for boost, and another for std. I suspect that 'set' may be wrong though. Perhaps some sort of 'emacsset', 'setq', or 'settolist'. Hmmm. Something to contemplate. On the whole, an interesting idea. I like it. Thanks Eric |