aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorThijs Schreijer <thijs@thijsschreijer.nl>2024-06-19 22:05:33 +0200
committerThijs Schreijer <thijs@thijsschreijer.nl>2024-06-19 22:05:33 +0200
commite0871d7be63dd428d4a2b9a3db4e033894165cef (patch)
tree9a844f267ec9ec99ba745680453b683dd73a6f5b
parent8996a5022fa82e5d5335f71580d0cd6b6d323c9b (diff)
downloadluasystem-e0871d7be63dd428d4a2b9a3db4e033894165cef.tar.gz
luasystem-e0871d7be63dd428d4a2b9a3db4e033894165cef.tar.bz2
luasystem-e0871d7be63dd428d4a2b9a3db4e033894165cef.zip
add system.CODEPAGE_UTF8 for 65001 codepage
-rw-r--r--doc_topics/03-terminal.md4
-rw-r--r--examples/compat.lua2
-rw-r--r--examples/readline.lua2
-rw-r--r--spec/04-term_spec.lua14
-rw-r--r--src/term.c4
-rw-r--r--system/init.lua5
6 files changed, 18 insertions, 13 deletions
diff --git a/doc_topics/03-terminal.md b/doc_topics/03-terminal.md
index 06a6b96..9bad359 100644
--- a/doc_topics/03-terminal.md
+++ b/doc_topics/03-terminal.md
@@ -51,8 +51,8 @@ recent versions of Lua also have UTF-8 support. So `luasystem` also focusses on
51 51
52On Windows UTF-8 output can be enabled by setting the output codepage like this: 52On Windows UTF-8 output can be enabled by setting the output codepage like this:
53 53
54 -- setup Windows output codepage to UTF-8; 65001 54 -- setup Windows output codepage to UTF-8
55 sys.setconsoleoutputcp(65001) 55 sys.setconsoleoutputcp(sys.CODEPAGE_UTF8)
56 56
57Terminal input is handled by the [`_getwchar()`](https://learn.microsoft.com/en-us/cpp/c-runtime-library/reference/getchar-getwchar) function on Windows which returns 57Terminal input is handled by the [`_getwchar()`](https://learn.microsoft.com/en-us/cpp/c-runtime-library/reference/getchar-getwchar) function on Windows which returns
58UTF-16 surrogate pairs. `luasystem` will automatically convert those to UTF-8. 58UTF-16 surrogate pairs. `luasystem` will automatically convert those to UTF-8.
diff --git a/examples/compat.lua b/examples/compat.lua
index a59d964..c712105 100644
--- a/examples/compat.lua
+++ b/examples/compat.lua
@@ -12,7 +12,7 @@ if sys.windows then
12 os.getenv = sys.getenv -- luacheck: ignore 12 os.getenv = sys.getenv -- luacheck: ignore
13 13
14 -- Set console output to UTF-8 encoding. 14 -- Set console output to UTF-8 encoding.
15 sys.setconsoleoutputcp(65001) 15 sys.setconsoleoutputcp(sys.CODEPAGE_UTF8)
16 16
17 -- Set up the terminal to handle ANSI escape sequences on Windows. 17 -- Set up the terminal to handle ANSI escape sequences on Windows.
18 if sys.isatty(io.stdout) then 18 if sys.isatty(io.stdout) then
diff --git a/examples/readline.lua b/examples/readline.lua
index 286522c..ff215dd 100644
--- a/examples/readline.lua
+++ b/examples/readline.lua
@@ -442,7 +442,7 @@ local backup = sys.termbackup()
442sys.setconsoleflags(io.stdout, sys.getconsoleflags(io.stdout) + sys.COF_VIRTUAL_TERMINAL_PROCESSING) 442sys.setconsoleflags(io.stdout, sys.getconsoleflags(io.stdout) + sys.COF_VIRTUAL_TERMINAL_PROCESSING)
443sys.setconsoleflags(io.stdin, sys.getconsoleflags(io.stdin) + sys.CIF_VIRTUAL_TERMINAL_INPUT) 443sys.setconsoleflags(io.stdin, sys.getconsoleflags(io.stdin) + sys.CIF_VIRTUAL_TERMINAL_INPUT)
444-- set output to UTF-8 444-- set output to UTF-8
445sys.setconsoleoutputcp(65001) 445sys.setconsoleoutputcp(sys.CODEPAGE_UTF8)
446 446
447-- setup Posix terminal to disable canonical mode and echo 447-- setup Posix terminal to disable canonical mode and echo
448sys.tcsetattr(io.stdin, sys.TCSANOW, { 448sys.tcsetattr(io.stdin, sys.TCSANOW, {
diff --git a/spec/04-term_spec.lua b/spec/04-term_spec.lua
index d5b4eee..e888920 100644
--- a/spec/04-term_spec.lua
+++ b/spec/04-term_spec.lua
@@ -8,7 +8,7 @@ describe("Terminal:", function()
8 8
9 setup(function() 9 setup(function()
10 wincodepage = system.getconsoleoutputcp() 10 wincodepage = system.getconsoleoutputcp()
11 assert(system.setconsoleoutputcp(65001)) -- set to UTF8 11 assert(system.setconsoleoutputcp(system.CODEPAGE_UTF8)) -- set to UTF8
12 end) 12 end)
13 13
14 teardown(function() 14 teardown(function()
@@ -346,8 +346,8 @@ describe("Terminal:", function()
346 end) 346 end)
347 347
348 local new_cp 348 local new_cp
349 if old_cp ~= 65001 then 349 if old_cp ~= system.CODEPAGE_UTF8 then
350 new_cp = 65001 -- set to UTF8 350 new_cp = system.CODEPAGE_UTF8 -- set to UTF8
351 else 351 else
352 new_cp = 850 -- another common one 352 new_cp = 850 -- another common one
353 end 353 end
@@ -403,8 +403,8 @@ describe("Terminal:", function()
403 end) 403 end)
404 404
405 local new_cp 405 local new_cp
406 if old_cp ~= 65001 then 406 if old_cp ~= system.CODEPAGE_UTF8 then
407 new_cp = 65001 -- set to UTF8 407 new_cp = system.CODEPAGE_UTF8 -- set to UTF8
408 else 408 else
409 new_cp = 850 -- another common one 409 new_cp = 850 -- another common one
410 end 410 end
@@ -578,8 +578,8 @@ describe("Terminal:", function()
578 578
579 -- get the console page... 579 -- get the console page...
580 local new_cp 580 local new_cp
581 if old_cp ~= 65001 then 581 if old_cp ~= system.CODEPAGE_UTF8 then
582 new_cp = 65001 -- set to UTF8 582 new_cp = system.CODEPAGE_UTF8 -- set to UTF8
583 else 583 else
584 new_cp = 850 -- another common one 584 new_cp = 850 -- another common one
585 end 585 end
diff --git a/src/term.c b/src/term.c
index db3c300..d8cc38e 100644
--- a/src/term.c
+++ b/src/term.c
@@ -1042,7 +1042,7 @@ static int lst_getconsolecp(lua_State *L) {
1042/*** 1042/***
1043Sets the current console code page (Windows). 1043Sets the current console code page (Windows).
1044@function setconsolecp 1044@function setconsolecp
1045@tparam int cp the code page to set, use 65001 for UTF-8 1045@tparam int cp the code page to set, use `system.CODEPAGE_UTF8` (65001) for UTF-8
1046@treturn[1] bool `true` on success (always `true` on Posix systems) 1046@treturn[1] bool `true` on success (always `true` on Posix systems)
1047*/ 1047*/
1048static int lst_setconsolecp(lua_State *L) { 1048static int lst_setconsolecp(lua_State *L) {
@@ -1076,7 +1076,7 @@ static int lst_getconsoleoutputcp(lua_State *L) {
1076/*** 1076/***
1077Sets the current console output code page (Windows). 1077Sets the current console output code page (Windows).
1078@function setconsoleoutputcp 1078@function setconsoleoutputcp
1079@tparam int cp the code page to set, use 65001 for UTF-8 1079@tparam int cp the code page to set, use `system.CODEPAGE_UTF8` (65001) for UTF-8
1080@treturn[1] bool `true` on success (always `true` on Posix systems) 1080@treturn[1] bool `true` on success (always `true` on Posix systems)
1081*/ 1081*/
1082static int lst_setconsoleoutputcp(lua_State *L) { 1082static int lst_setconsoleoutputcp(lua_State *L) {
diff --git a/system/init.lua b/system/init.lua
index 0c94d35..ee43c4b 100644
--- a/system/init.lua
+++ b/system/init.lua
@@ -7,6 +7,11 @@
7local system = require 'system.core' 7local system = require 'system.core'
8 8
9 9
10--- UTF8 codepage.
11-- To be used with `system.setconsoleoutputcp` and `system.setconsolecp`.
12-- @field CODEPAGE_UTF8 The Windows CodePage for UTF8.
13system.CODEPAGE_UTF8 = 65001
14
10do 15do
11 local backup_mt = {} 16 local backup_mt = {}
12 17