branch: externals/poke
commit 6a3da0fe9ee3bbf3be411c6e3a5033f1df975fc8
Author: Jose E. Marchesi <jose.march...@oracle.com>
Commit: Jose E. Marchesi <jose.march...@oracle.com>

    Add setting for byte endianness.
---
 poke.el | 24 ++++++++++++++++++++++--
 1 file changed, 22 insertions(+), 2 deletions(-)

diff --git a/poke.el b/poke.el
index 18b54d048a..9fd161d893 100644
--- a/poke.el
+++ b/poke.el
@@ -1288,11 +1288,18 @@ at the top of the `poke-maps-stack' stack."
 
 ;;;; poke-settings
 
+(defvar poke-setting-endian "big")
 (defvar poke-setting-pretty-print "no")
 (defvar poke-setting-omode "plain")
 (defvar poke-setting-omaps "no")
 (defvar poke-setting-obase 10)
 
+(defun poke-setting-set-endian (val)
+  (unless (member val '("big" "little" "host" "network"))
+    (error "Invalid setting for byte endianness.
+Expected \"big\", \"little\", \"host\" or \"network\"."))
+  (poke-code-send (concat "set_endian (" val ");")))
+
 (defun poke-setting-set-pretty-print (val)
   (unless (member val '("yes" "no"))
     (error "Invalid setting for pretty-print.  Expected \"yes\" or \"no\"."))
@@ -1326,7 +1333,8 @@ Expected 2, 8, 10 or 16."))
 
 (defun poke-init-settings ()
   (poke-setting-set-pretty-print poke-setting-pretty-print)
-  (poke-setting-set-omode poke-setting-omode))
+  (poke-setting-set-omode poke-setting-omode)
+  (poke-setting-set-endian poke-setting-endian))
 
 (defvar poke-settings-map
   (let ((map (make-sparse-keymap)))
@@ -1339,6 +1347,14 @@ Expected 2, 8, 10 or 16."))
   (let ((inhibit-read-only t))
     (erase-buffer))
   (remove-overlays)
+  (widget-insert "Byte endianness:\n")
+  (widget-create 'radio-button-choice
+                 :value poke-setting-endian
+                 :notify (lambda (widget &rest _)
+                           (poke-setting-set-endian (widget-value widget))
+                           (setq poke-setting-endian (widget-value widget)))
+                 '(item "little") '(item "big") '(item "host") '(item 
"network"))
+  (widget-insert "\n")
   (widget-insert "Output mode:\n")
   (widget-create 'radio-button-choice
                  :value poke-setting-omode
@@ -1371,6 +1387,9 @@ Expected 2, 8, 10 or 16."))
                            (setq poke-setting-omaps (widget-value widget)))
                  '(item "yes") '(item "no"))
   (widget-insert "\n")
+  ;; XXX oacutoff
+  ;; XXX odepth
+  ;; XXX oindent
   (use-local-map poke-settings-map)
   (widget-setup))
 
@@ -1380,7 +1399,8 @@ Expected 2, 8, 10 or 16."))
     (unless buf
       (setq buf (get-buffer-create "*poke-settings*"))
       (with-current-buffer buf
-        (poke-settings-create-widgets))))
+        (poke-settings-create-widgets)
+        (goto-char (point-min)))))
   (when and-display
     (switch-to-buffer-other-window "*poke-settings*")))
 

Reply via email to