diff --git a/app/helpers/custom_fields_helper.rb b/app/helpers/custom_fields_helper.rb
index 1894674..84ee66b 100644
--- a/app/helpers/custom_fields_helper.rb
+++ b/app/helpers/custom_fields_helper.rb
@@ -90,9 +90,20 @@ module CustomFieldsHelper
   end
 
   # Return a string used to display a custom value
-  def show_value(custom_value)
+  def show_value(custom_value, options = {})
     return "" unless custom_value
-    format_value(custom_value.value, custom_value.custom_field.field_format)
+    
+    options = {:textilize => true, :simple_format => false}.merge(options)
+    value = custom_value.value
+    if options[:simple_format]
+      value = simple_format_without_paragraph(h(value))
+    elsif options[:textilize] && custom_value.custom_field.textilized?
+      value = textilizable(value)
+    else
+      value = h(value)
+    end
+    
+    format_value(value, custom_value.custom_field.field_format)
   end
   
   # Return a string used to display a custom value
diff --git a/app/helpers/issues_helper.rb b/app/helpers/issues_helper.rb
index 60798fe..16e097b 100644
--- a/app/helpers/issues_helper.rb
+++ b/app/helpers/issues_helper.rb
@@ -79,7 +79,7 @@ module IssuesHelper
     n = 0
     ordered_values.compact.each do |value|
       s << "</tr>\n<tr>\n" if n > 0 && (n % 2) == 0
-      s << "\t<th>#{ h(value.custom_field.name) }:</th><td>#{ simple_format_without_paragraph(h(show_value(value))) }</td>\n"
+      s << "\t<th>#{ h(value.custom_field.name) }:</th><td>#{ show_value(value) }</td>\n"
       n += 1
     end
     s << "</tr>\n"
@@ -226,7 +226,7 @@ module IssuesHelper
                   format_time(issue.created_on),  
                   format_time(issue.updated_on)
                   ]
-        custom_fields.each {|f| fields << show_value(issue.custom_value_for(f)) }
+        custom_fields.each {|f| fields << show_value(issue.custom_value_for(f), :textilize => false) }
         fields << issue.description
         csv << fields.collect {|c| begin; ic.iconv(c.to_s); rescue; c.to_s; end }
       end
diff --git a/app/helpers/timelog_helper.rb b/app/helpers/timelog_helper.rb
index d314a96..b0caa1b 100644
--- a/app/helpers/timelog_helper.rb
+++ b/app/helpers/timelog_helper.rb
@@ -115,7 +115,7 @@ module TimelogHelper
                   entry.hours.to_s.gsub('.', decimal_separator),
                   entry.comments
                   ]
-        fields += custom_fields.collect {|f| show_value(entry.custom_value_for(f)) }
+        fields += custom_fields.collect {|f| show_value(entry.custom_value_for(f), :textilize => false) }
                   
         csv << fields.collect {|c| begin; ic.iconv(c.to_s); rescue; c.to_s; end }
       end
diff --git a/app/models/custom_field.rb b/app/models/custom_field.rb
index 7cc6e86..66a445c 100644
--- a/app/models/custom_field.rb
+++ b/app/models/custom_field.rb
@@ -34,6 +34,8 @@ class CustomField < ActiveRecord::Base
   def before_validation
     # make sure these fields are not searchable
     self.searchable = false if %w(int float date bool).include?(field_format)
+    # and only text fields are textilized
+    self.textilized = false unless %w(string text).include?(field_format)
     true
   end
   
