diff --git content-reference.php content-reference.php
index 02cb0b5..ec2bd95 100644
--- content-reference.php
+++ content-reference.php
@@ -114,6 +114,17 @@ if ( ! empty( $since ) ) : ?>
 		<?php endif;
 	endif; ?>
 
+	<?php if ( 'wp-parser-function' === get_post_type() || 'wp-parser-method' === get_post_type() ) : ?>
+		<hr />
+		<section class="source-content">
+			<h2><?php _e( 'Source', 'wporg' ); ?></h2>
+			<div class="source-code-container">
+				<pre class="brush: php; toolbar: false;"><?php echo esc_html( get_source_code() ); ?></pre>
+			</div>
+			<p><a href="#" class="show-complete-source"><?php _e( 'View full source code&hellip;', 'wporg-developer' ); ?></a></p>
+		</section>
+	<?php endif; ?>
+
 <?php endif; ?>
 
 </article>
diff --git functions.php functions.php
index 289f45d..38abd10 100644
--- functions.php
+++ functions.php
@@ -342,6 +342,13 @@ function theme_scripts_styles() {
 	wp_enqueue_style( 'wp-dev-sass-compiled', get_template_directory_uri() . '/stylesheets/main.css', array( 'wporg-developer-style' ), '20140425' );
 	wp_enqueue_script( 'wporg-developer-navigation', get_template_directory_uri() . '/js/navigation.js', array(), '20120206', true );
 	wp_enqueue_script( 'wporg-developer-skip-link-focus-fix', get_template_directory_uri() . '/js/skip-link-focus-fix.js', array(), '20130115', true );
+
+	if ( 'wp-parser-function' === get_post_type() || 'wp-parser-method' === get_post_type() ) {
+		wp_enqueue_script( 'wporg-developer-function-reference', get_template_directory_uri() . '/js/function-reference.js', array( 'jquery', 'syntaxhighlighter-core', 'syntaxhighlighter-brush-php' ), '20140515', true );
+		wp_enqueue_style( 'syntaxhighlighter-core' );
+		wp_enqueue_style( 'syntaxhighlighter-theme-default' );
+	}
+
 	if ( is_singular() && comments_open() && get_option( 'thread_comments' ) ) {
 		wp_enqueue_script( 'comment-reply' );
 	}
diff --git inc/template-tags.php inc/template-tags.php
index 871d488..4c778c9 100755
--- inc/template-tags.php
+++ inc/template-tags.php
@@ -567,4 +567,34 @@ namespace DevHub {
 		return strcmp( $a->post_name, $b->post_name );
 	}
 
+	/**
+	 * Retrieve source code for a function
+	 *
+	 * @param int $post_id
+	 *
+	 * @return string The sourc
+	 */
+	function get_source_code( $post_id = null ) {
+
+		if ( empty( $post_id ) ) {
+			$post_id = get_the_ID();
+		}
+
+		// Get the total file sourcecode.
+		$source_file = get_source_file( $post_id );
+
+		// Put the total source code in an array.
+		$total_source_code = file_get_contents( ABSPATH . $source_file );
+		$total_source_code = explode( "\n", $total_source_code );
+
+		// Get the start and end lines.
+		$start_line = get_post_meta( $post_id, '_wp-parser_line_num', true ) - 1;
+		$end_line =   get_post_meta( $post_id, '_wp-parser_end_line_num', true );
+
+		// Get the correct source code.
+		$source_code = array_slice( $total_source_code, $start_line, $end_line - $start_line );
+
+		return implode( "\n", $source_code );
+	}
+
 }
\ No newline at end of file
diff --git js/function-reference.js js/function-reference.js
new file mode 100644
index 0000000..01e7542
--- /dev/null
+++ js/function-reference.js
@@ -0,0 +1,44 @@
+/**
+ * function-reference.js
+ *
+ * Handles all interactivity on the single function page
+ */
+( function( $ ) {
+	var $sourceContent, $sourceCodeContainer, $sourceCodeTable, $showCompleteSource;
+
+	function showCompleteSource( e ) {
+		e.preventDefault();
+
+		var heightGoal = $sourceCodeTable.height() + 17;
+
+		$sourceCodeContainer.animate( { height: heightGoal + 'px' } );
+
+		$showCompleteSource.hide();
+
+	}
+
+	function onLoad() {
+
+		// We only expect one source-content per document
+		$sourceContent = $( '.source-content' );
+		$sourceCodeContainer = $( '.source-code-container' );
+
+		SyntaxHighlighter.highlight();
+
+		$sourceCodeTable = $sourceContent.find( 'table' );
+
+		if ( 186 < $sourceCodeTable.height() ) {
+
+			// Do this with javascript so javascript-less can enjoy the total sourcecode
+			// 1em (margin) + 10 * 17px. Lines are 1.1em which rounds to 17px: calc( 1em + 17px * 10 ).
+			$sourceCodeContainer.css( { height: '186px' } );
+
+			$showCompleteSource = $( '.show-complete-source' );
+
+			$showCompleteSource.show();
+			$showCompleteSource.on( 'click', showCompleteSource );
+		}
+	}
+
+	$( onLoad );
+} )( jQuery );
diff --git scss/main.scss scss/main.scss
index 585d30c..0627bf0 100644
--- scss/main.scss
+++ scss/main.scss
@@ -792,6 +792,15 @@
 			padding: 20px;
 		}
 	}
+
+	.source-code-container {
+		overflow: hidden;
+	}
+
+	.show-complete-source {
+		display: none;
+	}
+
 	.loop-pagination {
 		text-align: center;
 		font-size: 18px;
diff --git stylesheets/main.css stylesheets/main.css
index 3d9eae4..29b6822 100644
--- stylesheets/main.css
+++ stylesheets/main.css
@@ -1015,6 +1015,12 @@ input {
   border-radius: 5px;
   padding: 20px;
 }
+.devhub-wrap .source-code-container {
+  overflow: hidden;
+}
+.devhub-wrap .show-complete-source {
+  display: none;
+}
 .devhub-wrap .loop-pagination {
   text-align: center;
   font-size: 18px;
