From d4d987fde36f7a11a7cfebc6df948f81139df27b Mon Sep 17 00:00:00 2001 From: Jesse van den Kieboom Date: Sat, 12 Jul 2014 10:52:59 +0200 Subject: [PATCH] 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 file changed, 32 insertions(+), 1 deletion(-) diff --git a/libgitg/resources/diff-view.js b/libgitg/resources/diff-view.js index ac90a0fe..f2ea5e48 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);