diff --git a/app/views/custom_fields/_form.rhtml b/app/views/custom_fields/_form.rhtml
index 9871567..aa89350 100644
--- a/app/views/custom_fields/_form.rhtml
+++ b/app/views/custom_fields/_form.rhtml
@@ -8,6 +8,7 @@ function toggle_custom_field_format() {
   p_regexp = $("custom_field_regexp");
   p_values = $("custom_field_possible_values");
   p_searchable = $("custom_field_searchable");
+  p_textilized = $("custom_field_textilized");
   p_default = $("custom_field_default_value");
   
   p_default.setAttribute('type','text');
@@ -17,6 +18,7 @@ function toggle_custom_field_format() {
     case "list":
       Element.hide(p_length.parentNode);
       Element.hide(p_regexp.parentNode);
+      Element.hide(p_textilized.parentNode);
       if (p_searchable) Element.show(p_searchable.parentNode);
       Element.show(p_values);
       break;
@@ -24,12 +26,14 @@ function toggle_custom_field_format() {
       p_default.setAttribute('type','checkbox');
       Element.hide(p_length.parentNode);
       Element.hide(p_regexp.parentNode);
+      Element.hide(p_textilized.parentNode);
       if (p_searchable) Element.hide(p_searchable.parentNode);
       Element.hide(p_values);
       break;
     case "date":
       Element.hide(p_length.parentNode);
       Element.hide(p_regexp.parentNode);
+      Element.hide(p_textilized.parentNode);
       if (p_searchable) Element.hide(p_searchable.parentNode);
       Element.hide(p_values);
       break;
@@ -37,12 +41,14 @@ function toggle_custom_field_format() {
     case "int":
       Element.show(p_length.parentNode);
       Element.show(p_regexp.parentNode);
+      Element.hide(p_textilized.parentNode);
       if (p_searchable) Element.hide(p_searchable.parentNode);
       Element.hide(p_values);
       break;
     default:
       Element.show(p_length.parentNode);
       Element.show(p_regexp.parentNode);
+      Element.show(p_textilized.parentNode);
       if (p_searchable) Element.show(p_searchable.parentNode);
       Element.hide(p_values);
       break;
@@ -83,14 +89,17 @@ when "IssueCustomField" %>
     <p><%= f.check_box :is_for_all %></p>
     <p><%= f.check_box :is_filter %></p>
     <p><%= f.check_box :searchable %></p>
+    <p><%= f.check_box :textilized %></p>
     
 <% when "UserCustomField" %>
     <p><%= f.check_box :is_required %></p>
     <p><%= f.check_box :editable %></p>
+    <p><%= f.check_box :textilized %></p>
 
 <% when "ProjectCustomField" %>
     <p><%= f.check_box :is_required %></p>
     <p><%= f.check_box :searchable %></p>
+    <p><%= f.check_box :textilized %></p>
 
 <% when "TimeEntryCustomField" %>
     <p><%= f.check_box :is_required %></p>
diff --git a/app/views/mailer/_issue_text_html.rhtml b/app/views/mailer/_issue_text_html.rhtml
index 3b1812d..354745c 100644
--- a/app/views/mailer/_issue_text_html.rhtml
+++ b/app/views/mailer/_issue_text_html.rhtml
@@ -8,7 +8,7 @@
 <li><%=l(:field_category)%>: <%=h issue.category %></li>
 <li><%=l(:field_fixed_version)%>: <%=h issue.fixed_version %></li>
 <% issue.custom_values.each do |c| %>
-  <li><%=h c.custom_field.name %>: <%=h show_value(c) %></li>
+  <li><%=h c.custom_field.name %>: <%= show_value(c) %></li>
 <% end %>
 </ul>
 
diff --git a/app/views/mailer/_issue_text_plain.rhtml b/app/views/mailer/_issue_text_plain.rhtml
index 6b87c18..cf0a9ae 100644
--- a/app/views/mailer/_issue_text_plain.rhtml
+++ b/app/views/mailer/_issue_text_plain.rhtml
@@ -7,7 +7,7 @@
 <%=l(:field_assigned_to)%>: <%= issue.assigned_to %>
 <%=l(:field_category)%>: <%= issue.category %>
 <%=l(:field_fixed_version)%>: <%= issue.fixed_version %>
-<% issue.custom_values.each do |c| %><%= c.custom_field.name %>: <%= show_value(c) %>
+<% issue.custom_values.each do |c| %><%= c.custom_field.name %>: <%= show_value(c, :textilize => false) %>
 <% end %>
 
 <%= issue.description %>
diff --git a/app/views/projects/show.rhtml b/app/views/projects/show.rhtml
index fa97715..e9688c2 100644
--- a/app/views/projects/show.rhtml
+++ b/app/views/projects/show.rhtml
@@ -18,7 +18,7 @@
   <% end %>
 	<% @project.custom_values.each do |custom_value| %>
 	<% if !custom_value.value.blank? %>
-	   <li><%= custom_value.custom_field.name%>: <%=h show_value(custom_value) %></li>
+	   <li><%= custom_value.custom_field.name%>: <%= show_value(custom_value) %></li>
 	<% end %>
 	<% end %>
 	</ul>	
diff --git a/app/views/users/show.rhtml b/app/views/users/show.rhtml
index 82634b0..73dae65 100644
--- a/app/views/users/show.rhtml
+++ b/app/views/users/show.rhtml
@@ -11,7 +11,7 @@
 	<% end %>
 	<% for custom_value in @custom_values %>
 	<% if !custom_value.value.blank? %>
-    <li><%=h custom_value.custom_field.name%>: <%=h show_value(custom_value) %></li>
+    <li><%=h custom_value.custom_field.name%>: <%= show_value(custom_value) %></li>
 	<% end %>
 	<% end %>
     <li><%=l(:label_registered_on)%>: <%= format_date(@user.created_on) %></li>
diff --git a/app/views/versions/_overview.rhtml b/app/views/versions/_overview.rhtml
index 550cf3e..3a1c809 100644
--- a/app/views/versions/_overview.rhtml
+++ b/app/views/versions/_overview.rhtml
@@ -8,7 +8,7 @@
 <ul>
 	<% version.custom_values.each do |custom_value| %>
 		<% if !custom_value.value.blank? %>
-		   <li><%=h custom_value.custom_field.name %>: <%=h show_value(custom_value) %></li>
+		   <li><%=h custom_value.custom_field.name %>: <%= show_value(custom_value) %></li>
 		<% end %>
 	<% end %>
 </ul>
diff --git a/config/locales/en.yml b/config/locales/en.yml
index 3ab2578..c6edd32 100644
--- a/config/locales/en.yml
+++ b/config/locales/en.yml
@@ -285,6 +285,7 @@ en:
   field_group_by: Group results by
   field_sharing: Sharing
   field_parent_issue: Parent task
+  field_textilized: Textilized
   
   setting_app_title: Application title
   setting_app_subtitle: Application subtitle
diff --git a/db/migrate/109_add_custom_fields_textilized.rb b/db/migrate/109_add_custom_fields_textilized.rb
new file mode 100644
index 0000000..d0a0aa4
--- /dev/null
+++ b/db/migrate/109_add_custom_fields_textilized.rb
@@ -0,0 +1,9 @@
+class AddCustomFieldsTextilized < ActiveRecord::Migration
+  def self.up
+    add_column :custom_fields, :textilized, :boolean, :default => false
+  end
+
+  def self.down
+    remove_column :custom_fields, :textilized
+  end
+end
diff --git a/test/fixtures/custom_fields.yml b/test/fixtures/custom_fields.yml
index c80f85d..9a79493 100644
--- a/test/fixtures/custom_fields.yml
+++ b/test/fixtures/custom_fields.yml
@@ -129,3 +129,16 @@ custom_fields_009:
   field_format: date
   default_value: ""
   editable: true
+custom_fields_010: 
+  name: Textilizable cf
+  min_length: 0
+  regexp: ""
+  is_for_all: true
+  is_filter: true
+  type: IssueCustomField
+  max_length: 0
+  possible_values: ""
+  id: 10
+  is_required: false
+  field_format: string
+  textilized: true
diff --git a/test/fixtures/custom_fields_trackers.yml b/test/fixtures/custom_fields_trackers.yml
index a356e4b..c1f4703 100644
--- a/test/fixtures/custom_fields_trackers.yml
+++ b/test/fixtures/custom_fields_trackers.yml
@@ -17,3 +17,6 @@ custom_fields_trackers_005:
 custom_fields_trackers_006: 
   custom_field_id: 6
   tracker_id: 3
+custom_fields_trackers_007:
+  custom_field_id: 10
+  tracker_id: 1
diff --git a/test/fixtures/custom_values.yml b/test/fixtures/custom_values.yml
index 76ce067..2e58919 100644
--- a/test/fixtures/custom_values.yml
+++ b/test/fixtures/custom_values.yml
@@ -101,3 +101,9 @@ custom_values_017:
   customized_id: 1
   id: 17
   value: '2009-12-01'
+custom_values_018: 
+  customized_type: Issue
+  custom_field_id: 10
+  customized_id: 1
+  id: 18
+  value: "*Issue* test: #1\n(powered by http://www.redmine.org/)"
diff --git a/test/unit/helpers/custom_fields_helper_test.rb b/test/unit/helpers/custom_fields_helper_test.rb
index 18bc2ff..5635cd6 100644
--- a/test/unit/helpers/custom_fields_helper_test.rb
+++ b/test/unit/helpers/custom_fields_helper_test.rb
@@ -18,6 +18,8 @@
 require File.dirname(__FILE__) + '/../../test_helper'
 
 class CustomFieldsHelperTest < HelperTestCase
+  include ApplicationHelper
+  include ActionView::Helpers::TextHelper
   include CustomFieldsHelper
   include Redmine::I18n
   
@@ -26,4 +28,12 @@ class CustomFieldsHelperTest < HelperTestCase
     assert_equal 'Yes', format_value('1', 'bool')
     assert_equal 'No', format_value('0', 'bool')
   end
+
+  def test_show_value
+    cv = CustomValue.find(18)
+    str = cv.value
+    assert_equal str, show_value(cv, :textilize => false)
+    assert_equal str.gsub("\n","\n<br />"), show_value(cv, :simple_format => true)
+    assert_equal textilizable(str), show_value(cv)
+  end
 end
