Skip to content

Commit c1a0591

Browse files
author
Roy Ward
committed
Merge branch 'master' into roy_dev
2 parents 863b985 + 4316181 commit c1a0591

26 files changed

+804
-340
lines changed

INSTALL.sh

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -601,7 +601,9 @@ check_metalog_in_path() {
601601
}
602602

603603
# Call the function to check and update PATH
604+
#set -x # before line 600
604605
check_metalog_in_path
606+
#set +x # after line 610
605607

606608
if [ -f ./scripts/lsp_server_prolog_install.sh ]; then
607609
# Ensure the script is executable

examples/games/TicTakToe.metta

Lines changed: 15 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -203,16 +203,20 @@
203203
;; Sanity tests (for development use only)
204204
;; ----------------------------------------
205205

206-
!(display-board (X X X 4 5 6 O O O)) ;; Should show X win on top row
207-
!(random-atom (1 2 3 4 5 6 7 8 9)) ;; Random move demo
208-
!(assertEqualToResult (random-atom (1)) (1)) ;; Edge case: only one option
209-
!(assertEqualToResult (random-atom ()) ()) ;; Edge case: no options
210-
!(assertEqualToResult (winner (O O 3 4 5 6 X X X)) (X)) ;; X wins in bottom row
211-
!(assertEqualToResult (available-moves (O O 3 4 5 6 X X X)) ((3 4 5 6)))
212-
!(assertEqualToResult (move-choices (O O 3 4 5 6 X X X)) (6 5 4 3)) ;; Should list in reverse
213-
!(assertEqualToResult (winning-move (O O 3 4 5 6 7 8 9) O) (3)) ;; O can win
214-
!(assertEqualToResult (winning-move (O O 3 4 5 6 7 8 9) X) ()) ;; X cannot win
215-
!(assertEqualToResult (winning-move (O O 3 4 5 6 7 X X) X) (7)) ;; X can win with 7
206+
207+
(= (my-tests)
208+
(
209+
(display-board (X X X 4 5 6 O O O)) ;; Should show X win on top row
210+
(random-atom (1 2 3 4 5 6 7 8 9)) ;; Random move demo
211+
(assertEqualToResult (random-atom (1)) (1)) ;; Edge case: only one option
212+
(assertEqualToResult (random-atom ()) ()) ;; Edge case: no options
213+
(assertEqualToResult (winner (O O 3 4 5 6 X X X)) (X)) ;; X wins in bottom row
214+
(assertEqualToResult (available-moves (O O 3 4 5 6 X X X)) ((3 4 5 6)))
215+
(assertEqualToResult (move-choices (O O 3 4 5 6 X X X)) (6 5 4 3)) ;; Should list in reverse
216+
(assertEqualToResult (winning-move (O O 3 4 5 6 7 8 9) O) (3)) ;; O can win
217+
(assertEqualToResult (winning-move (O O 3 4 5 6 7 8 9) X) ()) ;; X cannot win
218+
(assertEqualToResult (winning-move (O O 3 4 5 6 7 X X) X) (7)) ;; X can win with 7
219+
))
216220

217221
;; ----------------------------------------
218222
;; Entry point: starts AI vs AI by default
@@ -225,4 +229,4 @@
225229
;; (is-human O)
226230

227231
!(play-now)
228-
232+
!(repl!)

