[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[elpa] externals/poke 468f631988 43/76: poke.el: editor with values
From: |
ELPA Syncer |
Subject: |
[elpa] externals/poke 468f631988 43/76: poke.el: editor with values |
Date: |
Tue, 5 Apr 2022 14:59:36 -0400 (EDT) |
branch: externals/poke
commit 468f6319885034c9b10aeea40797c7b095c3018e
Author: Jose E. Marchesi <jose.marchesi@oracle.com>
Commit: Jose E. Marchesi <jose.marchesi@oracle.com>
poke.el: editor with values
---
poke.el | 125 ++++++++++++++++++++++++++++++++++++++++++++--------------------
1 file changed, 87 insertions(+), 38 deletions(-)
diff --git a/poke.el b/poke.el
index fd4a2c9d99..de1c17f337 100644
--- a/poke.el
+++ b/poke.el
@@ -50,6 +50,7 @@
(require 'tabulated-list)
(require 'poke-mode)
(require 'widget)
+(require 'cl)
;;;; First, some utilities
@@ -951,14 +952,37 @@ fun plet_elval = (string s) void:
name ", "
"typeof (" name "));")))
-(defun poke-edit-1 (name type typekind elements)
+(defun poke-edit-1 (name type typekind elems)
+ (let* ((elem-names "")
+ (elem-values ""))
+ (mapcar
+ (lambda (ename)
+ (setq elem-names (concat elem-names "\"" ename "\",")))
+ elems)
+ (mapcar
+ (lambda (ename)
+ (setq elem-values (concat elem-values "format (\"%v\", "
+ "(" name ")"
+ (if (equal (aref ename 0) ?\[) "" ".")
+ ename "),")))
+ elems)
+ (poke-code-send
+ (concat "poke_el_edit_2 ("
+ "\"" name "\", "
+ name ", "
+ "typeof (" name "), "
+ "[" elem-names "], "
+ "[" elem-values "]);"))))
+
+(defun poke-edit-2 (name type typekind elem-names elem-values)
(let ((buf (get-buffer-create "*poke-edit*")))
(with-current-buffer buf
(kill-all-local-variables)
(setq-local edit-name name)
(setq-local edit-type type)
(setq-local edit-typekind typekind)
- (setq-local edit-elements elements)
+ (setq-local edit-elem-names elem-names)
+ (setq-local edit-elem-values elem-values)
(poke-edit-do-buffer)
(switch-to-buffer-other-window "*poke-edit*"))))
@@ -978,30 +1002,29 @@ fun plet_elval = (string s) void:
("array" "[")
(_ ""))
"\n"))
- (mapcar
- (lambda (elem)
- (let ((elem-name (car elem))
- (elem-value (cadr elem)))
- (widget-create 'editable-field
- :size 30
- :format (concat " "
- (propertize elem-name
- 'font-lock-face
-
'poke-struct-field-name-face) "=" "%v,")
- :action `(lambda (widget event)
- (poke-code-send
- (concat "(" ,edit-name ")"
- (if (equal ,edit-typekind "struct")
- "."
- "")
- ,elem-name
- " = "
- (widget-value widget)
- ";"
- "plet_elval
(\"(poke-edit-after)\");")))
- elem-value)
- (widget-insert "\n")))
- edit-elements)
+ (mapcar*
+ (lambda (elem-name elem-value)
+ (widget-create 'editable-field
+ :size 0
+ :format (concat " "
+ (propertize elem-name
+ 'font-lock-face
+ 'poke-struct-field-name-face)
"=" "%v,")
+ :action `(lambda (widget event)
+ (poke-code-send
+ (concat "(" ,edit-name ")"
+ (if (equal ,edit-typekind "struct")
+ "."
+ "")
+ ,elem-name
+ " = "
+ (widget-value widget)
+ ";"
+ "plet_elval
(\"(poke-edit-after)\");")))
+ elem-value)
+ (widget-insert "\n"))
+ edit-elem-names
+ edit-elem-values)
(widget-insert (concat " " (pcase edit-typekind
("struct" "}")
("array" "]")
@@ -1282,26 +1305,52 @@ fun poke_el_edit = (string name) void:
plet_elval (cmd);
}
+fun poke_el_pk_type_typekind = (Pk_Type pktype) string:
+{
+ return pktype.code == PK_TYPE_INTEGRAL ? \"integral\"
+ : pktype.code == PK_TYPE_STRUCT ? \"struct\"
+ : pktype.code == PK_TYPE_ARRAY ? \"array\"
+ : pktype.code == PK_TYPE_STRING ? \"string\"
+ : pktype.code == PK_TYPE_FUNCTION ? \"function\"
+ : pktype.code == PK_TYPE_OFFSET ? \"offset\"
+ : \"\";
+}
+
fun poke_el_edit_1 = (string name, any val, Pk_Type valtype) void:
{
- var typekind = valtype.code == PK_TYPE_INTEGRAL ? \"integral\"
- : valtype.code == PK_TYPE_STRUCT ? \"struct\"
- : valtype.code == PK_TYPE_ARRAY ? \"array\"
- : valtype.code == PK_TYPE_STRING ? \"string\"
- : valtype.code == PK_TYPE_FUNCTION ? \"function\"
- : valtype.code == PK_TYPE_OFFSET ? \"offset\"
- : \"\";
-
- var eleminfo = \"'(\";
+ var typekind = poke_el_pk_type_typekind (valtype);
+
+ var elem_names = \"'(\";
if (valtype.code in [PK_TYPE_ARRAY, PK_TYPE_STRUCT])
{
for (var i = 0UL; i < val'length; ++i)
- eleminfo += format (\"(\\\"%s\\\" \\\"%s\\\") \", val'ename (i),
\"XXX\");
+ elem_names += \"\\\"\" + val'ename (i) + \"\\\" \";
}
- eleminfo += \")\";
+ elem_names += \")\";
var cmd = format (\"(poke-edit-1 \\\"%s\\\" \\\"%s\\\" \\\"%s\\\" %s)\"
- name, valtype.name, typekind, eleminfo);
+ name, valtype.name, typekind, elem_names);
+ plet_elval (cmd);
+}
+
+fun poke_el_edit_2 = (string name, any val, Pk_Type valtype,
+ string[] elem_names, string[] elem_vals) void:
+{
+ var typekind = poke_el_pk_type_typekind (valtype);
+
+ var elem_names_list = \"'(\";
+ for (var i = 0UL; i < elem_names'length; ++i)
+ elem_names_list += \"\\\"\" + elem_names[i] + \"\\\" \";
+ elem_names_list += \")\";
+
+ var elem_vals_list = \"'(\";
+ for (var i = 0UL; i < elem_vals'length; ++i)
+ elem_vals_list += \"\\\"\" + elem_vals[i] + \"\\\" \";
+ elem_vals_list += \")\";
+
+ var cmd = format (\"(poke-edit-2 \\\"%s\\\" \\\"%s\\\" \\\"%s\\\" %s %s)\"
+ name, valtype.name, typekind,
+ elem_names_list, elem_vals_list);
plet_elval (cmd);
}
- [elpa] externals/poke 7bca885bb1 20/76: poke.el: use hooks ios_open_hook and ios_close_hook, (continued)
- [elpa] externals/poke 7bca885bb1 20/76: poke.el: use hooks ios_open_hook and ios_close_hook, ELPA Syncer, 2022/04/05
- [elpa] externals/poke f457341424 22/76: poke.el: command for setting the current IOS in the poke-ios, ELPA Syncer, 2022/04/05
- [elpa] externals/poke 923ec644ba 24/76: poke.el: add size to poke-ios, ELPA Syncer, 2022/04/05
- [elpa] externals/poke e71f9cea1a 26/76: pkl: immutable declarations in compiler bootstrapping, ELPA Syncer, 2022/04/05
- [elpa] externals/poke 224e283c86 27/76: poke.el: transmit flags in a string to poke-ios-open, ELPA Syncer, 2022/04/05
- [elpa] externals/poke 2e6411d56a 29/76: poke.el: improvs, ELPA Syncer, 2022/04/05
- [elpa] externals/poke 84ae4121b9 30/76: poke.el: get unibyte strings in pokelet processes, ELPA Syncer, 2022/04/05
- [elpa] externals/poke 4743725592 34/76: poke.el: poke-code send command, ELPA Syncer, 2022/04/05
- [elpa] externals/poke 14a8f278b1 37/76: poke.el: poke-settings buffer, ELPA Syncer, 2022/04/05
- [elpa] externals/poke 0c410f656e 39/76: poke.el: factor settings code a bit, ELPA Syncer, 2022/04/05
- [elpa] externals/poke 468f631988 43/76: poke.el: editor with values,
ELPA Syncer <=
- [elpa] externals/poke 47a7d4f84d 46/76: poke.el: window placement improvements, ELPA Syncer, 2022/04/05
- [elpa] externals/poke bb294de5b3 52/76: poke.el: select a line when creating IOS menu, ELPA Syncer, 2022/04/05
- [elpa] externals/poke 66fb149542 56/76: poke.el: command C-cV in repl to refresh the VU, ELPA Syncer, 2022/04/05
- [elpa] externals/poke 902b4dd575 59/76: poke.el: docstrings, ELPA Syncer, 2022/04/05
- [elpa] externals/poke 6ceebd3c12 58/76: poke.el: add manual skeleton and fix progrma header for packaging, ELPA Syncer, 2022/04/05
- [elpa] externals/poke 9c00747388 64/76: poke.el: face for highlighting, ELPA Syncer, 2022/04/05
- [elpa] externals/poke 59b5f4c4a6 66/76: foo, ELPA Syncer, 2022/04/05
- [elpa] externals/poke e3295770b0 69/76: poke.el: rename repl-complete-{begin, end} to poke-repl-complete-{begin, end}, ELPA Syncer, 2022/04/05
- [elpa] externals/poke f495a6eee1 62/76: poke.el: rename some stuff, ELPA Syncer, 2022/04/05
- [elpa] externals/poke 5e9582effa 73/76: poke.el: make a keymap for poke-settings, ELPA Syncer, 2022/04/05