diff --git a/includes/insert.inc b/includes/insert.inc
index 94caed9..048a096 100644
--- a/includes/insert.inc
+++ b/includes/insert.inc
@@ -11,7 +11,8 @@
 function insert_insert_styles() {
   $insert_styles = array();
   $insert_styles['auto'] = array('label' => t('Automatic'), 'weight' => -20);
-  $insert_styles['link'] = array('label' => t('Link to file'), 'weight' => -11);
+  $insert_styles['link'] = array('label' => t('Link to file'), 'weight' => -12);
+  $insert_styles['icon_link'] = array('label' => t('Link to file (with icon)'), 'weight' => -11);
   $insert_styles['image'] = array('label' => t('Original image'), 'weight' => -10);
   return $insert_styles;
 }
@@ -37,6 +38,9 @@ function insert_insert_content($item, $style, $widget) {
   if ($style_name == 'image') {
     return theme('insert_image', array('item' => $item, 'widget' => $widget));
   }
+  if ($style_name == 'icon_link') {
+    return theme('insert_icon_link', array('item' => $item, 'widget' => $widget));
+  }
   else {
     return theme('insert_link', array('item' => $item, 'widget' => $widget));
   }
@@ -63,3 +67,15 @@ function template_preprocess_insert_link(&$vars) {
   $vars['class'] = !empty($vars['widget']['settings']['insert_class']) ? $vars['widget']['settings']['insert_class'] : '';
   $vars['name'] = $vars['file']->filename;
 }
+
+/**
+ * Preprocess variables for the insert-icon-link.tpl.php file.
+ */
+function template_preprocess_insert_icon_link(&$vars) {
+  $vars['file'] = file_load($vars['item']['fid']);
+  $vars['url'] = insert_create_url($vars['file']->uri);
+  $vars['class'] = !empty($vars['widget']['settings']['insert_class']) ? $vars['widget']['settings']['insert_class'] : '';
+  $vars['name'] = $vars['file']->filename;
+  $vars['type'] = $vars['file']->filemime .'; length='. $vars['file']->filesize;
+  $vars['icon'] = theme('file_icon', array('file' => $vars['file']));
+}
diff --git a/insert.module b/insert.module
index 81be3b5..520f659 100644
--- a/insert.module
+++ b/insert.module
@@ -50,6 +50,11 @@ function insert_theme() {
       'template' => 'templates/insert-link',
       'file' => 'includes/insert.inc',
     ),
+    'insert_icon_link' => array(
+      'variables' => array('item' => NULL, 'widget' => NULL),
+      'template' => 'templates/insert-icon-link',
+      'file' => 'includes/insert.inc',
+    ),
 
     // Theme functions in includes/image.inc.
     'image_insert_image' => array(
diff --git a/templates/insert-icon-link.tpl.php b/templates/insert-icon-link.tpl.php
new file mode 100644
index 0000000..c45c6aa
--- /dev/null
+++ b/templates/insert-icon-link.tpl.php
@@ -0,0 +1,24 @@
+<?php
+
+/**
+ * @file
+ * Template file for generic links inserted via the Insert module.
+ *
+ * Available variables:
+ * - $item: The complete item being inserted.
+ * - $url: The URL to the item.
+ * - $class: A set of classes assigned to this item (if any).
+ * - $name: The file name of the item being inserted.
+ *
+ * Modules may provide placeholders that will be replaced by user-entered values
+ * when the item is inserted into a textarea. Generic links only support one
+ * placeholder.
+ *
+ * Available placeholders:
+ * - __description__: A description of the item.
+ * - __filename__: The file name.
+ * - __description_or_filename__: A description of the item if available,
+ *   otherwise use the file name.
+ */
+?>
+<span class="file"><?php print $icon; ?> <a href="<?php print $url ?>"<?php print $class ? ' class="' . $class . '"' : '' ?> title="__description__">__description_or_filename__</a></span>
