Index: includes/form.inc
===================================================================
RCS file: /cvs/drupal/drupal/includes/form.inc,v
retrieving revision 1.14
diff -u -r1.14 form.inc
--- includes/form.inc	12 Nov 2005 03:45:57 -0000	1.14
+++ includes/form.inc	14 Nov 2005 18:09:51 -0000
@@ -698,8 +698,19 @@
  */
 function theme_textarea($element) {
   $cols = $element['#cols'] ? ' cols="'. $element['#cols'] .'"' : '';
+  
+  $pre = '';
+  $post = '';
+
+  // optionally plug in a WYSIWYG editor
+  foreach (module_list() as $module_name) {
+    if (module_hook($module_name, 'textarea')) {
+      $pre  = module_invoke($module_name, 'textarea', 'pre', $element['#id']);
+      $post = module_invoke($module_name, 'textarea', 'post', $element['#id']);
+    }
+  }
 
-  return theme('form_element', $element['#title'], '<textarea'. $cols .' rows="'. $element['#rows'] .'" name="'. $element['#name'] .'" id="' . $element['#id'] .'" class="'. _form_get_class('textarea', $element['#required'], form_get_error($element)) .'"'. drupal_attributes($element['#attributes']) .'>'. check_plain($element['#value']) .'</textarea>', $element['#description'], $element['#id'], $element['#required'], form_get_error($element));
+  return theme('form_element', $element['#title'], $pre . '<textarea'. $cols .' rows="'. $element['#rows'] .'" name="'. $element['#name'] .'" id="' . $element['#id'] .'" class="'. _form_get_class('textarea', $element['#required'], form_get_error($element)) .'"'. drupal_attributes($element['#attributes']) .'>'. check_plain($element['#value']) .'</textarea>' . $post, $element['#description'], $element['#id'], $element['#required'], form_get_error($element));
 }
 
 /**
