]> git.sur5r.net Git - i3/i3/commitdiff
Implement debuglog command
authorAlexander Berntsen <alexander@plaimi.net>
Wed, 5 Jun 2013 13:06:53 +0000 (15:06 +0200)
committerMichael Stapelberg <michael@stapelberg.de>
Sun, 7 Jul 2013 13:33:42 +0000 (15:33 +0200)
Add debuglog command that takes toggle|on|off. Add get_debug_logging()
to be able to toggle. Make t/187-commands-parser.t expect 'debuglog'.
Document the debuglog command in userguide.

docs/userguide
include/commands.h
include/log.h
parser-specs/commands.spec
src/commands.c
src/log.c
testcases/t/187-commands-parser.t

index 60345bec286d2427c1679e9c1966a93e197135e3..aafea440e23accec4116f6ef432cf848ddd6900c 100644 (file)
@@ -1762,6 +1762,8 @@ stack-limit rows 5
 image:stacklimit.png[Container limited to two columns]
 ///////////////////////////////////////////////////////////////////////////////
 
+[[shmlog]]
+
 === Enabling shared memory logging
 
 As described in http://i3wm.org/docs/debugging.html, i3 can log to a shared
@@ -1787,6 +1789,24 @@ bindsym $mod+x shmlog toggle
 i3-msg shmlog $((50*1024*1024))
 ---------------
 
+=== Enabling debug logging
+
+The +debuglog+ command allows you to enable or disable debug logging at
+runtime. Debug logging is much more verbose than non-debug logging. This
+command does not activate shared memory logging (shmlog), and as such is most
+likely useful in combination with the above-described <<shmlog>> command.
+
+*Syntax*:
+------------------------
+debuglog <on|off|toggle>
+------------------------
+
+*Examples*:
+------------
+# Enable/disable logging
+bindsym $mod+x debuglog toggle
+------------
+
 === Reloading/Restarting/Exiting
 
 You can make i3 reload its configuration file with +reload+. You can also
index a09e7466aa05a26013bb9913b188938399faeb85..21f223899c9b0a85b4c8e43ab4fe38a67aebfe29 100644 (file)
@@ -277,4 +277,10 @@ void cmd_bar(I3_CMD, char *bar_type, char *bar_value, char *bar_id);
  */
 void cmd_shmlog(I3_CMD, char *argument);
 
+/*
+ * Implementation of 'debuglog toggle|on|off'
+ *
+ */
+void cmd_debuglog(I3_CMD, char *argument);
+
 #endif
index c9d1d0cd67a15e4f7652fb7128b327022e7fc543..c8e3c8ef7dd5a26f1bc8faa60406e34bf832c5dc 100644 (file)
@@ -50,6 +50,12 @@ void open_logbuffer(void);
  */
 void close_logbuffer(void);
 
+/**
+ * Checks if debug logging is active.
+ *
+ */
+bool get_debug_logging(void);
+
 /**
  * Set debug logging.
  *
index 4407158cb6398c49fb358f48158c484190a80c64..88fbfe6146a16d8748f467b7a1eb8c2f71600dd0 100644 (file)
@@ -20,6 +20,7 @@ state INITIAL:
   'restart' -> call cmd_restart()
   'reload' -> call cmd_reload()
   'shmlog' -> SHMLOG
+  'debuglog' -> DEBUGLOG
   'border' -> BORDER
   'layout' -> LAYOUT
   'append_layout' -> APPEND_LAYOUT
@@ -69,6 +70,11 @@ state SHMLOG:
   argument = string
     -> call cmd_shmlog($argument)
 
+# debuglog toggle|on|off
+state DEBUGLOG:
+  argument = 'toggle', 'on', 'off'
+    -> call cmd_debuglog($argument)
+
 # border normal|none|1pixel|toggle|1pixel
 state BORDER:
   border_style = 'normal', 'pixel'
index fbe4b11723e0c3567e7769d177c1f53466925cd3..07af1404fb9b3137749af75d57ac326c8bde935f 100644 (file)
@@ -2059,3 +2059,23 @@ void cmd_shmlog(I3_CMD, char *argument) {
     // XXX: default reply for now, make this a better reply
     ysuccess(true);
 }
+
+/*
+ * Implementation of 'debuglog toggle|on|off'
+ *
+ */
+void cmd_debuglog(I3_CMD, char *argument) {
+    bool logging = get_debug_logging();
+    if (!strcmp(argument,"toggle")) {
+        LOG("%s debug logging\n", logging ? "Disabling" : "Enabling");
+        set_debug_logging(!logging);
+    } else if (!strcmp(argument, "on") && !logging) {
+        LOG("Enabling debug logging\n");
+        set_debug_logging(true);
+    } else if (!strcmp(argument, "off") && logging) {
+        LOG("Disabling debug logging\n");
+        set_debug_logging(false);
+    }
+    // XXX: default reply for now, make this a better reply
+    ysuccess(true);
+}
index 68131af88daae542cd9f2c792bf1e2a3331c8768..e0679e15133e902f1ec82ccbc38094e74f2641b8 100644 (file)
--- a/src/log.c
+++ b/src/log.c
@@ -180,6 +180,14 @@ void set_verbosity(bool _verbose) {
     verbose = _verbose;
 }
 
+/*
+ * Get debug logging.
+ *
+ */
+bool get_debug_logging(void) {
+    return debug_logging;
+}
+
 /*
  * Set debug logging.
  *
index a6bb1c5a0fd6410659327e6bc1a1fd06180bfe71..3e97699606b1577834b6fa472fbe55bbb87239f8 100644 (file)
@@ -144,7 +144,7 @@ is(parser_calls("\nworkspace test"),
 ################################################################################
 
 is(parser_calls('unknown_literal'),
-   "ERROR: Expected one of these tokens: <end>, '[', 'move', 'exec', 'exit', 'restart', 'reload', 'shmlog', 'border', 'layout', 'append_layout', 'workspace', 'focus', 'kill', 'open', 'fullscreen', 'split', 'floating', 'mark', 'resize', 'rename', 'nop', 'scratchpad', 'mode', 'bar'\n" .
+   "ERROR: Expected one of these tokens: <end>, '[', 'move', 'exec', 'exit', 'restart', 'reload', 'shmlog', 'debuglog', 'border', 'layout', 'append_layout', 'workspace', 'focus', 'kill', 'open', 'fullscreen', 'split', 'floating', 'mark', 'resize', 'rename', 'nop', 'scratchpad', 'mode', 'bar'\n" .
    "ERROR: Your command: unknown_literal\n" .
    "ERROR:               ^^^^^^^^^^^^^^^",
    'error for unknown literal ok');