1.1--- a/lisp/ffi/tree-sitter/pkg.lisp Sat Dec 09 00:56:36 2023 -0500
1.2+++ b/lisp/ffi/tree-sitter/pkg.lisp Sat Dec 09 02:33:24 2023 -0500
1.3@@ -49,8 +49,11 @@
1.4 :ts-node-is-null
1.5 :ts-node-eq
1.6 :ts-tree-cursor-new
1.7+ :ts-language-version
1.8 :load-tree-sitter-json
1.9- :tree-sitter-json))
1.10+ :tree-sitter-json
1.11+ :load-tree-sitter-rust
1.12+ :tree-sitter-rust))
1.13
1.14 (in-package :tree-sitter/pkg)
1.15
1.16@@ -64,7 +67,11 @@
1.17 (sb-alien:load-shared-object "/usr/local/lib/libtree-sitter-json.so" :dont-save t)
1.18 (push :tree-sitter-json *features*)))
1.19
1.20-(define-alien-routine tree-sitter-json (* ts-language))
1.21+(defun load-tree-sitter-rust ()
1.22+ (unless (member :tree-sitter-rust *features*)
1.23+ (sb-alien:load-shared-object "/usr/local/lib/libtree-sitter-rust.so" :dont-save t)
1.24+ (push :tree-sitter-rust *features*)))
1.25+
1.26 ;;; Alien Types
1.27 (define-alien-type ts-state-id unsigned-int)
1.28 (define-alien-type ts-symbol unsigned-int)
1.29@@ -134,3 +141,6 @@
1.30 (define-alien-routine ts-tree-cursor-new ts-tree-cursor (node ts-node))
1.31
1.32 (define-alien-routine ts-language-version unsigned-int (v (* ts-language)))
1.33+
1.34+(define-alien-routine tree-sitter-json (* ts-language))
1.35+(define-alien-routine tree-sitter-rust (* ts-language))
2.1--- a/lisp/ffi/tree-sitter/tests.lisp Sat Dec 09 00:56:36 2023 -0500
2.2+++ b/lisp/ffi/tree-sitter/tests.lisp Sat Dec 09 02:33:24 2023 -0500
2.3@@ -9,7 +9,18 @@
2.4
2.5 (load-tree-sitter)
2.6
2.7-(deftest ts-basic ()
2.8+(deftest ts-json ()
2.9 (load-tree-sitter-json)
2.10- (let ((parser (ts-parser-new)))
2.11- (ts-parser-set-language parser (tree-sitter-json))))
2.12+ (let ((parser (ts-parser-new))
2.13+ (lang (tree-sitter-json)))
2.14+ (is (= (ts-language-version lang) 14))
2.15+ (is (ts-parser-set-language parser lang))))
2.16+
2.17+(deftest ts-rust ()
2.18+ (load-tree-sitter-rust)
2.19+ (let ((parser (ts-parser-new))
2.20+ (lang (tree-sitter-rust)))
2.21+ ;; (is (= (ts-language-version lang) 14))
2.22+ (is (ts-parser-set-language parser lang))))
2.23+
2.24+
3.1--- /dev/null Thu Jan 01 00:00:00 1970 +0000
3.2+++ b/lisp/ffi/xkb/constants.lisp Sat Dec 09 02:33:24 2023 -0500
3.3@@ -0,0 +1,33 @@
3.4+("stdint.h" "stdio.h" "stdarg.h" "xkbcommon/xkbcommon-names.h" "xkbcommon/xkbcommon-keysyms.h" "xkbcommon/xkbcommon.h")
3.5+
3.6+((:integer xkb-keycode-invalid "XKB_KEYCODE_INVALID" nil t)
3.7+ (:integer xkb-layout-invalid "XKB_LAYOUT_INVALID" nil t)
3.8+ (:integer xkb-level-invalid "XKB_LEVEL_INVALID" nil t)
3.9+ (:integer xkb-mod-invalid "XKB_MOD_INVALID" nil t)
3.10+ (:integer xkb-led-invalid "XKB_LED_INVALID" nil t)
3.11+ (:integer xkb-keycode-max "XKB_KEYCODE_MAX" nil t)
3.12+ (:integer xkb-keysym-max "XKB_KEYSYM_MAX" nil t)
3.13+ (:enum xkb-keymap-format ((xkb-keymap-format-text-v1 "XKB_KEYMAP_FORMAT_TEXT_V1")))
3.14+ (:enum xkb-log-level ((xkb-log-level-critical "XKB_LOG_LEVEL_CRITICAL")
3.15+ (xkb-log-level-error "XKB_LOG_LEVEL_ERROR")
3.16+ (xkb-log-level-warning "XKB_LOG_LEVEL_WARNING")
3.17+ (xkb-log-level-info "XKB_LOG_LEVEL_INFO")
3.18+ (xkb-log-level-debug "XKB_LOG_LEVEL_DEBUG")))
3.19+ (:enum xkb-keymap-compile-flags ((xkb-keymap-compile-no-flags "XKB_KEYMAP_COMPILE_NO_FLAGS")))
3.20+ (:integer xkb-keymap-use-original-format "XKB_KEYMAP_USE_ORIGINAL_FORMAT" nil t)
3.21+ (:enum xkb-key-direction ((xkb-key-up "XKB_KEY_UP")
3.22+ (xkb-key-down "XKB_KEY_DOWN")))
3.23+ (:enum xkb-state-component ((xkb-state-mods-depressed "XKB_STATE_MODS_DEPRESSED")
3.24+ (xkb-state-mods-latched "XKB_STATE_MODS_LATCHED")
3.25+ (xkb-state-mods-locked "XKB_STATE_MODS_LOCKED")
3.26+ (xkb-state-mods-effective "XKB_STATE_MODS_EFFECTIVE")
3.27+ (xkb-state-layout-depressed "XKB_STATE_LAYOUT_DEPRESSED")
3.28+ (xkb-state-layout-latched "XKB_STATE_LAYOUT_LATCHED")
3.29+ (xkb-state-layout-locked "XKB_STATE_LAYOUT_LOCKED")
3.30+ (xkb-state-layout-effective "XKB_STATE_LAYOUT_EFFECTIVE")
3.31+ (xkb-state-leds "XKB_STATE_LEDS")))
3.32+ (:enum xkb-state-match ((xkb-state-match-any "XKB_STATE_MATCH_ANY")
3.33+ (xkb-state-match-all "XKB_STATE_MATCH_ALL")
3.34+ (xkb-state-match-non-exclusive "XKB_STATE_MATCH_NON_EXCLUSIVE")))
3.35+ (:enum xkb-consumed-mode ((xkb-consumed-mode-xkb "XKB_CONSUMED_MODE_XKB")
3.36+ (xkb-consumed-mode-gtk "XKB_CONSUMED_MODE_GTK"))))
4.1--- /dev/null Thu Jan 01 00:00:00 1970 +0000
4.2+++ b/lisp/ffi/xkb/pkg.lisp Sat Dec 09 02:33:24 2023 -0500
4.3@@ -0,0 +1,32 @@
4.4+(defpackage :xkb
4.5+ (:use :cl :std/alien)
4.6+ (:export
4.7+ :load-xkb
4.8+ :xkb-context :xkb-keymap
4.9+ :xkb-keycode :xkb-keysym
4.10+ :xkb-layout-index :xkb-layout-mask
4.11+ :xkb-level-index :xkb-mod-index
4.12+ :xkb-mod-mask :xkb-led-index :xkb-led-mask
4.13+ :xkb-level-invalid :xkb-keycode-max :xkb-keymap-use-original-format
4.14+ :xkb-keysym-max :xkb-keycode-invalid :xkb-mod-invalid :xkb-layout-invalid
4.15+ :xkb-led-invalid))
4.16+
4.17+(in-package :xkb)
4.18+
4.19+(defun load-xkb ()
4.20+ (unless (member :xkb *features*)
4.21+ (sb-alien:load-shared-object "libxkbcommon.so" :dont-save t)
4.22+ (push :xkb *features*)))
4.23+
4.24+(define-alien-type xkb-context (struct xkb-context))
4.25+(define-alien-type xkb-keymap (struct xkb-keymap))
4.26+(define-alien-type xkb-state (struct xkb-state))
4.27+(define-opaque xkb-keycode)
4.28+(define-opaque xkb-keysym)
4.29+(define-opaque xkb-layout-index)
4.30+(define-opaque xkb-layout-mask)
4.31+(define-opaque xkb-level-index)
4.32+(define-opaque xkb-mod-index)
4.33+(define-opaque xkb-mod-mask)
4.34+(define-opaque xkb-led-index)
4.35+(define-opaque xkb-led-mask)
5.1--- /dev/null Thu Jan 01 00:00:00 1970 +0000
5.2+++ b/lisp/ffi/xkb/tests.lisp Sat Dec 09 02:33:24 2023 -0500
5.3@@ -0,0 +1,9 @@
5.4+(defpackage :xkb/tests
5.5+ (:use :cl :rt :xkb))
5.6+(in-package :xkb/tests)
5.7+(defsuite :xkb)
5.8+(in-suite :xkb)
5.9+
5.10+(deftest xkb-basic ()
5.11+ (xkb:load-xkb)
5.12+ (is (= xkb:xkb-keysym-max 536870911)))
6.1--- /dev/null Thu Jan 01 00:00:00 1970 +0000
6.2+++ b/lisp/ffi/xkb/xkb.asd Sat Dec 09 02:33:24 2023 -0500
6.3@@ -0,0 +1,20 @@
6.4+;;; xkb.asd-*- mode: lisp; -*-
6.5+(eval-when (:compile-toplevel :load-toplevel :execute)
6.6+ (require :sb-grovel))
6.7+
6.8+(defpackage :xkb.sys
6.9+ (:use :cl :asdf :sb-grovel :sb-alien))
6.10+
6.11+(in-package :xkb.sys)
6.12+
6.13+(defsystem :xkb
6.14+ :depends-on (:sb-grovel :std)
6.15+ :components ((:file "pkg")
6.16+ (grovel-constants-file "constants"
6.17+ :package :xkb))
6.18+ :in-order-to ((test-op (test-op :xkb/tests))))
6.19+
6.20+(defsystem :xkb/tests
6.21+ :depends-on (:std/rt :xkb)
6.22+ :components ((:file "tests"))
6.23+ :perform (test-op (op c) (uiop:symbol-call '#:rt '#:do-tests :xkb)))
7.1--- a/tests.org Sat Dec 09 00:56:36 2023 -0500
7.2+++ b/tests.org Sat Dec 09 02:33:24 2023 -0500
7.3@@ -200,7 +200,7 @@
7.4 "lisp/lib/packy/packy.asd" "lisp/lib/nlp/nlp.asd" "lisp/lib/dot/dot.asd"
7.5 "lisp/ffi/rocksdb/rocksdb.asd" "lisp/ffi/btrfs/btrfs.asd" "lisp/ffi/uring/uring.asd"
7.6 "lisp/ffi/k/k.asd" "lisp/ffi/bqn/bqn.asd" "lisp/ffi/tree-sitter/tree-sitter.asd"
7.7- "lisp/ffi/blake3/blake3.asd" "lisp/ffi/alpm/alpm.asd")))
7.8+ "lisp/ffi/blake3/blake3.asd" "lisp/ffi/alpm/alpm.asd" "lisp/ffi/xkb/xkb.asd")))
7.9 (mapc (lambda (x) (asdf:load-asd (pathname x))) systems))
7.10 (asdf:load-system :std)
7.11 (asdf:load-system :std/rt)
7.12@@ -487,5 +487,17 @@
7.13 : #<PASS ALPM-VERSION-TEST337>
7.14 : No tests failed.
7.15
7.16+*** xkb
7.17+#+begin_src lisp :results output replace :exports results
7.18+ (load "lisp/ffi/xkb/tests.lisp")
7.19+ (asdf:test-system :xkb)
7.20+#+end_src
7.21+
7.22+#+RESULTS:
7.23+: in suite xkb with 1/1 tests:
7.24+: #<PASS XKB-BASIC-TEST378>
7.25+: No tests failed.
7.26+
7.27 * emacs
7.28 =sudo pacman -Syu libvoikko librsvg imagemagick=
7.29+
8.1--- a/todo.org Sat Dec 09 00:56:36 2023 -0500
8.2+++ b/todo.org Sat Dec 09 02:33:24 2023 -0500
8.3@@ -1,48 +1,56 @@
8.4-* TODO migrate to sb-grovel [0%] :lisp:ffi:
8.5+* TODO migrate to sb-grovel [88%] :lisp:ffi:
8.6 :PROPERTIES:
8.7 :CUSTOM_ID: bb365025-e5e7-4407-acba-32e30d1a245a
8.8 :END:
8.9 - State "TODO" from [2023-11-27 Mon 23:42]
8.10 [[file:lisp/ffi/]]
8.11-** TODO blake3
8.12+** DONE blake3
8.13 :PROPERTIES:
8.14 :CUSTOM_ID: 656c2683-8780-407c-b955-3defc4959595
8.15 :END:
8.16+- State "DONE" from "TODO" [2023-12-09 Sat 01:57]
8.17 - State "TODO" from [2023-11-29 Wed 19:00]
8.18-** TODO bqn
8.19+** DONE bqn
8.20 :PROPERTIES:
8.21 :CUSTOM_ID: b4757746-525b-49e4-b8ac-677375867d8f
8.22 :END:
8.23+- State "DONE" from "TODO" [2023-12-09 Sat 01:57]
8.24 - State "TODO" from [2023-11-29 Wed 19:00]
8.25-** TODO btrfs
8.26+** DONE btrfs
8.27 :PROPERTIES:
8.28 :CUSTOM_ID: b3b411fe-6b2d-4338-9e23-83536336a487
8.29 :END:
8.30+- State "DONE" from "TODO" [2023-12-09 Sat 01:57]
8.31 - State "TODO" from [2023-11-29 Wed 19:00]
8.32-** TODO k
8.33+** DONE k
8.34 :PROPERTIES:
8.35 :CUSTOM_ID: 8a463084-efa0-4535-8239-b1c4955bde4c
8.36 :END:
8.37+- State "DONE" from "TODO" [2023-12-09 Sat 01:57]
8.38 - State "TODO" from [2023-11-29 Wed 19:00]
8.39-** TODO rocksdb
8.40+** DONE rocksdb
8.41 :PROPERTIES:
8.42 :CUSTOM_ID: 2d4d70af-228f-424c-8374-9fc8ed5c6f92
8.43 :END:
8.44+- State "DONE" from "TODO" [2023-12-09 Sat 01:57]
8.45 - State "TODO" from [2023-11-29 Wed 19:00]
8.46-** TODO tree-sitter
8.47+** DONE tree-sitter
8.48 :PROPERTIES:
8.49 :CUSTOM_ID: 0cdf3412-cb00-4069-8e1b-b49c736377cf
8.50 :END:
8.51+- State "DONE" from "TODO" [2023-12-09 Sat 01:57]
8.52 - State "TODO" from [2023-11-29 Wed 19:00]
8.53-** TODO uring
8.54+** DONE uring
8.55 :PROPERTIES:
8.56 :CUSTOM_ID: 45a52407-ccaf-4ea1-99c4-d6f7ba0b2731
8.57 :END:
8.58+- State "DONE" from "TODO" [2023-12-09 Sat 01:57]
8.59 - State "TODO" from [2023-11-29 Wed 19:00]
8.60-** TODO zstd
8.61+** DONE zstd
8.62 :PROPERTIES:
8.63 :CUSTOM_ID: 6ade8dd8-83b1-470d-a0da-a352ce4c2d06
8.64 :END:
8.65+- State "DONE" from "TODO" [2023-12-09 Sat 01:57]
8.66 - State "TODO" from [2023-11-29 Wed 19:00]
8.67 ** TODO xkb
8.68 :PROPERTIES: