[gitg] Reflow commit messages in diff view



commit d4d987fde36f7a11a7cfebc6df948f81139df27b
Author: Jesse van den Kieboom <jessevdk gnome org>
Date:   Sat Jul 12 10:52:59 2014 +0200

    Reflow commit messages in diff view
    
    This aims to reformat commit messages in the diff view to look better
    when presented in a GUI such as gitg. Hard-wrapping is undone so that
    lines are soft-wrapped naturally in the available space, while trying
    to preserve intentional formatting such as lists, indentation and
    paragraphs.

 libgitg/resources/diff-view.js |   33 ++++++++++++++++++++++++++++++++-
 1 files changed, 32 insertions(+), 1 deletions(-)
---
diff --git a/libgitg/resources/diff-view.js b/libgitg/resources/diff-view.js
index ac90a0f..f2ea5e4 100644
--- a/libgitg/resources/diff-view.js
+++ b/libgitg/resources/diff-view.js
@@ -105,6 +105,37 @@ function write_avatar(avatar, commit)
        loader.attr('src', gravatar);
 }
 
+function prettify_message(message)
+{
+       var lines = message.split(/\n/);
+       var ret = '';
+       var isempty = false;
+
+       for (var i = 0; i < lines.length; i++)
+       {
+               var l = lines[i];
+               l = l.trimRight();
+
+               if (isempty && l.length != 0)
+               {
+                       ret += '\n\n';
+               }
+               else if (l.match(/^[^a-zA-Z_]/))
+               {
+                       ret += '\n';
+               }
+               else if (l.length != 0 && ret.length != 0)
+               {
+                       ret += ' ';
+               }
+
+               ret += l;
+               isempty = (l.length == 0);
+       }
+
+       return ret;
+}
+
 function write_commit(content, commit)
 {
        var elems = get_commit_elements(content);
@@ -118,7 +149,7 @@ function write_commit(content, commit)
        elems.date.text(commit.author.time);
 
        // Message
-       elems.message.text(commit.message);
+       elems.message.text(prettify_message(commit.message));
 
        // Sha1
        elems.sha1.text(commit.id);


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]