Skip to content

Commit

Permalink
Minor fixes for last change
Browse files Browse the repository at this point in the history
* test/manual/etags/ETAGS.good_1:
* test/manual/etags/ETAGS.good_2:
* test/manual/etags/ETAGS.good_3:
* test/manual/etags/ETAGS.good_4:
* test/manual/etags/ETAGS.good_5:
* test/manual/etags/ETAGS.good_6: Adapt to added Mercury support.

* lib-src/etags.c (find_entries, test_objc_is_mercury):
* etc/NEWS: Fix punctuation and typos in last change.
  • Loading branch information
Eli-Zaretskii committed Jun 6, 2021
1 parent 5a8a5a9 commit 6ef5760
Show file tree
Hide file tree
Showing 8 changed files with 891 additions and 17 deletions.
12 changes: 8 additions & 4 deletions etc/NEWS
Original file line number Diff line number Diff line change
Expand Up @@ -112,11 +112,15 @@ filters.
* Changes in Emacs 28.1

+++
** Etags support for the Mercury programming language (https://mercurylang.org).
** Etags now supports the Mercury programming language.
See https://mercurylang.org.

+++
** Etags command line option --declarations now has Mercury-specific behavior.
All Mercury declarations are tagged by default.
For compatibility with Prolog etags support, predicates and functions appearing
first in clauses will also be tagged if etags is run with '--declarations'.
All Mercury declarations are tagged by default. However, for
compatibility with 'etags' support for Prolog, predicates and
functions appearing first in clauses will also be tagged if 'etags' is
invoked with the '--declarations' command-line option.

+++
** New command 'font-lock-update', bound to 'C-x x f'.
Expand Down
26 changes: 13 additions & 13 deletions lib-src/etags.c
Original file line number Diff line number Diff line change
Expand Up @@ -1810,7 +1810,7 @@ find_entries (FILE *inf)
{
lang = get_language_from_filename (curfdp->infname, true);

/* Disambiguate file names between Objc and Mercury */
/* Disambiguate file names between Objc and Mercury. */
if (lang != NULL && strcmp (lang->name, "objc") == 0)
test_objc_is_mercury (curfdp->infname, &lang);

Expand Down Expand Up @@ -6105,7 +6105,7 @@ prolog_atom (char *s, size_t pos)
/*
* Support for Mercury
*
* Assumes that the declarationa starts at column 0.
* Assumes that the declarations start at column 0.
* Original code by Sunichirou Sugou (1989) for Prolog.
* Rewritten by Anders Lindgren (1996) for Prolog.
* Adapted by Fabrice Nicol (2021) for Mercury.
Expand All @@ -6121,11 +6121,11 @@ static bool is_mercury_quantifier = false;
static bool is_mercury_declaration = false;

/*
* Objective-C and Mercury have identical file extension .m
* Objective-C and Mercury have identical file extension .m.
* To disambiguate between Objective C and Mercury, parse file
* with the following heuristics hook:
* - if line starts with :- choose Mercury unconditionally,
* - if line starts with #, @, choose Objective-C,
* - if line starts with :-, choose Mercury unconditionally;
* - if line starts with #, @, choose Objective-C;
* - otherwise compute the following ratio:
*
* r = (number of lines with :-
Expand All @@ -6137,12 +6137,12 @@ static bool is_mercury_declaration = false;
*
* If r > mercury_heuristics_ratio, choose Mercury.
* Experimental tests show that a possibly optimal default value for
* this floor value is around 0.5. This is the default value for
* this floor value is around 0.5. This is the default value for
* MERCURY_HEURISTICS_RATIO, defined in the first lines of this file.
* The closer r to 0.5, the closer the source code to pure Prolog.
* The closer r is to 0.5, the closer the source code to pure Prolog.
* Idiomatic Mercury is scored either with r = 1.0 or higher.
* Objective-C is scored with r = 0.0. When this fails, the r-score never
* rose above 0.1 in Objective-C tests.
* Objective-C is scored with r = 0.0. When this fails, the r-score
* never rose above 0.1 in Objective-C tests.
*/

static void
Expand Down Expand Up @@ -6183,7 +6183,7 @@ test_objc_is_mercury (char *this_file, language **lang)
found_dot = ! commented_line;
only_space_before = false;
break;
case '%': /* More frequent in Mercury. May be modulo in Obj.-C. */
case '%': /* More frequent in Mercury. May be modulo in Obj.-C. */
if (! commented_line)
{
++percentage_signs;
Expand Down Expand Up @@ -6228,7 +6228,7 @@ test_objc_is_mercury (char *this_file, language **lang)
}
else
{
/* p :- q. Frequent in Mercury.
/* p :- q. Frequent in Mercury.
Rare or in quoted exprs in Obj.-C. */
if (c == '-' && ! commented_line)
++rule_signs;
Expand All @@ -6253,7 +6253,7 @@ test_objc_is_mercury (char *this_file, language **lang)
}
}

/* Fallback heuristic test. Not failsafe but errless in pratice. */
/* Fallback heuristic test. Not failsafe but errless in pratice. */
ratio = ((float) rule_signs + percentage_signs + mercury_dots) / lines;

out:
Expand All @@ -6262,7 +6262,7 @@ test_objc_is_mercury (char *this_file, language **lang)

if (ratio > mercury_heuristics_ratio)
{
/* Change the language from Objective C to Mercury. */
/* Change the language from Objective-C to Mercury. */
static language lang0 = { "mercury", Mercury_help, Mercury_functions,
Mercury_suffixes };
*lang = &lang0;
Expand Down
116 changes: 116 additions & 0 deletions test/manual/etags/ETAGS.good_1
Original file line number Diff line number Diff line change
Expand Up @@ -3881,6 +3881,122 @@ Section\xreftie'char\the\appendixno.\the\secno.\the\subsecno.\the\subsubsecno %
\global\def={=3307,107500
\def\normalbackslash{\normalbackslash3321,107882

merc-src/accumulator.m,4275
:- module transform_hlds.accumulator145,5333
:- import_module hlds148,5386
:- import_module hlds.hlds_module149,5409
:- import_module hlds.hlds_pred150,5444
:- import_module univ152,5478
:- pred accu_transform_proc(159,5793
:- import_module hlds.assertion168,6135
:- import_module hlds.goal_util169,6168
:- import_module hlds.hlds_error_util170,6201
:- import_module hlds.hlds_goal171,6240
:- import_module hlds.hlds_out172,6273
:- import_module hlds.hlds_out.hlds_out_util173,6305
:- import_module hlds.hlds_promise174,6351
:- import_module hlds.instmap175,6387
:- import_module hlds.pred_table176,6418
:- import_module hlds.quantification177,6452
:- import_module hlds.status178,6490
:- import_module hlds.vartypes179,6520
:- import_module libs180,6552
:- import_module libs.globals181,6575
:- import_module libs.optimization_options182,6606
:- import_module libs.options183,6650
:- import_module mdbcomp184,6681
:- import_module mdbcomp.sym_name185,6707
:- import_module parse_tree186,6742
:- import_module parse_tree.error_util187,6771
:- import_module parse_tree.prog_data188,6811
:- import_module parse_tree.prog_mode189,6850
:- import_module parse_tree.prog_util190,6889
:- import_module parse_tree.set_of_var191,6928
:- import_module transform_hlds.goal_store192,6968
:- import_module assoc_list194,7013
:- import_module bool195,7042
:- import_module int196,7065
:- import_module io197,7087
:- import_module list198,7108
:- import_module map199,7131
:- import_module maybe200,7153
:- import_module pair201,7177
:- import_module require202,7200
:- import_module set203,7226
:- import_module solutions204,7248
:- import_module string205,7276
:- import_module term206,7301
:- import_module varset207,7324
:- type top_level213,7499
:- type accu_goal_id225,7900
:- type accu_case228,7964
:- type accu_goal_store234,8091
:- type accu_subst238,8216
:- type accu_warning240,8264
:- pred generate_warnings(334,12550
:- pred generate_warning(342,12895
:- pred should_attempt_accu_transform(365,13886
:- pred should_attempt_accu_transform_2(398,15406
:- pred accu_standardize(440,17390
:- pred identify_goal_type(465,18169
:- pred is_recursive_case(549,21175
:- type store_info560,21713
:- func initialize_goal_store(570,22060
:- pred accu_store(580,22421
:- pred identify_recursive_calls(601,23288
:- pred identify_out_and_out_prime(626,24396
:- type accu_sets676,26425
:- pred accu_stage1(689,26977
:- pred accu_stage1_2(727,28347
:- pred accu_sets_init(781,30557
:- func set_upto(796,30984
:- pred accu_before(812,31498
:- pred accu_assoc(835,32477
:- pred accu_construct(862,33712
:- pred accu_construct_assoc(896,35307
:- pred accu_update(938,37069
:- pred member_lessthan_goalid(964,38219
:- type accu_assoc975,38652
:- pred accu_is_associative(986,39138
:- pred associativity_assertion(1014,40263
:- pred commutativity_assertion(1037,41242
:- pred accu_is_update(1057,41952
:- pred is_associative_construction(1078,42802
:- type accu_substs1095,43480
:- type accu_base1103,43744
:- pred accu_stage2(1124,44605
:- pred accu_substs_init(1179,46957
:- pred acc_var_subst_init(1194,47573
:- pred create_new_var(1207,48147
:- pred accu_process_assoc_set(1223,48862
:- pred accu_has_heuristic(1297,52081
:- pred accu_heuristic(1304,52336
:- pred accu_process_update_set(1318,52906
:- pred accu_divide_base_case(1380,55844
:- pred accu_related(1412,57146
:- pred lookup_call(1449,58601
:- pred accu_stage3(1470,59432
:- pred acc_proc_info(1508,61326
:- pred acc_pred_info(1556,63449
:- pred accu_create_goal(1600,65285
:- func create_acc_call(1621,66400
:- pred create_orig_goal(1634,66987
:- pred create_acc_goal(1662,68157
:- func create_new_orig_recursive_goals(1709,70225
:- func create_new_recursive_goals(1723,70918
:- func create_new_base_goals(1738,71717
:- pred acc_unification(1749,72156
:- pred accu_top_level(1766,72896
:- pred update_accumulator_pred(1856,76290
:- func accu_rename(1876,77253
:- func base_case_ids(1889,77784
:- func base_case_ids_set(1898,78048
:- func accu_goal_list(1905,78269
:- pred calculate_goal_info(1916,78680
:- func chain_subst(1932,79319
:- pred chain_subst_2(1938,79482
:- end_module transform_hlds.accumulator1953,79939

c-src/c.c,76
T f(1,0
}T i;2,14
Expand Down
Loading

0 comments on commit 6ef5760

Please sign in to comment.