libraries/lsp_server_metta/prolog/lsp_metta_completion.pl

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
:- module(lsp_metta_completion, [completions_at/3]).
1+
:- module(lsp_metta_completion, [completions_at/3,completion_context/3]).
22
/** <module> LSP Completion
33
44
This module implements code completion, based on defined predicates in

libraries/lsp_server_metta/prolog/lsp_metta_hover.pl

Lines changed: 42 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,8 @@
3131
hover_at_position(Path, Line0, Char0, S) :-
3232
Loc = line_char(Line0, Char0), thread_signal(main,make),
3333
clause_with_arity_in_file_at_position(Term, Arity, Path, Loc),
34+
%assume_mode(markdown),
35+
assume_mode(markdown),
3436
findall(S, lsp_hooks:hover_string(Path, Loc, Term, Arity, S), SS),
3537
combine_hover(SS, S).
3638

@@ -231,9 +233,24 @@
231233

232234
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
233235
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
234-
in_markdown(G) :- format("~N", []), call(G).
236+
in_markdown(G) :- in_mode(markdown,call(G)).
237+
in_textual(G) :- in_mode(textual,call(G)).
238+
in_mode(X,G):- enter_mode(X),call(G),format("~N", []).
239+
240+
inside_mode(X):-nb_current(md_mode,M),M==X.
241+
242+
enter_mode(X):- inside_mode(X),!.
243+
enter_mode(X):- assume_mode(X),start_mode(X),!.
244+
assume_mode(X):- nb_setval(md_mode,X),!.
245+
start_mode(textual):- write('\n```no-wrap\n').
246+
start_mode(markdown):- write('\n```\n').
247+
start_mode(_).
248+
235249
banner_for(Type, Target):- in_markdown(format('***~n ## ~w: ~w', [Type, Target])).
236250
lsp_separator :- in_markdown(format('~N***~n',[])).
251+
linebr:- inside_mode(pre),!, lsp_separator.
252+
linebr:- nl,write(' -'),nl.
253+
237254

238255
show_checked(Name, Value, Caption) :- fail,
239256
format("[~w](file:command:myExtension.toggleValue?{\"name\":\"~w\", \"value\":\"~w\"}) ~w ", [Value, Name, Value, Caption]).
@@ -278,12 +295,16 @@
278295
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
279296
lsp_hooks:hover_print(_Path,_Loc, Target, _) :- use_vitalys_help,
280297
lsp_separator,
281-
% Don't redirect so we can capture output of this predicate
282-
locally(nb_setval('$dont_redirect_output', true),
283-
xref_call(eval(['help!', Target], _))),
298+
in_textual_eval(['help!', Target]),
284299
lsp_separator. % Evaluate the help command for the term.
285300

286301

302+
% Eval capturing output of this code
303+
in_textual_eval(MeTTa):-
304+
locally(nb_setval('$dont_redirect_output', true),
305+
% Don't redirect so we can capture output of this predicate
306+
forall(in_textual(xref_call(eval(MeTTa, _))),true)).
307+
287308
lsp_hooks:hover_print(_Path,_Loc, Term, Arity):- fail, % this isn't very helpful
288309
lsp_separator,
289310
(((some_arities(Term,Arity, Try, _TryArity),
@@ -308,8 +329,21 @@
308329
lsp_hooks:hover_print(_Path,_Loc, Target, _) :-
309330
lsp_separator,
310331
each_type_at_sorted(Target, Term, AtPath, AtLoc, Type),
332+
lsp_separator,
311333
write_src_xref(Term, Type, AtPath, AtLoc). % Write the source cross-reference for the atom.
312334

335+
336+
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
337+
% Compiled predicate Help
338+
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
339+
lsp_hooks:hover_print(_Path,_Loc, Target, _) :-
340+
lsp_separator,
341+
%in_textual_eval(writeq(['sinfo!', Target])),
342+
in_textual(catch_ignore(compiled_info(Target))),
343+
lsp_separator. % Evaluate the help command for the term.
344+
345+
346+
313347
get_code_at_range_type(term).
314348
get_code_at_range_type(expression).
315349
get_code_at_range_type(toplevel).
@@ -420,10 +454,10 @@
420454
write_src_xref(Src):-
421455
write_src_woi(Src). % Otherwise, write the source content without additional information.
422456

423-
424457
write_src_xref(Term, Type, Path, Loc):-
425-
catch_skip((write_src_xref(Term),
426-
in_markdown(ignore(write_file_link(Type, Path, Loc))))).
458+
catch_skip((
459+
in_textual(write_src_xref(Term)),
460+
in_markdown(ignore(write_file_link(Type, Path, Loc))))).
427461

428462
write_src_xref(Term, Path, Loc):-
429463
catch_skip((write_src_xref(Term),
@@ -456,7 +490,7 @@
456490

457491
% ~n```~n*~w*~n```lisp~n
458492
write_file_link(Type, Path, Position):-
459-
write_file_link(Path, Position), format(' _(~w)_', [Type]).
493+
in_markdown((write_file_link(Path, Position), format(' _(~w)_', [Type]))).
460494

461495
write_file_link(Path, Position):- is_in_emacs, !,
462496
must_succeed1(position_line(Position, Line0)), succ(Line0, Line1),

libraries/lsp_server_metta/prolog/lsp_metta_utils.pl

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,6 @@
44
]).
55

66
:- use_module(library(debug), [debug/3]).
7-
:- use_module(lsp_metta_xref).
87
:- use_module(lsp_metta_changes, [handle_doc_changes_d4/2]).
98
:- use_module(lsp_metta_parser, [annotated_read_sexpr_list/4]).
109
:- use_module(lsp_metta_split, [

libraries/lsp_server_metta/prolog/lsp_metta_workspace.pl

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,8 @@
1212
xref_metta_source/1,
1313
xref_reload_source/1,
1414
xref_source_expired/1,
15-
maybe_doc_path/2
15+
maybe_doc_path/2,
16+
xref_source_now/1
1617
]).
1718

1819
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

libraries/lsp_server_metta/prolog/lsp_metta_xref.pl

Lines changed: 0 additions & 97 deletions
This file was deleted.

0 commit comments

Comments
 (0)