List for cgit developers and users
 help / color / mirror / Atom feed
From: john at keeping.me.uk (John Keeping)
Subject: Commit _subject_ filter, everywhere
Date: Sat, 2 Dec 2017 12:49:16 +0000	[thread overview]
Message-ID: <20171202124916.GD2379@john.keeping.me.uk> (raw)
In-Reply-To: <CAEYzJUFW3THw19qThhaOGh28FariY=exUowkeW=pD=sm6ntqPQ@mail.gmail.com>

On Sat, Dec 02, 2017 at 01:33:28PM +0100, Bjjjrn Forsman wrote:
> On 2 December 2017 at 12:31, John Keeping <john at keeping.me.uk> wrote:
> > I was going to suggest introducing a new subject-filter which is used to
> > filter the commit subject wherever it is displayed, but there is a
> > subtlety which makes this more complicated in the summary, log and refs
> > pages than it is in the commit page.
> >
> > When we are showing a single-line summary of a commit, the subject is a
> > hyperlink so adding new content outside the existing subject is not
> > possible with the obvious filter implementation.
> >
> > One option would be to push the <a></a> tag generation down into the
> > filter, but I'd rather avoid that if possible.
> 
> Aha, I see.

After I wrote that I realised that for the existing commit-filter we
escape the content before writing to the filter.  So it might be
reasonable to pass the whole <a></a> tag through the filter.

That would make it easy for the filter to put extra content either
before or after the commit subject.  It also makes the filter
integration much simpler, for example in ui-log.c:

-- >8 --
diff --git a/ui-log.c b/ui-log.c
index 2d2bb31..f2a7852 100644
--- a/ui-log.c
+++ b/ui-log.c
@@ -234,8 +234,11 @@ static void print_commit(struct commit *commit, struct rev_info *revs)
 			strcpy(info->subject + i, wrap_symbol);
 		}
 	}
+	cgit_open_filter(ctx.repo->subject_filter,
+			 oid_to_hex(&commit->object.oid));
 	cgit_commit_link(info->subject, NULL, NULL, ctx.qry.head,
 			 oid_to_hex(&commit->object.oid), ctx.qry.vpath);
+	cgit_close_filter(ctx.repo->subject_filter);
 	show_commit_decorations(commit);
 	html("</td><td>");
 	cgit_open_filter(ctx.repo->email_filter, info->author_email, "log");
-- 8< --

> > What do you think about adding a "filter" which is called before the
> > commit subject is printed and allows outputting additional HTML content?
> > ("filter" is in quotes since there will not be any content copied
> > through the program.)
> 
> Sounds good to me. It covers my use case.
> 
> Perhaps this new "filter" should not have filter in its name.
> Suggestion: commit-prefix=.
> 
> Oh, and this new command must somehow receive the commit id from cgit.
> New environment variable?

We normally use arguments for this, which is all handled via the
cgit_open_filter() function.

I expect Lua filters may be preferred for this use case to avoid forking
50 child processes when displaying the log view.


  reply	other threads:[~2017-12-02 12:49 UTC|newest]

Thread overview: 8+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2017-11-29 21:10 
2017-12-02 11:31 ` john
2017-12-02 12:33   ` 
2017-12-02 12:49     ` john [this message]
2017-12-02 14:44       ` 
2017-12-02 17:10         ` john
2017-12-02 17:14           ` 
2017-12-02 19:00             ` 

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20171202124916.GD2379@john.keeping.me.uk \
    --to=cgit@lists.zx2c4.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).