2006-10-10 [wwp] 2.5.3cvs29
authorTristan Chabredier <wwp@claws-mail.org>
Tue, 10 Oct 2006 09:50:33 +0000 (09:50 +0000)
committerTristan Chabredier <wwp@claws-mail.org>
Tue, 10 Oct 2006 09:50:33 +0000 (09:50 +0000)
* src/compose.c
* src/prefs_template.c
* src/quote_fmt.c
* src/quote_fmt.h
* src/quote_fmt_lex.l
* src/quote_fmt_parse.y
Extend the quote parser a bit: allow to get access to
basic (composing) account info.

ChangeLog
PATCHSETS
configure.ac
src/compose.c
src/prefs_template.c
src/quote_fmt.c
src/quote_fmt.h
src/quote_fmt_lex.l
src/quote_fmt_parse.y

index 491ecf047a4fecbdd6a0f089e829f3b969b59993..576f0e62acf12ab0d2b3d965a880dcad04017f06 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,14 @@
+2006-10-10 [wwp]       2.5.3cvs29
+
+       * src/compose.c
+       * src/prefs_template.c
+       * src/quote_fmt.c
+       * src/quote_fmt.h
+       * src/quote_fmt_lex.l
+       * src/quote_fmt_parse.y
+               Extend the quote parser a bit: allow to get access to
+               basic (composing) account info.
+
 2006-10-10 [colin]     2.5.3cvs28
 
        * src/procheader.c
index 7bd38318d11ca5b24435ee09d65d33dfc9f43881..5fb4e64e5716182d9ee4c6cc1f08a174d5d9b9ca 100644 (file)
--- a/PATCHSETS
+++ b/PATCHSETS
 ( cvs diff -u -r 1.654.2.2031 -r 1.654.2.2032 configure.ac;  cvs diff -u -r 1.16.2.45 -r 1.16.2.46 src/msgcache.c;  cvs diff -u -r 1.10.2.23 -r 1.10.2.24 src/prefs_gtk.c;  ) > 2.5.3cvs26.patchset
 ( cvs diff -u -r 1.115.2.109 -r 1.115.2.110 src/main.c;  cvs diff -u -r 1.10.2.24 -r 1.10.2.25 src/prefs_gtk.c;  cvs diff -u -r 1.1.2.3 -r 1.1.2.4 src/plugins/pgpcore/pgp_viewer.c;  cvs diff -u -r 1.1.2.29 -r 1.1.2.30 src/plugins/pgpcore/sgpgme.c;  ) > 2.5.3cvs27.patchset
 ( cvs diff -u -r 1.47.2.34 -r 1.47.2.35 src/procheader.c;  ) > 2.5.3cvs28.patchset
+( cvs diff -u -r 1.382.2.313 -r 1.382.2.314 src/compose.c;  cvs diff -u -r 1.12.2.31 -r 1.12.2.32 src/prefs_template.c;  cvs diff -u -r 1.8.2.9 -r 1.8.2.10 src/quote_fmt.c;  cvs diff -u -r 1.5.12.5 -r 1.5.12.6 src/quote_fmt.h;  cvs diff -u -r 1.8.2.5 -r 1.8.2.6 src/quote_fmt_lex.l;  cvs diff -u -r 1.22.2.23 -r 1.22.2.24 src/quote_fmt_parse.y;  ) > 2.5.3cvs29.patchset
index 21c21fad18aae49f05a1e14c0c32d5f4cec055b0..c24077b21f2e4dd72ad53e2a895ef942f3ebfdee 100644 (file)
@@ -11,7 +11,7 @@ MINOR_VERSION=5
 MICRO_VERSION=3
 INTERFACE_AGE=0
 BINARY_AGE=0
-EXTRA_VERSION=28
+EXTRA_VERSION=29
 EXTRA_RELEASE=
 EXTRA_GTK2_VERSION=
 
