Index: trac/wiki/formatter.py
===================================================================
--- trac/wiki/formatter.py	(revision 4259)
+++ trac/wiki/formatter.py	(working copy)
@@ -23,6 +23,7 @@
 import urllib
 
 from StringIO import StringIO
+from os.path import dirname
 
 from trac.core import *
 from trac.mimeview import *
@@ -230,10 +231,11 @@
     _processor_re = re.compile('#\!([\w+-][\w+-/]*)')
     _anchor_re = re.compile('[^\w:.-]+', re.UNICODE)
 
-    def __init__(self, env, req=None, absurls=False, db=None):
+    def __init__(self, env, req=None, absurls=False, db=None, itemurl=None):
         self.env = env
         self.req = req
         self._db = db
+        self._itemurl = itemurl
         self._absurls = absurls
         self._anchors = {}
         self._open_tags = []
@@ -428,6 +430,14 @@
     def _make_relative_link(self, url, text):
         if url.startswith('//'): # only the protocol will be kept
             return html.A(text, class_="ext-link", href=url)
+        elif self._itemurl and url and url[0] in "#.":
+            # This is for links that are hashref or relative, not those
+            # that have a leading slash (presumably relative to the
+            # server, not trac instance
+            if url[0] == "#": # hash ref
+                return html.A(text, href=self._itemurl+url)
+            else: # file link
+                return html.A(text, href=dirname(self._itemurl)+"/"+url)
         else:
             return html.A(text, href=url)
 
@@ -861,8 +871,8 @@
     """
     flavor = 'oneliner'
 
-    def __init__(self, env, absurls=False, db=None, req=None):
-        Formatter.__init__(self, env, req, absurls, db)
+    def __init__(self, env, absurls=False, db=None, req=None, itemurl=None):
+        Formatter.__init__(self, env, req, absurls, db, itemurl)
 
     # Override a few formatters to disable some wiki syntax in "oneliner"-mode
     def _list_formatter(self, match, fullmatch): return match
@@ -998,19 +1008,19 @@
 # -- wiki_to_* helper functions
 
 def wiki_to_html(wikitext, env, req, db=None,
-                 absurls=False, escape_newlines=False):
+                 absurls=False, escape_newlines=False, itemurl=None):
     if not wikitext:
         return Markup()
     out = StringIO()
-    Formatter(env, req, absurls, db).format(wikitext, out, escape_newlines)
+    Formatter(env, req, absurls, db, itemurl=itemurl).format(wikitext, out, escape_newlines)
     return Markup(out.getvalue())
 
 def wiki_to_oneliner(wikitext, env, db=None, shorten=False, absurls=False,
-                     req=None):
+                     req=None, itemurl=None):
     if not wikitext:
         return Markup()
     out = StringIO()
-    OneLinerFormatter(env, absurls, db, req=req).format(wikitext, out, shorten)
+    OneLinerFormatter(env, absurls, db, itemurl=itemurl, req=req).format(wikitext, out, shorten)
     return Markup(out.getvalue())
 
 def wiki_to_outline(wikitext, env, db=None,
Index: templates/timeline.html
===================================================================
--- templates/timeline.html	(revision 4259)
+++ templates/timeline.html	(working copy)
@@ -42,7 +42,7 @@
             </a></dt>
             <dd class="${event.kind}" py:with="wikify = event.use_oneliner and wiki_to_oneliner or wiki_to_html">
               ${event.markup}
-              <py:if test="event.message">${wikify(event.message)}</py:if>
+              <py:if test="event.message">${wikify(event.message, itemurl=event.href)}</py:if>
             </dd>
           </py:for>
         </dl>
Index: templates/wiki_diff.html
===================================================================
--- templates/wiki_diff.html	(revision 4259)
+++ templates/wiki_diff.html	(working copy)
@@ -51,7 +51,7 @@
         <dt class="property message">Comment:</dt>
         <dd class="message" py:choose="">
           <em py:when="multi" class="multi">(multiple changes)</em>
-          <py:otherwise>${wiki_to_html(comment)}</py:otherwise>
+          <py:otherwise>${wiki_to_html(comment, itemurl=href.wiki(page.name))}</py:otherwise>
         </dd>
       </dl>
       <div class="diff">
Index: templates/wiki_history.html
===================================================================
--- templates/wiki_history.html	(revision 4259)
+++ templates/wiki_history.html	(working copy)
@@ -48,7 +48,7 @@
               </td>
               <td class="date">${format_datetime(item.date)}</td>
               <td class="author" title="IP-Address: $item.ipnr">$item.author</td>
-              <td class="comment">${wiki_to_oneliner(item.comment)}</td>
+              <td class="comment">${wiki_to_oneliner(item.comment, itemurl=href.wiki(page.name))}</td>
             </tr>
           </tbody>
         </table>

