threads / patch / 14795

patchAdd Pascal/Delphi (.pas file) funcname pattern.

Subject: [PATCH] Add Pascal/Delphi (.pas file) funcname pattern.

## tl;dr

5 messages between Aug 1, 2008 and Aug 1, 2008. Diffs are folded; open one to read it.

replies: 4people: 3as markdown or json

Avery Pennarun· Aug 1, 2008, 19:45 UTC · lore

Finds classes, records, functions, procedures, and sections. Most lines need to start at the first column, or else there's no way to differentiate a procedure's definition from its declaration.

Signed-off-by: Avery Pennarun <apenwarr@gmail.com>
---

The Ruby funcname pattern patch inspired me. Although unlike him, I didn't check with anyone else for confirmation. How many Pascal programmers can there possibly be? :)

 diff.c |    4 ++++
 1 files changed, 4 insertions(+), 0 deletions(-)
Show changes to diff.c +4 −0
diff --git a/diff.c b/diff.c
index cbf2547..c73ba69 100644
--- a/diff.c
+++ b/diff.c
@@ -1380,6 +1380,10 @@ static struct builtin_funcname_pattern {
 			"^[ 	]*\\(\\([ 	]*"
 			"[A-Za-z_][A-Za-z_0-9]*\\)\\{2,\\}"
 			"[ 	]*([^;]*\\)$" },
+	{ "pas", "\\(^\\(procedure\\|function\\|constructor\\|"
+			"destructor\\|interface\\|implementation\\|"
+			"type|initialization|finalization\\).*$\\)"
+			"\\|\\(^.*=[ \t]*\\(class\\|record\\).*$\\)" },
 	{ "tex", "^\\(\\\\\\(sub\\)*section{.*\\)$" },
 };
 
-- 
1.6.0.rc1.34.g23b24.dirty
Junio C Hamano· Aug 1, 2008, 20:16 UTC · re: Avery Pennarun · lore

Re: [PATCH] Add Pascal/Delphi (.pas file) funcname pattern.

"Avery Pennarun" <apenwarr@gmail.com> writes:
Show 10 quoted lines
> Finds classes, records, functions, procedures, and sections.  Most lines
> need to start at the first column, or else there's no way to differentiate
> a procedure's definition from its declaration.
>
> Signed-off-by: Avery Pennarun <apenwarr@gmail.com>
> ---
>
> The Ruby funcname pattern patch inspired me.  Although unlike him, I didn't
> check with anyone else for confirmation.  How many Pascal programmers can
> there possibly be? :)
> +	{ "pas", "\\(^\\(procedure\\|function\\|constructor\\|"
> +			"destructor\\|interface\\|implementation\\|"
> +			"type|initialization|finalization\\).*$\\)"
> +			"\\|\\(^.*=[ \t]*\\(class\\|record\\).*$\\)" },

Is Delphi the only surviving Pascal? Why is the name "pas", not "pascal" or even "delphi-pascal"?

The keys are not file extensions ("ruby" example did the right thing by not saying "rb").

Avery Pennarun· Aug 1, 2008, 20:38 UTC · re: Junio C Hamano · lore

Re: [PATCH] Add Pascal/Delphi (.pas file) funcname pattern.

On 8/1/08, Junio C Hamano <gitster@pobox.com> wrote:
> Is Delphi the only surviving Pascal?  Why is the name "pas", not "pascal"
>  or even "delphi-pascal"?

No, but all surviving Pascals pretty much support the same syntax, so when I say Pascal/Delphi, I mean either one. And Delphi does use the .pas extension.

>  The keys are not file extensions ("ruby" example did the right thing by
>  not saying "rb").
Will fix.
Avery
Petr Baudis· Aug 1, 2008, 20:20 UTC · re: Avery Pennarun · lore

Re: [PATCH] Add Pascal/Delphi (.pas file) funcname pattern.

On Fri, Aug 01, 2008 at 03:45:15PM -0400, Avery Pennarun wrote:
Show 15 quoted lines
> diff --git a/diff.c b/diff.c
> index cbf2547..c73ba69 100644
> --- a/diff.c
> +++ b/diff.c
> @@ -1380,6 +1380,10 @@ static struct builtin_funcname_pattern {
>  			"^[ 	]*\\(\\([ 	]*"
>  			"[A-Za-z_][A-Za-z_0-9]*\\)\\{2,\\}"
>  			"[ 	]*([^;]*\\)$" },
> +	{ "pas", "\\(^\\(procedure\\|function\\|constructor\\|"
> +			"destructor\\|interface\\|implementation\\|"
> +			"type|initialization|finalization\\).*$\\)"
> +			"\\|\\(^.*=[ \t]*\\(class\\|record\\).*$\\)" },
>  	{ "tex", "^\\(\\\\\\(sub\\)*section{.*\\)$" },
>  };
>  

Wouldn't it be better to make the second pattern start on new line instead of the outer \(\|\)?

Why "type"?
-- 
		Petr "Pasky, but not writing in Pascal anymore!" Baudis
As in certain cults it is possible to kill a process if you know
its true name.  -- Ken Thompson and Dennis M. Ritchie
Avery Pennarun· Aug 1, 2008, 20:40 UTC · re: Petr Baudis · lore

Re: [PATCH] Add Pascal/Delphi (.pas file) funcname pattern.

On 8/1/08, Petr Baudis <pasky@suse.cz> wrote:
Show 8 quoted lines
> On Fri, Aug 01, 2008 at 03:45:15PM -0400, Avery Pennarun wrote:
>  > +     { "pas", "\\(^\\(procedure\\|function\\|constructor\\|"
>  > +                     "destructor\\|interface\\|implementation\\|"
>  > +                     "type|initialization|finalization\\).*$\\)"
>  > +                     "\\|\\(^.*=[ \t]*\\(class\\|record\\).*$\\)" },
>
> Wouldn't it be better to make the second pattern start on new line
>  instead of the outer \(\|\)?

I didn't even know that was possible, but suddenly I understand the "java" pattern a lot better. Thanks!

>  Why "type"?

Well, it's a subsection, but it's always followed by a class or record definition anyway, so I guess it makes more sense to omit it, now that you bring it up.

Have fun,
Avery

← back to recent threads