Skip to content

Commit 6a090e4

Browse files
committed
Release 4.0.16 version
1 parent d69c903 commit 6a090e4

16 files changed

Lines changed: 119 additions & 20 deletions

File tree

conf/conf.d/eu_conf.lua

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ function eu_conf.fill_actions(s)
88
eu_core.ffi.fill(pconfig.m_actions, 100 * 260)
99
else
1010
local actions_size = eu_core.ffi.sizeof(pconfig.m_actions)/260;
11+
if (actions_size > 100) then actions_size = 100 end
1112
for i=0,actions_size-1 do
1213
if (process_actions[i] ~= nil and #process_actions[i] < 260) then
1314
eu_core.ffi.copy(pconfig.m_actions[i], process_actions[i])

locales/src/en-us.rc

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -429,6 +429,7 @@ BEGIN
429429
MENUITEM "Configure Snippets", IDM_SOURCE_SNIPPET_CONFIGURE
430430
END
431431
MENUITEM MF_SEPARATOR
432+
MENUITEM "Convert to C/C++ array type", IDM_PROGRAM_CPLUS
432433
MENUITEM "Execute File With Preset Actions", IDM_PROGRAM_EXECUTE_ACTION
433434
END
434435
POPUP "Se&ttings"
@@ -1546,9 +1547,9 @@ STYLE WS_CAPTION|WS_SYSMENU
15461547
EXSTYLE WS_EX_TOOLWINDOW
15471548
BEGIN
15481549
CONTROL "Find what: ",IDC_WHAT_STATIC_FIFOLDER,"Static",WS_CHILDWINDOW|WS_VISIBLE|WS_GROUP|SS_CENTERIMAGE,12,20,42,12
1549-
CONTROL "",IDC_WHAT_FOLDER_CBO,"ComboBox",WS_CHILDWINDOW|WS_VISIBLE|WS_TABSTOP|CBS_AUTOHSCROLL|CBS_DROPDOWN,54,20,207,13
1550+
CONTROL "",IDC_WHAT_FOLDER_CBO,"ComboBox",WS_CHILDWINDOW|WS_VISIBLE|WS_TABSTOP|CBS_AUTOHSCROLL|CBS_DROPDOWN|WS_VSCROLL,54,20,207,13
15501551
CONTROL "Replace with: ",IDC_SEARCH_RP_STC,"Static",WS_CHILDWINDOW|WS_VISIBLE|WS_GROUP|SS_CENTERIMAGE,2,36,48,12
1551-
CONTROL "",IDC_SEARCH_RP_CBO,"ComboBox",WS_CHILDWINDOW|WS_VISIBLE|WS_TABSTOP|CBS_AUTOHSCROLL|CBS_DROPDOWN,54,36,207,12
1552+
CONTROL "",IDC_SEARCH_RP_CBO,"ComboBox",WS_CHILDWINDOW|WS_VISIBLE|WS_TABSTOP|CBS_AUTOHSCROLL|CBS_DROPDOWN|WS_VSCROLL,54,36,207,12
15521553
CONTROL "Filters: ",IDC_SEARCH_FY_STC,"Static",WS_CHILDWINDOW|WS_VISIBLE|WS_GROUP|SS_CENTERIMAGE,12,36,42,12
15531554
CONTROL "",IDC_SEARCH_FY_CBO,"ComboBox",WS_CHILDWINDOW|WS_VISIBLE|WS_TABSTOP|CBS_AUTOHSCROLL|CBS_DROPDOWN,54,36,207,12
15541555
CONTROL "Directory: ",IDC_SEARCH_DIR_STC,"Static",WS_CHILDWINDOW|WS_VISIBLE|WS_GROUP|SS_CENTERIMAGE,12,54,42,12

locales/src/zh-cn.rc

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -429,7 +429,8 @@ BEGIN
429429
MENUITEM "管理代码片段", IDM_SOURCE_SNIPPET_CONFIGURE
430430
END
431431
MENUITEM MF_SEPARATOR
432-
MENUITEM "使用预设动作执行当前文件", IDM_PROGRAM_EXECUTE_ACTION
432+
MENUITEM "转换为C/C++数组类型", IDM_PROGRAM_CPLUS
433+
MENUITEM "使用预设动作执行此类文件", IDM_PROGRAM_EXECUTE_ACTION
433434
END
434435
POPUP "设置(&T)"
435436
BEGIN
@@ -1544,9 +1545,9 @@ STYLE WS_CAPTION|WS_SYSMENU
15441545
EXSTYLE WS_EX_TOOLWINDOW
15451546
BEGIN
15461547
CONTROL "查找目标: ",IDC_WHAT_STATIC_FIFOLDER,"Static",WS_CHILDWINDOW|WS_VISIBLE|WS_GROUP|SS_CENTERIMAGE,12,20,42,12
1547-
CONTROL "",IDC_WHAT_FOLDER_CBO,"ComboBox",WS_CHILDWINDOW|WS_VISIBLE|WS_TABSTOP|CBS_AUTOHSCROLL|CBS_DROPDOWN,54,20,207,13
1548+
CONTROL "",IDC_WHAT_FOLDER_CBO,"ComboBox",WS_CHILDWINDOW|WS_VISIBLE|WS_TABSTOP|CBS_AUTOHSCROLL|CBS_DROPDOWN|WS_VSCROLL,54,20,207,13
15481549
CONTROL "替换为: ",IDC_SEARCH_RP_STC,"Static",WS_CHILDWINDOW|WS_VISIBLE|WS_GROUP|SS_CENTERIMAGE,12,36,42,12
1549-
CONTROL "",IDC_SEARCH_RP_CBO,"ComboBox",WS_CHILDWINDOW|WS_VISIBLE|WS_TABSTOP|CBS_AUTOHSCROLL|CBS_DROPDOWN,54,36,207,12
1550+
CONTROL "",IDC_SEARCH_RP_CBO,"ComboBox",WS_CHILDWINDOW|WS_VISIBLE|WS_TABSTOP|CBS_AUTOHSCROLL|CBS_DROPDOWN|WS_VSCROLL,54,36,207,12
15501551
CONTROL "文件类型: ",IDC_SEARCH_FY_STC,"Static",WS_CHILDWINDOW|WS_VISIBLE|WS_GROUP|SS_CENTERIMAGE,12,36,42,12
15511552
CONTROL "",IDC_SEARCH_FY_CBO,"ComboBox",WS_CHILDWINDOW|WS_VISIBLE|WS_TABSTOP|CBS_AUTOHSCROLL|CBS_DROPDOWN,54,36,207,12
15521553
CONTROL "目录: ",IDC_SEARCH_DIR_STC,"Static",WS_CHILDWINDOW|WS_VISIBLE|WS_GROUP|SS_CENTERIMAGE,12,54,42,12

share/changelog

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,8 @@
1+
4.0.16 2025-08-28 adonais
2+
* 新增: 二进制文件转c数组
3+
* 修复: 搜索记录过多下拉框无法滚动的问题
4+
* 修复: 有时候复制剪切可能复制整行的问题
5+
16
4.0.15 2025-08-02 adonais
27
* 修复: 无标题文档保存时无法完成另存为操作
38

src/eu_api.c

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2020,8 +2020,9 @@ static char*
20202020
eu_cat_process(void)
20212021
{
20222022
char *pactions = NULL;
2023-
int count = on_doc_count();
2024-
if (count > 0)
2023+
/* Add a binary type */
2024+
int count = on_doc_count() + 1;
2025+
if (count > 0 && count < ACTIONS_MAX)
20252026
{
20262027
int offset = 0;
20272028
const size_t len = (size_t)(count * MAX_PATH);

src/eu_api.h

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -98,6 +98,7 @@
9898

9999
#define SNIPPET_FUNID 100
100100
#define PERROR_LEN 100
101+
#define ACTIONS_MAX 100
101102
#define MAYBE200MS 200
102103

103104
#ifndef MAX_BUFFER
@@ -555,7 +556,7 @@ struct eu_config
555556
char editor[MAX_PATH];
556557
char m_reserved_0[MAX_PATH];
557558
char m_reserved_1[MAX_PATH];
558-
char m_actions[100][MAX_PATH];
559+
char m_actions[ACTIONS_MAX][MAX_PATH];
559560
customize_set m_customize[DW_SIZE];
560561
};
561562

src/eu_edit.c

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -90,7 +90,7 @@ on_edit_cut(eu_tabpage *pnode)
9090
}
9191
else
9292
{
93-
on_sci_call(pnode, SCI_CUTALLOWLINE, 0, 0);
93+
on_sci_call(pnode, SCI_CUT, 0, 0);
9494
}
9595
}
9696
}
@@ -110,7 +110,7 @@ on_edit_copy_text(eu_tabpage *pnode)
110110
}
111111
else if (!pnode->plugin)
112112
{
113-
on_sci_call(pnode, SCI_COPYALLOWLINE, 0, 0);
113+
on_sci_call(pnode, SCI_COPY, 0, 0);
114114
}
115115
}
116116
}