index b37aca5545168c129ea6fa838bec1ea0b5f997e0..68928ee2b265a56131560ac9af99f2e153d5f867 100644 (file)
@@ -2371,7 +2371,7 @@ static gchar *compose_quote_fmt(Compose *compose, MsgInfo *msginfo,
                msginfo = &dummyinfo;
 
        if (qmark != NULL) {
-               quote_fmt_init(msginfo, NULL, NULL, FALSE);
+               quote_fmt_init(msginfo, NULL, NULL, FALSE, compose->account);
                quote_fmt_scan_string(qmark);
                quote_fmt_parse();
 
@@ -2387,7 +2387,7 @@ static gchar *compose_quote_fmt(Compose *compose, MsgInfo *msginfo,
                        && trimmed_body[0]=='\n')
                        *trimmed_body++;
 
-               quote_fmt_init(msginfo, quote_str, trimmed_body, FALSE);
+               quote_fmt_init(msginfo, quote_str, trimmed_body, FALSE, compose->account);
                quote_fmt_scan_string(fmt);
                quote_fmt_parse();
 
@@ -6643,7 +6643,7 @@ void compose_template_apply_fields(Compose *compose, Template *tmpl)
                msginfo = &dummyinfo;
 
        if (tmpl->to && *tmpl->to != '\0') {
-               quote_fmt_init(msginfo, NULL, NULL, FALSE);
+               quote_fmt_init(msginfo, NULL, NULL, FALSE, compose->account);
                quote_fmt_scan_string(tmpl->to);
                quote_fmt_parse();
 
@@ -6656,7 +6656,7 @@ void compose_template_apply_fields(Compose *compose, Template *tmpl)
        }
 
        if (tmpl->cc && *tmpl->cc != '\0') {
-               quote_fmt_init(msginfo, NULL, NULL, FALSE);
+               quote_fmt_init(msginfo, NULL, NULL, FALSE, compose->account);
                quote_fmt_scan_string(tmpl->cc);
                quote_fmt_parse();
 
@@ -6669,7 +6669,7 @@ void compose_template_apply_fields(Compose *compose, Template *tmpl)
        }
 
        if (tmpl->bcc && *tmpl->bcc != '\0') {
-               quote_fmt_init(msginfo, NULL, NULL, FALSE);
+               quote_fmt_init(msginfo, NULL, NULL, FALSE, compose->account);
                quote_fmt_scan_string(tmpl->bcc);
                quote_fmt_parse();
 
@@ -6683,7 +6683,7 @@ void compose_template_apply_fields(Compose *compose, Template *tmpl)
 
        /* process the subject */
        if (tmpl->subject && *tmpl->subject != '\0') {
-               quote_fmt_init(msginfo, NULL, NULL, FALSE);
+               quote_fmt_init(msginfo, NULL, NULL, FALSE, compose->account);
                quote_fmt_scan_string(tmpl->subject);
                quote_fmt_parse();
 
index d792fc3fb1c943b5fe142c2583e631dd603f1098..7953f55b118bc189f84b0c89d3dba471224baf09 100644 (file)
@@ -508,7 +508,7 @@ static gboolean prefs_template_list_view_set_row(GtkTreeIter *row)
                MsgInfo dummyinfo;
 
                memset(&dummyinfo, 0, sizeof(MsgInfo));
-               quote_fmt_init(&dummyinfo, NULL, NULL, TRUE);
+               quote_fmt_init(&dummyinfo, NULL, NULL, TRUE, NULL);
                quote_fmt_scan_string(value);
                quote_fmt_parse();
                parsed_buf = quote_fmt_get_buffer();
index 6a2df4d46158acfe69efccef908ebd9904b8b78d..99ba8f58764bbd7562b64f6994f903b9b9708ad4 100644 (file)
@@ -55,6 +55,10 @@ static gchar *quote_desc_strings[] = {
        "%m",           N_("message body without signature"), /* message with no signature */
        "%q",           N_("quoted message body without signature"), /* quoted message with no signature */
        "%X",           N_("cursor position"), /* X marks the cursor spot */
+       "%af",          N_("compose account: full name"), /* full name in compose account */
+       "%am",          N_("compose account: mail address"), /* mail address in compose account */
+       "%an",          N_("compose account name itself"), /* compose account name itself */
+       "%ao",          N_("compose account: organization"), /* organization in compose account */
        "\\%",          N_("literal %"),
        "\\\\",         N_("literal backslash"),
        "\\?",          N_("literal question mark"),
@@ -65,8 +69,8 @@ static gchar *quote_desc_strings[] = {
        "\\t",          N_("tab"),
        "\\n",          N_("linefeed"),
        "",             NULL,
-       "?x{expr}\n",   N_("insert expr if x is set\n(where x is one of the dfNFLIstcnri characters)"),
-       "!x{expr}\n",   N_("insert expr if x is not set\n(where x is one of the dfNFLIstcnri characters)"),
+       "?x{expr}\n",   N_("insert expr if x is set\n(where x is one of the dfNFLIstcnri characters or af, ao"),
+       "!x{expr}\n",   N_("insert expr if x is not set\n(where x is one of the dfNFLIstcnri characters or af, ao)"),
        "|f{sub_expr}\n",       N_("insert file:\nsub_expr is evaluated as a filename to insert"), /* insert file */
        "|p{sub_expr}\n\n",     N_("insert program output:\nsub_expr is evaluated as a command-line to get\nthe output from"), /* insert program output */
        "|i{sub_expr}\n\n",     N_("insert user input:\nsub_expr is a variable to be replaced by\nuser-entered text"), /* insert user input */
index 31a747b8374084e98263b551f4326e716fea70b8..26d9b6a38b4bbd69f09bf2c3e8c5ba027f37c19d 100644 (file)
@@ -8,7 +8,8 @@ void quote_fmt_quote_description(void);
 
 gchar *quote_fmt_get_buffer(void);
 void quote_fmt_init(MsgInfo *info, const gchar *my_quote_str,
-                   const gchar *my_body, gboolean my_dry_run);
+                   const gchar *my_body, gboolean my_dry_run,
+                       PrefsAccount *account);
 gint quote_fmtparse(void);
 void quote_fmt_scan_string(const gchar *str);
 void quote_fmt_reset_vartable(void);
index cabf1f929add2d123120b285dbdde9500a6e68cf..4631f40a853940b6d9d448cff29d5a395bbe5e82 100644 (file)
@@ -67,6 +67,10 @@ int quote_fmt_firsttime = 1;
 <S_NORMAL>"%t" /* to */ return SHOW_TO;
 <S_NORMAL>"%Q" /* quoted message */ return SHOW_QUOTED_MESSAGE;
 <S_NORMAL>"%q" /* quoted message with no signature */ return SHOW_QUOTED_MESSAGE_NO_SIGNATURE;
+<S_NORMAL>"%af" /* full name in compose account */ return SHOW_ACCOUNT_FULL_NAME;
+<S_NORMAL>"%am" /* mail address in compose account */ return SHOW_ACCOUNT_MAIL_ADDRESS;
+<S_NORMAL>"%an" /* compose account name itself */ return SHOW_ACCOUNT_NAME;
+<S_NORMAL>"%ao" /* organization in compose account */ return SHOW_ACCOUNT_ORGANIZATION;
 "\\\%" /* % */ return SHOW_PERCENT;
 "\\\\" /* \ */ return SHOW_BACKSLASH;
 "\\t"|"\t" /* tab */ return SHOW_TAB;
@@ -85,6 +89,8 @@ int quote_fmt_firsttime = 1;
 "?n" /* query newsgroups */ return QUERY_NEWSGROUPS;
 "?i" /* query message-id */ return QUERY_MESSAGEID;
 "?r" /* query references */ return QUERY_REFERENCES;
+"?af" /* query full name in compose account */ return QUERY_ACCOUNT_FULL_NAME;
+"?ao" /* query organization in compose account */ return QUERY_ACCOUNT_ORGANIZATION;
 "|f" /* insert file */ return INSERT_FILE;
 "|p" /* insert program output */ return INSERT_PROGRAMOUTPUT;
 "|i" /* insert user input */ return INSERT_USERINPUT;
@@ -97,6 +103,8 @@ int quote_fmt_firsttime = 1;
 "!n" /* query not(newsgroups) */ return QUERY_NOT_NEWSGROUPS;
 "!i" /* query not(message-id) */ return QUERY_NOT_MESSAGEID;
 "!r" /* query not(references) */ return QUERY_NOT_REFERENCES;
+"!af" /* query not(full name in compose account) */ return QUERY_NOT_ACCOUNT_FULL_NAME;
+"!ao" /* query not(organization in compose account) */ return QUERY_NOT_ACCOUNT_ORGANIZATION;
 <S_DATE>"{" return OPARENT;
 <S_DATE>"}" { BEGIN S_NORMAL; return CPARENT; }
 <S_NORMAL>"{" return OPARENT;
index 2fdc01937af19ffdd7641dd2b0cfc3d2200b1565..b0c4797066af4eb7643972f9b87f7408ee8e9a55 100644 (file)
@@ -45,6 +45,7 @@ bison -p quote_fmt quote_fmt.y
 int yylex(void);
 
 static MsgInfo *msginfo = NULL;
+static PrefsAccount *account = NULL;
 static gboolean *visible = NULL;
 static gboolean dry_run = FALSE;
 static gint maxsize = 0;
@@ -155,11 +156,13 @@ void quote_fmt_reset_vartable(void)
 }
 
 void quote_fmt_init(MsgInfo *info, const gchar *my_quote_str,
-                   const gchar *my_body, gboolean my_dry_run)
+                   const gchar *my_body, gboolean my_dry_run,
+                       PrefsAccount *compose_account)
 {
        quote_str = my_quote_str;
        body = my_body;
        msginfo = info;
+       account = compose_account;
        dry_run = my_dry_run;
        stacksize = 0;
        add_visibility(TRUE);
@@ -479,6 +482,7 @@ static void quote_fmt_insert_user_input(const gchar *varname)
        char str[256];
 }
 
+/* tokens SHOW */
 %token SHOW_NEWSGROUPS
 %token SHOW_DATE SHOW_FROM SHOW_FULLNAME SHOW_FIRST_NAME SHOW_LAST_NAME
 %token SHOW_SENDER_INITIAL SHOW_SUBJECT SHOW_TO SHOW_MESSAGEID
@@ -486,12 +490,18 @@ static void quote_fmt_insert_user_input(const gchar *varname)
 %token SHOW_QUOTED_MESSAGE SHOW_BACKSLASH SHOW_TAB
 %token SHOW_QUOTED_MESSAGE_NO_SIGNATURE SHOW_MESSAGE_NO_SIGNATURE
 %token SHOW_EOL SHOW_QUESTION_MARK SHOW_EXCLAMATION_MARK SHOW_PIPE SHOW_OPARENT SHOW_CPARENT
+%token SHOW_ACCOUNT_FULL_NAME SHOW_ACCOUNT_MAIL_ADDRESS SHOW_ACCOUNT_NAME SHOW_ACCOUNT_ORGANIZATION
+/* tokens QUERY */
 %token QUERY_DATE QUERY_FROM
 %token QUERY_FULLNAME QUERY_SUBJECT QUERY_TO QUERY_NEWSGROUPS
 %token QUERY_MESSAGEID QUERY_CC QUERY_REFERENCES
+%token QUERY_ACCOUNT_FULL_NAME QUERY_ACCOUNT_ORGANIZATION
+/* tokens QUERY_NOT */
 %token QUERY_NOT_DATE QUERY_NOT_FROM
 %token QUERY_NOT_FULLNAME QUERY_NOT_SUBJECT QUERY_NOT_TO QUERY_NOT_NEWSGROUPS
 %token QUERY_NOT_MESSAGEID QUERY_NOT_CC QUERY_NOT_REFERENCES
+%token QUERY_NOT_ACCOUNT_FULL_NAME QUERY_NOT_ACCOUNT_ORGANIZATION
+/* other tokens */
 %token INSERT_FILE INSERT_PROGRAMOUTPUT INSERT_USERINPUT
 %token OPARENT CPARENT
 %token CHARACTER
@@ -642,6 +652,26 @@ special:
        {
                quote_fmt_show_msg(msginfo, body, TRUE, FALSE, quote_str);
        }
+       | SHOW_ACCOUNT_FULL_NAME
+       {
+               if (account && account->name)
+                       INSERT(account->name);
+       }
+       | SHOW_ACCOUNT_MAIL_ADDRESS
+       {
+               if (account && account->address)
+                       INSERT(account->address);
+       }
+       | SHOW_ACCOUNT_NAME
+       {
+               if (account && account->account_name)
+                       INSERT(account->account_name);
+       }
+       | SHOW_ACCOUNT_ORGANIZATION
+       {
+               if (account && account->organization)
+                       INSERT(account->organization);
+       }
        | SHOW_BACKSLASH
        {
                INSERT("\\");
@@ -756,6 +786,22 @@ query:
                add_visibility(found == TRUE);
        }
        OPARENT quote_fmt CPARENT
+       {
+               remove_visibility();
+       }
+       | QUERY_ACCOUNT_FULL_NAME
+       {
+               add_visibility(account != NULL && account->name != NULL);
+       }
+       OPARENT quote_fmt CPARENT
+       {
+               remove_visibility();
+       }
+       | QUERY_ACCOUNT_ORGANIZATION
+       {
+               add_visibility(account != NULL && account->organization != NULL);
+       }
+       OPARENT quote_fmt CPARENT
        {
                remove_visibility();
        };
@@ -837,6 +883,22 @@ query_not:
                add_visibility(found == FALSE);
        }
        OPARENT quote_fmt CPARENT
+       {
+               remove_visibility();
+       }
+       | QUERY_NOT_ACCOUNT_FULL_NAME
+       {
+               add_visibility(account == NULL || account->name == NULL);
+       }
+       OPARENT quote_fmt CPARENT
+       {
+               remove_visibility();
+       }
+       | QUERY_NOT_ACCOUNT_ORGANIZATION
+       {
+               add_visibility(account == NULL || account->organization == NULL);
+       }
+       OPARENT quote_fmt CPARENT
        {
                remove_visibility();
        };