diff -Nura trac.orig/wiki/macros.py trac/wiki/macros.py
--- trac.orig/wiki/macros.py	2009-02-12 18:45:31.000000000 +0100
+++ trac/wiki/macros.py	2009-02-13 09:03:00.000000000 +0100
@@ -83,6 +83,9 @@
        only toplevel pages will be shown, if set to 1, only immediate
        children pages will be shown, etc. If not set, or set to -1,
        all pages in the hierarchy will be shown.
+     - `omit=colon:separated:list`: omit pages listed in the list
+     - `omitstartswith=colon:separated:list`: pages starting with a string
+       from argument list will be omitted
     """
 
     SPLIT_RE = re.compile(r"( |/|[0-9])")
@@ -94,10 +97,16 @@
         minsize = max(int(kw.get('min', 2)), 2)
         depth = int(kw.get('depth', -1))
         start = prefix and prefix.count('/') or 0
+        omit = kw.get('omit', '')
+        omit = tuple(omit and omit.split(':') or [])
+        omitsw = kw.get('omitstartswith', '')
+        omitsw = tuple(omitsw and omitsw.split(':') or [])
 
         wiki = formatter.wiki
         pages = sorted([page for page in wiki.get_pages(prefix) \
-                        if 'WIKI_VIEW' in formatter.perm('wiki', page)])
+                        if (not omit or not page in omit) and \
+                           (not omitsw or not page.startswith(omitsw)) and \
+                           ('WIKI_VIEW' in formatter.perm('wiki', page))])
 
         if format != 'group':
             return tag.ul([tag.li(tag.a(wiki.format_page_name(page),