src/eu_edit.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,7 @@
3535
#define TAB_NOT_BIN(p) (p->codepage != IDM_OTHER_BIN)
3636
#define TAB_HAS_PDF(p) (p->codepage == IDM_OTHER_PLUGIN)
3737
#define TAB_HAS_TXT(p) (!TAB_HEX_MODE(p) && !TAB_HAS_PDF(p))
38+
#define TAB_HAS_BIN(p) ((p->codepage == IDM_OTHER_BIN) || ((p->codepage == IDM_OTHER_PLUGIN) && TAB_HEX_MODE(p)))
3839
#define EOLS_UNDO 101
3940
#define ICONV_UNDO 102
4041

src/eu_file.c

Lines changed: 76 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2982,3 +2982,79 @@ on_file_reload_current(eu_tabpage *pnode)
29822982
}
29832983
}
29842984
}
2985+
2986+
void
2987+
on_file_convert_array(const eu_tabpage *pnode)
2988+
{
2989+
sptr_t len = on_sci_call(pnode, SCI_GETLENGTH, 0, 0);
2990+
if (len > BUFF_32M)
2991+
{
2992+
MSG_BOX(IDC_MSG_MEM_NOT_AVAIL, IDC_MSG_ERROR, MB_ICONERROR|MB_OK);
2993+
}
2994+
else if (pnode->phex && pnode->phex->pbase && pnode->phex->total_items > 0 && _tcslen(pnode->filename) > 0)
2995+
{
2996+
TCHAR full_path[MAX_BUFFER] = {'f','o','o','.','c','\0'};
2997+
if (on_file_get_filename_dlg(full_path, _countof(full_path), pnode->pathname) == SKYLARK_OK && _tcslen(full_path) > 0)
2998+
{
2999+
char *path = NULL;
3000+
FILE *fp = _tfopen(full_path, _T("wb"));
3001+
if (fp && (path = eu_utf16_utf8(pnode->filename, NULL)) != NULL)
3002+
{
3003+
size_t i = 0;
3004+
char desc[MAX_BUFFER] = {0};
3005+
const char *tail = "};\n";
3006+
const char *header = "/* created by skylark editor from file %s */\nstatic const unsigned char %s[%zu] = {\n";
3007+
_snprintf(desc, MAX_BUFFER - 1, header, path, "generate_resource", pnode->phex->total_items);
3008+
free(path);
3009+
fwrite(desc, 1, strlen(desc), fp);
3010+
for (i = 0; i < pnode->phex->total_items; ++i)
3011+
{
3012+
if (i == pnode->phex->total_items - 1)
3013+
{
3014+
if (!(i % 16))
3015+
{
3016+
fwrite(" ", 1, 2, fp);
3017+
}
3018+
sprintf(desc, "0x%02X", pnode->phex->pbase[i]);
3019+
fwrite(desc, 1, strlen(desc), fp);
3020+
fwrite("\n", 1, 1, fp);
3021+
}
3022+
else
3023+
{
3024+
if (!(i % 16))
3025+
{
3026+
fwrite(" ", 1, 2, fp);
3027+
sprintf(desc, "0x%02X", pnode->phex->pbase[i]);
3028+
fwrite(desc, 1, strlen(desc), fp);
3029+
fwrite(", ", 1, 2, fp);
3030+
}
3031+
else if ((i % 16) == 15)
3032+
{
3033+
sprintf(desc, "0x%02X", pnode->phex->pbase[i]);
3034+
fwrite(desc, 1, strlen(desc), fp);
3035+
if (i == pnode->phex->total_items - 1)
3036+
{
3037+
fwrite("\n", 1, 1, fp);
3038+
}
3039+
else
3040+
{
3041+
fwrite(",\n", 1, 2, fp);
3042+
}
3043+
}
3044+
else
3045+
{
3046+
sprintf(desc, "0x%02X", pnode->phex->pbase[i]);
3047+
fwrite(desc, 1, strlen(desc), fp);
3048+
fwrite(", ", 1, 2, fp);
3049+
}
3050+
}
3051+
}
3052+
fwrite(tail, 1, strlen(tail), fp);
3053+
}
3054+
if (fp)
3055+
{
3056+
fclose(fp);
3057+
}
3058+
}
3059+
}
3060+
}

src/eu_file.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -112,6 +112,7 @@ bool on_file_auto_notify(void);
112112
bool on_file_get_bakpath(eu_tabpage *pnode);
113113
bool on_file_map_hex(eu_tabpage *pnode, HANDLE hfile, const size_t nbyte);
114114
uint64_t on_file_get_avail_phys(void);
115+
void on_file_convert_array(const eu_tabpage *pnode);
115116

116117
#ifdef __cplusplus
117118
}

0 commit comments

Comments
 (0)