               v (selection (id :vars-cbx))
               f (get vars-cbx-value-fn-map v)]
           (if n
-            (if (= v "search-all-docs")
-              {:already-filtered true
-               :string-seq (seq (sort (find-in-doc-strings
-                                      (config (id :vars-filter-tf) :text))))}
-              {:already-filtered false
-               :string-seq (seq (sort (map str (keys (f n)))))})
+            (let [already-filtered (= v "search-all-docs")
+                  string-seq (if already-filtered
+                               (find-in-doc-strings (config (id :vars-filter-tf)
+                                                            :text))
+                               (map str (keys (f n))))]
+              {:already-filtered already-filtered :string-seq string-seq})
             {:already-filtered false :string-seq []}))))
       (b/transform regx-tf-filter (id :vars-filter-tf))
+      (b/transform (fn [symbol-str-seq]
+        (if @group-vars-by-object-type
+          (let [n-s (selection (id :ns-lb))
+                n (and n-s (find-ns (symbol n-s)))
+                v (selection (id :vars-cbx))
+                fqns? (#{"all-publics" "search-all-docs"} v)]
+            (group-by-object-type symbol-str-seq fqns? n-s))
+          symbol-str-seq)))
       (b/notify-soon)
       (b/property (id :vars-lb) :model))
     ;;

                       (or (re-find r (:doc %))
                           (re-find r (str (:name %))))))
         (map #(str (:ns %) "/" (:name %))))))


(defn widget-model-count

            [seesaw.bind :as b]
            [clojure.java.browse]
            [clojure.java.shell]
            [clojure.string :as str]
            [clj-info.doc2map :as d2m]
            [clj-ns-browser.inspector]
            [seesaw.meta]
            [clojure.java.javadoc]
