Compare commits

...

25 Commits

Author SHA1 Message Date
ASU
c8cebb921e Added Ctrl+Shift+M default hotkey for Switch Terminal Input Mode 2025-04-08 00:10:41 +02:00
ASU
c5bf0fc82d Added switch terminal input mode HotKey 2025-04-08 00:10:41 +02:00
Leonid Mashinskiy
a06265da2a Fix crash on startup due memory double-free.
Introduced in 93bbf6a42b87bd19c2e8374b52813e2b80bd3b7d
2025-04-08 00:02:42 +02:00
Johannes Altmanninger
389f78f20d Do not interpret "CSI = u" and "CSI ? u" as DECRC
Unfortunately fish shell version 4 is broken on ConEmu due to the
use of sequences like

    printf '\x1b[=5u'
    printf '\x1b[?u'

used for the kitty keyboard protocol.

ConEmu treats them like "CSI u" (restore cursor position).

Fix that.

Untested -- I haven't built ConEmu yet, I don't know much
about Windows and I don't know if it's still maintained.
But I'll be happy to test.
2025-04-07 23:32:16 +02:00
Maximus5
740b09c363 Merge branch 'daily' 2023-07-24 02:05:45 +02:00
Maximus5
90f76807d5 230724 release files 2023-07-24 02:03:35 +02:00
Maximus5
bd4489e48b 230724 Chocolatey and Nuget 2023-07-24 02:03:33 +02:00
Maximus5
bf2f25300c Internal. Fix deploy script 2023-07-24 01:57:30 +02:00
Maximus5
dead3d3fc5 230724 release files 2023-07-24 01:17:15 +02:00
Maximus5
b12b8f1771 230724 Chocolatey and Nuget 2023-07-24 01:17:07 +02:00
Maximus5
60683a1866 gh-2536: Do not emit control characters in title reports (capability fix). 2023-07-24 01:04:12 +02:00
Maximus5
36e157153b Internal. Add 7z exclusions 2023-07-23 18:12:48 +02:00
Maximus5
d2d65e5e5a l10n: translations were updated 2023-07-23 18:12:48 +02:00
trolzen
0fd8b5c879 fix link to section 2023-07-23 15:17:01 +02:00
Yevgeny Zhiglov
8b88630383 avoid running CodeQL when azure-pipelines.yml was edited and vice versa 2023-07-23 15:08:05 +02:00
Yevgeny Zhiglov
6736006a50 avoid running pipelines when only *.md and *.txt files are modified 2023-07-23 15:08:05 +02:00
Ben Harvie
51b8731c49 Create SECURITY.md 2023-07-23 15:07:09 +02:00
Maximus5
3c6e8f29d2 230723 release files 2023-07-23 14:14:12 +02:00
Maximus5
457752fabb 230723 Chocolatey and Nuget 2023-07-23 14:14:00 +02:00
Maximus5
1dc80e9202 Internal. Set github as a primary download mirror 2023-07-23 13:37:32 +02:00
System user; root
03c48ab024 Do not emit control characters in title reports
Signed-off-by: Martin Kemp <me@martinke.mp>
Co-authored-by: David Leadbeater <dgl@dgl.cx>
2023-07-23 13:06:18 +02:00
Maximus5
a5620b3f13 221218 release files 2022-12-19 04:58:51 +01:00
Maximus5
b38f2b4456 221218 Chocolatey and Nuget 2022-12-19 04:58:25 +01:00
Maximus5
cd9bb86360 Fix Window Title Reporting security issue.
More info: https://seclists.org/fulldisclosure/2003/Feb/341
2022-12-19 03:53:33 +01:00
Maximus5
b57048d6c5 Revert "gh-2458: Preliminary support of Far3 experimental feature 'Fullwidth-aware rendering'."
This reverts commit 1d39a1a41b090160174b82032640eb8233387c17.
2022-12-19 03:08:26 +01:00
36 changed files with 174 additions and 3043 deletions

View File

@ -27,7 +27,7 @@ Please read the [article on the official site](https://conemu.github.io/en/BadIs
If you catch a bug in the Adobe Reader you would not report it on Microsoft Connect because you run Reader in Windows, would you?
A lot of users say It works in cygwin or It works in git bash, but since both of them uses the mintty terminal, it can exhibit different behavior. Read more in [Do not compare with Cygwin or Git Bash](#donotcompare).
A lot of users say It works in cygwin or It works in git bash, but since both of them uses the mintty terminal, it can exhibit different behavior. Read more in [Do not compare with Cygwin or Git Bash](#do-not-compare-with-cygwin-or-git-bash).
##### TLDR;

View File

@ -11,6 +11,10 @@ on:
pull_request:
# The branches below must be a subset of the branches above
branches: [master, daily]
paths-ignore:
- '**/*.md'
- '**/*.txt'
- azure-pipelines.yml
schedule:
- cron: '0 0 * * 2'

2
Deploy/.gitignore vendored
View File

@ -19,3 +19,5 @@ user_env.cmd
downloads-*.txt
downloads-*.json
.idea

View File

@ -9,7 +9,9 @@ if exist "%~dp0user_env.cmd" (
)
set ex7zlist=-x!*.7z -x!*.aps -x!*.bak -x!*.bdf -x!*.cache -x!*.cod -x!.codeblocks -x!*.exp -x!*.gz -x!*.hab -x!*.ilk -x!*.ipch -x!*.lib -x!*.log -x!*.msi -x!*.ncb -x!*.new -x!*.obj -x!*.opt -x!*.pdb -x!*.plg -x!*.plog -x!*.psess -x!*.pvd -x!*.sln.cache -x!*.suo -x!*.tgz -x!*.ttf -x!*.user -x!*.vsp -x!*.zip -x!*684.* -x!*sdf -x!.gitignore -x!.svn -x!curl-7.21.4 -x!Debug -x!enc_temp_folder -x!enc_temp_folder -x!gcc -x!kl_parts_gcc.* -x!makefile_lt_vc -x!MouseWheelTilt.reg -x!rebar.bmp -x!Thumbs.db -x!time2.exe -x!toolbar -x!VTune -x!WhatsNew-ConEmu-Portable.txt -x!PortableApps_Installer -x!UnitTests.cmd -x!.svnignore -x!*.o -x!!*.txt -x!*.VC.db
set ex7zpack=-x!ConEmu.Gui.map -x!ConEmu64.Gui.map -x!ConEmu\*.map -x!ConEmu\ConEmu.Addons -x!ConEmu\Portable -x!UnitTests -x!Logs -x!*.VC.db
set ex7zpack=-x!ConEmu.Gui.map -x!ConEmu64.Gui.map -x!ConEmu\*.map -x!ConEmu\ConEmu.Addons -x!ConEmu\Portable -x!UnitTests -x!Logs -x!Descript.ion -x!*.VC.db -x!Tests_*.exe -x!far
rem ex7zpack changes should be placed in deploy.cmd and Deploy_git.cmd
setlocal
set ConEmuHooks=OFF
@ -61,7 +63,7 @@ rem if errorlevel 1 goto errcpy
set "ConEmu_Maximus5_dbg_7z=%CONEMU_DEPLOY%Debug\ConEmu.Maximus5.%BUILD_NO%.dbg.7z"
if exist "%ConEmu_Maximus5_dbg_7z%" del "%ConEmu_Maximus5_dbg_7z%"
7z a -r "%ConEmu_Maximus5_dbg_7z%" Release\*.map Release\*.pdb
7z a -r "%ConEmu_Maximus5_dbg_7z%" Release\*.map Release\*.pdb -x!Release\far
if errorlevel 1 goto err7z
set "ConEmuPack_7z=%CONEMU_DEPLOY%Pack\ConEmuPack.%BUILD_NO%.7z"
@ -71,7 +73,9 @@ rem if exist ConEmu.map (
rem if exist ConEmu1.map del ConEmu1.map
rem ren ConEmu.map ConEmu1.map
rem )
echo on
7z a -r -mx=9 -ms=255f64m "%ConEmuPack_7z%" ConEmu*.exe ConEmu*.map ConEmu\* plugins\* %ex7zlist% %ex7zpack%
@echo off
if errorlevel 1 goto err7z
rem if exist ConEmu1.map ren ConEmu1.map ConEmu.map
cd ..

View File

@ -2,7 +2,7 @@
"""
Prerequisities:
1. pip3 install PyYAML requests
1. pip3 install PyYAML requests transifex-python
2. set TX_TOKEN env.var. to your API token obtained at https://www.transifex.com/user/settings/api/
Add new language, e.g. Polish:
@ -30,6 +30,7 @@ import yaml # PyYAML | PyYAML.Yandex
from collections import OrderedDict
from enum import Enum
from requests.auth import HTTPBasicAuth
from transifex.api import transifex_api as tapi
def parse_args():
@ -337,10 +338,12 @@ class Transifex:
def pull(self, lang_id):
print('Pulling language {} from Transifex'.format(lang_id))
result = requests.get(
'{}/translation/{}/?{}'.format(
self.base_url, lang_id, self.file_format),
auth=HTTPBasicAuth('api', self.tx_token))
# https://developers.transifex.com/reference/api-python-sdk
tapi.setup(auth=self.tx_token)
resource = tapi.Resource.get(project="o:conemu:p:conemu-sources")
language = tapi.Language.get(f"l:{lang_id}")
download_url = tapi.ResourceTranslationsAsyncDownload.download(resource=resource, language=language)
result = requests.get(download_url)
print(' TX result: %s' % result.status_code)
if result.status_code == 200:
# print(result.encoding)

View File

@ -14,6 +14,7 @@ pushd "%~dp0.."
set L10N_PATH=Release/ConEmu/ConEmu.l10n
echo Calling "%PYTHON3%" "%~dp0l10n.py" --l10n %L10N_PATH% --tx-pull all --write-l10n
call "%PYTHON3%" "%~dp0l10n.py" --l10n %L10N_PATH% --tx-pull all --write-l10n
if errorlevel 1 (
echo Failed to load updated translations from transifex

View File

@ -1,6 +1,6 @@
[Version]
PackageVersion=22.8.7.0
DisplayVersion=220807
PackageVersion=23.7.24.0
DisplayVersion=230724
[Format]
Type=PortableApps.comFormat

View File

@ -1475,6 +1475,8 @@
"cbIntegralSize": {
"en": [ "When checked, ConEmu windows size is changed proportionally to console cells.\n"
, "Option is disabled automatically for Quake and Inside modes, and for 100% window width or height." ],
"es": [ "Cuando está habilitado, el tamaño de las ventanas de ConEmu se cambia proporcionalmente a las celdas de la consola.\n"
, "Esta opción se deshabilita para los modos Quake y dentro, y si el ancho o el alto de la ventana es del 100%." ],
"pl": [ "Gdy zaznaczone, rozmiar okien ConEmu jest zmieniany proporcjonalnie do komórek konsoli.\n"
, "Opcja jest automatycznie wyłączana w trybach Quake i Inside oraz dla 100% szerokości lub wysokości okna." ],
"ko": [ "선택하면 콘솔 셀에 비례하여 ConEmu 창 크기가 변경됩니다.\n"
@ -3503,6 +3505,7 @@
,
"tFarHourglass": {
"en": "Far Manager not-responding duration in milliseconds before changing mouse cursor to AppStarting",
"es": "Duración de no-respuesta de Far Manager en milisegundos antes de cambiar el cursor a InicioApp",
"pl": "Czas braku odpowiedzi Far Managera w ms przed zmianą kursora myszy na Uruchamianie aplikacji",
"ko": "마우스 커서를 AppStarting으로 변경하기 전 Far Manager가 응답하지 않는 밀리초 시간",
"ko_KR": "마우스 커서를 AppStarting으로 변경하기 전 Far Manager가 응답하지 않는 밀리초 시간",
@ -5608,6 +5611,7 @@
"en": "Show Edit context menu",
"ru": "Показать контекстное меню редактирования",
"zh": "显示编辑右键菜单",
"es": "Mostrar el menú contextual Editar",
"pl": "Pokaż edycje menu kontekstowego",
"it_IT": "Mostra menu Modifica",
"ko": "상황에 맞는 메뉴 편집 표시",
@ -5618,6 +5622,7 @@
"en": "Show Edit context menu",
"ru": "Показать контекстное меню редактирования",
"zh": "显示编辑右键菜单",
"es": "Mostrar el menú contextual Editar",
"pl": "Pokaż edycje menu kontekstowego",
"it_IT": "Mostra menu Modifica",
"ko": "상황에 맞는 메뉴 편집 표시",
@ -6290,6 +6295,7 @@
,
"vkSetFocusParent": {
"en": "Set focus to the ConEmu parent window (ConEmu Inside mode)",
"es": "Centrar el foco en la ventana matriz de ConEmu (modo dentro de ConEmu)",
"pl": "Ustaw fokus na okno nadrzędne ConEmu (tryb ConEmu Inside)",
"ko": "ConEmu 부모 창에 포커스 설정 (ConEmu Inside 모드)",
"ko_KR": "ConEmu 부모 창에 포커스 설정 (ConEmu Inside 모드)",
@ -6555,7 +6561,7 @@
"zh": "显示 ConEmu 系统菜单 (fires on key down)",
"_de": "Zeige ConEmu-Systemmenü",
"_ja": "ConEmuシステムメニューを表示する",
"_es": "Mostrar menú del sistema de ConEmu",
"es": "Mostrar el menú de sistema de ConEmu (se lanza al presionar la tecla)",
"pl": "Pokaż menu systemowe ConEmu (uruchamia się po naciśnięciu klawisza)",
"ko": "ConEmu 시스템 메뉴 표시 (키를 누르면 실행 됨)",
"ko_KR": "ConEmu 시스템 메뉴 표시 (키를 누르면 실행 됨)",
@ -6567,7 +6573,7 @@
"zh": "显示 ConEmu 系统菜单 (fires on key release)",
"_de": "Zeige ConEmu-Systemmenü",
"_ja": "ConEmuシステムメニューを表示する",
"_es": "Mostrar menú del sistema de ConEmu",
"es": "Mostrar el menú de sistema de ConEmu (se lanza al soltar la tecla)",
"pl": "Pokaż menu systemowe ConEmu (uruchamia się po zwolnieniu klawisza)",
"ko": "ConEmu 시스템 메뉴 표시 (키를 놓으면 실행 됨)",
"ko_KR": "ConEmu 시스템 메뉴 표시 (키를 놓으면 실행 됨)",
@ -7098,6 +7104,7 @@
"en": "Alternative mode is off",
"ru": "Альтернативный режим выключен",
"zh": "替代模式 关闭",
"es": "El modo alternativo está desactivado",
"pl": "Tryb alternatywny jest wyłączony",
"it_IT": "La modalità alternativa è disattivata",
"ko": "대체 모드가 꺼짐",
@ -7108,6 +7115,7 @@
"en": "Alternative mode is ON (console frozen)",
"ru": "Альтернативный режим включен (консоль заморожена)",
"zh": "替代模式 开启(控制台冻结)",
"es": "El modo alternativo está activado (consola congelada)",
"pl": "Tryb alternatywny jest włączony (konsola zawieszona)",
"it_IT": "La modalità alternativa è ON (console bloccata)",
"ko": "대체 모드가 켜짐 (콘솔 고정)",
@ -7240,6 +7248,7 @@
"en": "BufferHeight mode is off",
"ru": "Режим BufferHeight выключен",
"zh": "缓存高度模式 关闭",
"es": "Modo AlturaBuffer está desactivado",
"pl": "Tryb BufferHeight jest wyłączony",
"it_IT": "AltezzaDinamica disattiva",
"ko": "버퍼 높이 모드가 꺼짐",
@ -7250,6 +7259,7 @@
"en": "BufferHeight mode is ON (scrolling enabled)",
"ru": "Режим BufferHeight включен (прокрутка включена)",
"zh": "缓存高度模式 开启(滚动已启动)",
"es": "Modo AlturaBuffer está activado (scroll habilitado)",
"pl": "Tryb BufferHeight jest włączony (przewijanie włączone)",
"it_IT": "AltezzaDinamica attiva (scorrimento abilitato)",
"ko": "버퍼 높이 모드가 켜짐 (스크롤 사용 가능)",
@ -7261,6 +7271,7 @@
"ru": "Закрыть ВСЕ консоли",
"zh": "关闭所有控制台",
"de": "ALLE Konsolen schließen",
"es": "Cerrar todas las consolas",
"pl": "Zamknij WSZYSTKIE konsole",
"it_IT": "Chiudi TUTTE le console",
"ko": "모든 콘솔 닫기",
@ -7272,6 +7283,7 @@
"ru": "Закрыть только активную консоль",
"zh": "只关闭活动的控制台",
"de": "Nur aktive Konsole schließen",
"es": "Cerrar sólo consola activa",
"pl": "Zamknij tylko aktywną konsolę",
"it_IT": "Chiudi solo le console attive",
"ko": "활성 콘솔만 닫기",
@ -7283,6 +7295,7 @@
"ru": "Закрыть",
"zh": "关闭",
"de": "Schließen",
"es": "Cerrar",
"pl": "Zamknij",
"it_IT": "Chiudi",
"ko": "닫기",
@ -7294,6 +7307,7 @@
"ru": "Закрыть все",
"zh": "全部关闭",
"de": "Alle schließen",
"es": "Cerrar todo",
"pl": "Zamknij wszystko",
"it_IT": "Chiudi tutto",
"ko": "모두 닫기",
@ -7305,6 +7319,7 @@
"ru": "Закрыть 1 консоль",
"zh": "关闭一个控制台",
"de": "1 Konsole schließen",
"es": "Cerrar una consola",
"pl": "Zamknij 1 konsole",
"it_IT": "Chiudi 1 console",
"ko": "1 콘솔 닫기",
@ -7316,6 +7331,7 @@
"ru": "консоли",
"zh": "控制台",
"de": "Konsolen",
"es": "consolas",
"pl": "konsole",
"it_IT": "console",
"ko": "콘솔",
@ -7325,6 +7341,7 @@
"lng_ConfirmCloseBtnGroup": {
"en": "Close group of",
"zh": "关闭",
"es": "Cerrar grupo de",
"pl": "Zamknij grupe",
"it_IT": "Chiudi gruppo di",
"ko": "그룹 닫기",
@ -7336,6 +7353,7 @@
"ru": "Подтвердить закрытие активного дочернего окна?",
"zh": "同意关闭活动的窗口?",
"de": "Das Schließen des aktiven Unterfensters bestätigen?",
"es": "¿Cerrar la consola hijo activa?",
"pl": "Czy potwierdzić zamknięcie aktywnego okna podrzędnego?",
"it_IT": "Conferma chiusura della finestra attiva?",
"ko": "활성 자식 창을 닫으시겠습니까?",
@ -7347,6 +7365,7 @@
"ru": "Подтвердить закрытие консоли?",
"zh": "同意关闭控制台?",
"de": "Wollen Sie die Konsole wirklich schließen?",
"es": "¿Cerrar consola?",
"pl": "Potwierdź zamknięcie konsoli?",
"it_IT": "Conferma chiusura console?",
"ko": "콘솔을 닫으시겠습니까?",
@ -7358,6 +7377,7 @@
"ru": "Подтвердить закрытие редактора Far?",
"zh": "同意关闭 Far 编辑器?",
"de": "Soll der FAR-Editor geschlossen werden?",
"es": "¿Cerrar editor Far?",
"pl": "Potwierdź zamknięcie edytora Far?",
"it_IT": "Conferma chiusura di editor Far?",
"ko": "Far 편집기를 닫으시겠습니까?",
@ -7369,6 +7389,7 @@
"ru": "Подтвердить закрытие группы?",
"zh": "同意关闭?",
"de": "Soll die Gruppe geschlossen werden?",
"es": "¿Cerrar grupo?",
"pl": "Potwierdzić zamykającą grupę?",
"it_IT": "Conferma chiusura gruppo?",
"ko": "그룹을 닫으시겠습니까?",
@ -7380,6 +7401,7 @@
"ru": "Подтвердить закрытие Far viewer?",
"zh": "同意关闭 Far 浏览器?",
"de": "Soll der FAR-Viewer geschlossen werden?",
"es": "¿Cerrar visor Far?",
"pl": "Potwierdzić zamknięcie przeglądarki Far?",
"it_IT": "Conferma chiusura di visualizzatore Far?",
"ko": "Far 뷰어를 닫으시겠습니까?",
@ -7391,6 +7413,7 @@
"ru": "Подтвердить закрытие?",
"zh": "同意关闭?",
"de": "Soll ConEmu geschlossen werden?",
"es": "¿Cerrar?",
"pl": "Potwierdzasz zamknięcie?",
"it_IT": "Conferma chiusura?",
"ko": "닫으시겠습니까?",
@ -7402,6 +7425,7 @@
"ru": "Ничего не закрывать",
"zh": "不关闭任何东西",
"de": "Nichts schließen",
"es": "No cerrar nada",
"pl": "Nie zamykaj niczego",
"it_IT": "Non chiudere nulla",
"ko": "아무것도 닫지 않음",
@ -7413,6 +7437,7 @@
"ru": "Незавершенные операции",
"zh": "不完整的操作",
"de": "Noch nicht beendete Prozesse",
"es": "Operaciones sin completar",
"pl": "Niekompletne operacje",
"it_IT": "Operazioni non complete",
"ko": "불완전한 작업",
@ -7423,6 +7448,7 @@
"en": "Terminate all but shell processes?",
"ru": "Завершить все процессы, кроме оболочки?",
"zh": "终止除 shell 之外的所有进程?",
"es": "¿Terminar todo excepto los procesos del intérprete de comandos?",
"pl": "Zakończyć wszystkie procesy oprócz procesów powłoki?",
"it_IT": "Chiudi tutti i processi non shell?",
"ko": "쉘 프로세스를 제외한 모든 프로세스를 종료하시겠습니까?",
@ -7432,6 +7458,7 @@
"lng_ConfirmKillingQ": {
"en": "Confirm killing?",
"zh": "同意杀死?",
"es": "¿Matar?",
"pl": "Potwierdzasz zabijanie?",
"it_IT": "Conferma chiusura forzata?",
"ko": "죽이시겠습니까?",
@ -7443,6 +7470,7 @@
"ru": "Несохраненные окна редактора",
"zh": "编辑窗口没有保存",
"de": "Editor-Fenster mit nicht gespeicherten Änderungen",
"es": "Ventanas de editor sin salvar",
"pl": "Niezapisane okna edytora",
"it_IT": "Finestre editor non salvate",
"ko": "저장되지 않은 편집기 창",
@ -7454,6 +7482,7 @@
"ru": "Создать новую консоль",
"zh": "创建新控制台",
"de": "Neue Konsole erstellen",
"es": "Crear nueva consola",
"pl": "Utwórz nową konsolę",
"it_IT": "Crea nuova console",
"ko": "새 콘솔 만들기",
@ -7763,6 +7792,7 @@
"ru": "Развернуть окно",
"zh": "最大化窗口",
"de": "Fenster maximieren",
"es": "Maximizar ventana",
"pl": "Maksymalizuj okno",
"it_IT": "Massimizza finestra",
"ko": "창 최대화",
@ -7774,6 +7804,7 @@
"ru": "О программе / Помощь",
"zh": "关于(&a/ 帮助",
"de": "Ü&ber / Hilfe",
"es": "&Acerca de / Ayuda",
"pl": "& Informacje / Pomoc",
"it_IT": "Informazioni / &Aiuto",
"ko": "정보/도움말(&A)",
@ -7784,6 +7815,7 @@
"en": "All task tabs",
"ru": "Все вкладки задач",
"zh": "所有任务标签",
"es": "Todas las pestañas de tareas",
"pl": "Wszystkie zakładki zadań",
"ko": "모든 작업 탭",
"ko_KR": "모든 작업 탭",
@ -7794,6 +7826,7 @@
"ru": "Всегда сверху",
"zh": "置顶(%w",
"de": "Immer im &Vordergrund",
"es": "Siempre encima",
"pl": "Za&wsze na górze",
"it_IT": "Sempre in primo piano",
"ko": "항상 맨 위에(&W)",
@ -7805,6 +7838,7 @@
"ru": "Прикрепить к...",
"zh": "附上...",
"de": "Anderes Fenster ankoppeln...",
"es": "Fijar a...",
"pl": "Dołączyć do...",
"it_IT": "Collegati a...",
"ko": "첨부...",
@ -7815,6 +7849,7 @@
"en": "Auto scro&ll",
"ru": "Автопрокрутка",
"zh": "自动滚动(&l",
"es": "Desplazamiento automático",
"pl": "Auto Scro&ll",
"it_IT": "Scorrimento automatico",
"ko": "자동 스크롤(&L)",
@ -7825,6 +7860,7 @@
"en": "Bring &here",
"zh": "移动到这里(&H)",
"de": "Auf aktiven Bildschirm verschieben",
"es": "Traer aquí",
"pl": "Przynieś &tutaj",
"ko": "여기로 가져오기(&H)",
"ko_KR": "여기로 가져오기(&H)",
@ -7835,6 +7871,7 @@
"ru": "Сходство / приоритет...",
"zh": "关系和优先级(&F)...",
"de": "Prozessor-&Zuordnung/Priorität",
"es": "Afinidad/prioridad",
"pl": "A&ffinity/ priorytet ...",
"it_IT": "A&ffinità/priorità...",
"ko": "선호도/우선 순위(&F)...",
@ -7846,6 +7883,7 @@
"ru": "Проверить обновления",
"zh": "更新(&c",
"de": "Auf neue &Version prüfen",
"es": "&Comprobar actualizaciones",
"pl": "&Sprawdź aktualizacje",
"it_IT": "Controlla &aggiornamenti",
"ko": "업데이트 확인(&C)",
@ -7857,6 +7895,7 @@
"ru": "Дочернее системное меню...",
"zh": "系统子菜单...",
"de": "Systemmenü des eingebetteten Fensters...",
"es": "Menú del sistema hijo...",
"pl": "Menu systemowe dla dzieci ...",
"ko": "자식 시스템 메뉴...",
"ko_KR": "자식 시스템 메뉴...",
@ -7867,6 +7906,7 @@
"ru": "Очистить историю...",
"zh": "清除日志...",
"de": "Verlauf leeren...",
"es": "Borrar historial...",
"pl": "Czysta historia...",
"it_IT": "Pulisci cronologia...",
"ko": "사용 내역 지우기...",
@ -7878,6 +7918,7 @@
"ru": "Закрыть консоль",
"zh": "关闭控制台(&c...",
"de": "Konsole s&chließen",
"es": "&Cerrar consola",
"pl": "&Zamknij konsolę",
"it_IT": "&Chiudi console",
"ko": "콘솔 닫기(&C)",
@ -7889,6 +7930,7 @@
"ru": "Закрыть группу вкладок",
"zh": "关闭标签组(&c",
"de": "Reiter-Gruppe s&chließen",
"es": "&Cerrar grupo de pestañas",
"pl": "&Zamknij grupę kart",
"it_IT": "&Chiudi gruppo di schede",
"ko": "탭 그룹 닫기(&C)",
@ -7900,6 +7942,7 @@
"ru": "Закрыть вкладку",
"zh": "关闭标签(&c",
"de": "Reiter s&chließen",
"es": "&Cerrar pestaña",
"pl": "&Zamknij karte",
"it_IT": "&Chiudi scheda",
"ko": "탭 닫기(&C)",
@ -7911,6 +7954,7 @@
"ru": "Копировать",
"zh": "复制(&y",
"de": "&Kopieren",
"es": "Copiar",
"pl": "Kopiu&j",
"it_IT": "Cop&ia",
"ko": "복사(&Y)",
@ -7922,6 +7966,7 @@
"ru": "Копировать все",
"zh": "复制全部(&a",
"de": "&Alles kopieren",
"es": "Copiar todo",
"pl": "Kopiuj &wszystko",
"it_IT": "Copi&a tutto",
"ko": "모두 복사(&A)",
@ -7933,6 +7978,7 @@
"ru": "Только обычный текст",
"zh": "纯文字(&t",
"de": "Nur &Text kopieren",
"es": "Sólo texto plano",
"pl": "Zwykły &tylko tekst",
"it_IT": "Solo &testo semplice",
"ko": "일반 텍스트만(&T)",
@ -7944,6 +7990,7 @@
"ru": "Копировать в HTML-формате",
"zh": "复制 &HTML 格式",
"de": "Im &HTML-Format kopieren",
"es": "Copiar formato HTML",
"pl": "Kopiuj &Format HTML",
"it_IT": "Copia formato &HTML",
"ko": "HTML 형식 복사(&H)",
@ -7955,6 +8002,7 @@
"ru": "Копировать как HTML",
"zh": "复制成 HTML&s",
"de": "Al&s HTML-Quelltext kopieren",
"es": "Copiar como HTML",
"pl": "Kopiuj plik& HTML",
"it_IT": "Copia co&me HTML",
"ko": "HTML로 복사(&S)",
@ -7966,6 +8014,7 @@
"ru": "Последовательности ANSI",
"zh": "A&NSI 序列",
"de": "Text mit A&NSI-Sequenzen kopieren",
"es": "Secuencias ANSI",
"pl": "A&NSI sekwencje",
"it_IT": "Sequenze A&NSI",
"ko": "ANSI 시퀀스(&N)",
@ -7977,6 +8026,7 @@
"ru": "Найти текст...",
"zh": "搜索(&f",
"de": "Text s&uchen...",
"es": "Buscar texto",
"pl": "&Znajdź tekst...",
"it_IT": "&Trova testo...",
"ko": "텍스트 찾기(&F)...",
@ -7988,6 +8038,7 @@
"ru": "Отметить блок",
"zh": "标记块(&b",
"de": "&Bereich markieren",
"es": "Marcar bloque",
"pl": "Zaznacz &zablokuj",
"ko": "블록 표시(&B)",
"ko_KR": "블록 표시(&B)",
@ -7998,6 +8049,7 @@
"ru": "Отметить текст",
"zh": "标记文字(&k",
"de": "Text mar&kieren",
"es": "Marcar texto",
"pl": "Zaznacz tekst",
"ko": "텍스트 표시(&K)",
"ko_KR": "텍스트 표시(&K)",
@ -8008,6 +8060,7 @@
"ru": "Вставить",
"zh": "粘贴(&p",
"de": "&Einfügen",
"es": "&Pegar",
"pl": "&Wklej",
"it_IT": "&Incolla",
"ko": "붙여넣기(&P)",
@ -8019,6 +8072,7 @@
"ru": "Свойства...",
"zh": "属性(&p",
"de": "&Fenster-Eigenschaften...",
"es": "&Propiedades...",
"pl": "&Posiadłość",
"it_IT": "&Proprietà...",
"ko": "속성(&P)...",
@ -8030,6 +8084,7 @@
"ru": "Настоящая консоль",
"zh": "真实控制台(&R)",
"de": "&Echtes Konsolenfenster anzeigen",
"es": "Consola real",
"pl": "&Prawdziwa konsola",
"it_IT": "Console &reale",
"ko": "실제 콘솔(&R)",
@ -8041,6 +8096,7 @@
"ru": "Отладка активного процесса...",
"zh": "调试活动的进程...&a",
"de": "&Aktiven Prozess untersuchen...",
"es": "Depurar proceso activo...",
"pl": "Debugowanie &aktywny proces.",
"it_IT": "Debug processi &attivi...",
"ko": "활성 프로세스 디버그(&A)...",
@ -8052,6 +8108,7 @@
"ru": "Показать утверждение",
"zh": "显示断言",
"de": "Fehlermeldung anzeigen",
"es": "Mostrar sentencia",
"pl": "Pokaż potwierdzenie",
"it_IT": "Mostra asserzione",
"ko": "주장 표시",
@ -8063,6 +8120,7 @@
"ru": "Журнал отладки",
"zh": "调试日志GUI",
"de": "Protokoll für Feh&lersuche (GUI)",
"es": "Depurar traza (GUI)",
"pl": "Debug &log (GUI)",
"it_IT": "&Log debug (GUI)",
"ko": "디버그 로그 (GUI)(&L) ",

View File

@ -20,7 +20,22 @@ https://conemu.github.io/en/Whats_New.html
-------------------------------------------
2022.8.7
2023.7.24
* gh-2536: Do not emit control characters in title reports (capability fix).
* l10n: translations were updated
2023.7.23
* gh-2536: Do not emit control characters in title reports.
2022.12.18 (stable)
* Fix Window Title Reporting security issue.
More info: https://seclists.org/fulldisclosure/2003/Feb/341
* gh-2458: Preliminary support of Far3 experimental feature 'Fullwidth-aware rendering' temporarily removed.
2022.8.7 (alpha)
* gh-2458: Preliminary support of Far3 experimental feature 'Fullwidth-aware rendering'.
* l10n: translations were updated
* New binaries are signed with new certificate issued by Sectigo.

5
SECURITY.md Normal file
View File

@ -0,0 +1,5 @@
# Security Policy
## Reporting a Vulnerability
Please report security issues to `ConEmu.Maximus5@gmail.com`

View File

@ -8,6 +8,13 @@ trigger:
include:
- master
- daily
paths:
exclude:
- '**/*.md'
- '*.md'
- '**/*.txt'
- '*.txt'
- .github/workflows/codeql-analysis.yml
pool:
vmImage: 'windows-2019'

View File

@ -3,7 +3,7 @@
<metadata>
<id>ConEmu.Core</id>
<version>22.8.7.0</version>
<version>23.7.24.0</version>
<title>ConEmu.Core</title>
<authors>Maximus5</authors>
<owners>Maximus5</owners>

View File

@ -3,7 +3,7 @@
<metadata>
<id>ConEmu</id>
<version>22.8.7.0</version>
<version>23.7.24.0</version>
<title>ConEmu</title>
<authors>Maximus5</authors>
<owners>Maximus5</owners>

View File

@ -1,6 +1,6 @@
$package = 'ConEmu'
$version = '22.08.07'
$sha256 = 'E0ADFD2FFBEB44C9125A626AD600CCFBDEACBBA0624DF37D2DDD6C6D27D8D578'
$version = '23.07.24'
$sha256 = '2A56EDD5515DDD916410DE3D84E00069CE07566B2F81C612A4241A8B109D7F4C'
$isSytem32Bit = (($Env:PROCESSOR_ARCHITECTURE -eq 'x86') -and `
($Env:PROCESSOR_ARCHITEW6432 -eq $null))

View File

@ -1,5 +1,5 @@
$package = 'ConEmu'
$version = '22.08.07'
$version = '23.07.24'
$isSytem32Bit = (($Env:PROCESSOR_ARCHITECTURE -eq 'x86') -and `

View File

@ -157,7 +157,7 @@ THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
//#define CONEMU_ANIMATE_DURATION_MAX 5000
const wchar_t* gsHomePage = CEHOMEPAGE; //L"https://conemu.github.io";
const wchar_t* gsDownlPage = CEDOWNLPAGE; //L"https://www.fosshub.com/ConEmu.html";
const wchar_t* gsDownlPage = CEDOWNLPAGE; //L"https://conemu.github.io/en/Downloads.html";
const wchar_t* gsFirstStart = CEFIRSTSTART; //L"https://conemu.github.io/en/SettingsFast.html";
const wchar_t* gsReportBug = CEREPORTBUG; //L"https://conemu.github.io/en/Issues.html";
const wchar_t* gsReportCrash = CEREPORTCRASH; //L"https://conemu.github.io/en/Issues.html";
@ -2610,6 +2610,18 @@ CConEmuMain::~CConEmuMain()
}
#endif
void CConEmuMain::AskChangeTermMode()
{
CVConGuard VCon;
if (GetActiveVCon(&VCon) < 0)
return;
CVirtualConsole *pVCon = VCon.VCon();
CRealConsole *pRCon = pVCon->RCon();
if (!pRCon) return;
pRCon ->StartStopTermMode(tmc_TerminalType, cta_Switch);
}
void CConEmuMain::AskChangeBufferHeight()
{
CVConGuard VCon;

View File

@ -597,6 +597,7 @@ class CConEmuMain
int ActiveConNum(); // 0-based
int GetConCount(); // количество открытых консолей
void AskChangeBufferHeight();
void AskChangeTermMode();
void AskChangeAlternative();
void AttachToDialog();
void CheckFocus(LPCWSTR asFrom);

View File

@ -525,6 +525,14 @@ bool CConEmuCtrl::key_MultiBuffer(const ConEmuChord& VkState, bool TestOnly, con
return true;
}
// pRCon may be nullptr
bool CConEmuCtrl::key_SwitchTermMode(const ConEmuChord& VkState, bool TestOnly, const ConEmuHotKey* hk, CRealConsole* pRCon)
{
if (TestOnly)
return true;
gpConEmu->AskChangeTermMode();
return true;
}
// pRCon may be nullptr
bool CConEmuCtrl::key_DuplicateRoot(const ConEmuChord& VkState, bool TestOnly, const ConEmuHotKey* hk, CRealConsole* pRCon)
{

View File

@ -106,6 +106,7 @@ public:
static bool WINAPI key_MultiRecreate(const ConEmuChord& VkState, bool TestOnly, const ConEmuHotKey* hk, CRealConsole* pRCon);
static bool WINAPI key_AlternativeBuffer(const ConEmuChord& VkState, bool TestOnly, const ConEmuHotKey* hk, CRealConsole* pRCon);
static bool WINAPI key_MultiBuffer(const ConEmuChord& VkState, bool TestOnly, const ConEmuHotKey* hk, CRealConsole* pRCon);
static bool WINAPI key_SwitchTermMode(const ConEmuChord& VkState, bool TestOnly, const ConEmuHotKey* hk, CRealConsole* pRCon);
static bool WINAPI key_DuplicateRoot(const ConEmuChord& VkState, bool TestOnly, const ConEmuHotKey* hk, CRealConsole* pRCon);
static bool WINAPI key_DuplicateRootAs(const ConEmuChord& VkState, bool TestOnly, const ConEmuHotKey* hk, CRealConsole* pRCon);
static bool WINAPI key_MultiCmd(const ConEmuChord& VkState, bool TestOnly, const ConEmuHotKey* hk, CRealConsole* pRCon);

View File

@ -539,7 +539,7 @@ bool CheckLockFrequentExecute(DWORD& Tick, DWORD Interval);
#define LockFrequentExecuteStatic(Interval) static DWORD LastExecuteTick; if (CheckLockFrequentExecute(LastExecuteTick,Interval))
extern const wchar_t* gsHomePage; // = L"https://conemu.github.io";
extern const wchar_t* gsDownlPage; // = L"http://www.fosshub.com/ConEmu.html";
extern const wchar_t* gsDownlPage; // = L"https://conemu.github.io/en/Downloads.html";
extern const wchar_t* gsFirstStart; // = L"https://conemu.github.io/en/SettingsFast.html";
extern const wchar_t* gsReportBug; // = L"https://conemu.github.io/en/Issues.html";
extern const wchar_t* gsReportCrash; // = L"https://conemu.github.io/en/Issues.html";

View File

@ -311,6 +311,8 @@ int ConEmuHotKeyList::AllocateHotkeys()
.SetHotKey(VK_PAUSE);
Add(vkMultiBuffer, chk_User, L"Multi.Scroll", CConEmuCtrl::key_MultiBuffer)
;
Add(vkSwitchTermMode, chk_User, L"Multi.SwitchTermMode", CConEmuCtrl::key_SwitchTermMode)
.SetHotKey('M',VK_CONTROL,VK_SHIFT);
Add(vkMultiGroup, chk_User, L"Multi.GroupInput" ).SetMacro(L"GroupInput(0)")
.SetHotKey('G', VK_APPS);
Add(vkMultiGroupAll, chk_User, L"Multi.GroupInputAll" ).SetMacro(L"GroupInput(3)")

View File

@ -408,6 +408,7 @@ static LngPredefined gsDataHints[] = {
{ vkMoveTabRight, L"Move active tab rightward" },
{ vkMultiAltCon, L"Show alternative console buffer (last command output)" },
{ vkMultiBuffer, L"Switch bufferheight mode" },
{ vkSwitchTermMode, L"Switch Terminal Input Mode" },
{ vkMultiClose, L"Close active console" },
{ vkMultiCmd, L"Create new %s console" },
{ vkMultiGroup, L"Group keyboard input for visible splits" },

View File

@ -44,11 +44,11 @@ THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
#define szRetryVersionIniCheck \
L"ConEmu is unable to load current version information from servers.\n" \
L"You may either check and download new versions manually from\n" \
CEDOWNLPAGE /* http://www.fosshub.com/ConEmu.html */ L"\n" \
CEDOWNLPAGE /* https://conemu.github.io/en/Downloads.html */ L"\n" \
L"or let ConEmu retry the check.\n"
#define szRetryPackageDownload \
L"ConEmu is unable to download update package.\n" \
L"You may either download new versions manually from\n" \
CEDOWNLPAGE /* http://www.fosshub.com/ConEmu.html */ L"\n" \
CEDOWNLPAGE /* https://conemu.github.io/en/Downloads.html */ L"\n" \
L"or let ConEmu retry the downloading.\n"

View File

@ -431,8 +431,6 @@ bool CVConLine::ParseLine(bool abForce, unsigned anTextWidth, unsigned anFontWid
const bool bEnhanceGraphics = gpSet->isEnhanceGraphics;
const bool bUseAlternativeFont = _bool(gpSet->isFixFarBorders);
int cjkShift = 0;
for (unsigned j = 0; j < TextWidth;)
{
bool bPair = ((j+1) < TextWidth);
@ -444,7 +442,7 @@ bool CVConLine::ParseLine(bool abForce, unsigned anTextWidth, unsigned anFontWid
VConTextPart* p = TextParts+(PartsCount++);
//TODO: DBCS cell number, it may differ from j
p->Init(j, j + cjkShift, this);
p->Init(j, j, this);
// Process Far Dialogs to justify rectangles and frames
TextPartFlags dlgBorder = j ? isDialogBorderCoord(j) : TRF_None;
@ -550,8 +548,6 @@ bool CVConLine::ParseLine(bool abForce, unsigned anTextWidth, unsigned anFontWid
while ((j2 < TextWidth) && (ConAttrLine[j2] == attr) && isCharCJK(ConCharLine[j2]))
j2++;
}
if (!bPair)
cjkShift += (j2 - j);
}
else if (bUseAlternativeFont && isCharAltFont(wc))
{
@ -593,26 +589,6 @@ bool CVConLine::ParseLine(bool abForce, unsigned anTextWidth, unsigned anFontWid
j = j2;
}
// We have trailing spaces at the end of console line if it contains flags
// COMMON_LVB_LEADING_BYTE & COMMON_LVB_TRAILING_BYTE. That means RealConsole
// assigned two real cells per one CJK (doublespace char).
// Let's try to crop silently these spaces
for (int cut = cjkShift; cut > 0 && PartsCount > 0;)
{
auto& lastPart = TextParts[PartsCount - 1];
if ((lastPart.Flags & (TRF_SizeFree|TRF_TextSpacing)) != (TRF_SizeFree|TRF_TextSpacing))
{
break;
}
if (lastPart.Length > static_cast<unsigned>(cut))
{
lastPart.Length -= cut;
break;
}
cut -= static_cast<int>(lastPart.Length);
--PartsCount;
}
return true;
}

View File

@ -162,6 +162,7 @@ protected:
protected:
friend struct VConTextPart;
// Members
CRealConsole* mp_RCon;
// This corresponds to "dialogs" - regions framed with preudographics
int mn_DialogsCount;

View File

@ -1352,6 +1352,7 @@
#define stStartupShellGeneral 3110
#define tFarHourglass 3111
#define vkSetFocusParent 3212
#define vkSwitchTermMode 3220
#define IDC_STATIC -1
// Next default values for new objects

View File

@ -1,7 +1,7 @@
// 220807
#define MVV_1 22
#define MVV_2 8
#define MVV_3 7
// 230724
#define MVV_1 23
#define MVV_2 7
#define MVV_3 24
#define MVV_4 0
#define MVV_4a ""
#undef MVV_git

View File

@ -4,4 +4,4 @@
#define CEVS_PREVIEW 1
#define CEVS_ALPHA 2
#define ConEmuVersionStage CEVS_ALPHA
#define ConEmuVersionStage CEVS_STABLE

View File

@ -985,10 +985,11 @@ bool SrvAnsiImpl::ReportString(LPCWSTR asRet)
LPCWSTR pc = asRet;
for (int i = 0; i < nLen; i++, p++, pc++)
{
const char ch = (*pc == 0x1B || *pc >= 0x20) ? *pc : L' ';
p->EventType = KEY_EVENT;
p->Event.KeyEvent.bKeyDown = TRUE;
p->Event.KeyEvent.wRepeatCount = 1;
p->Event.KeyEvent.uChar.UnicodeChar = *pc;
p->Event.KeyEvent.uChar.UnicodeChar = ch;
}
DumpKnownEscape(asRet, nLen, SrvAnsi::de_Report);
@ -1298,13 +1299,15 @@ CSI P s @ Insert P s (Blank) Character(s) (default = 1) (ICH)
switch (Code.Action) // case sensitive
{
case L's':
// Save cursor position (can not be nested)
XTermSaveRestoreCursor(true);
if (Code.PvtLen == 0)
// Save cursor position (can not be nested)
XTermSaveRestoreCursor(true);
break;
case L'u':
// Restore cursor position
XTermSaveRestoreCursor(false);
if (Code.PvtLen == 0)
// Restore cursor position
XTermSaveRestoreCursor(false);
break;
case L'H': // Set cursor position (1-based)
@ -2473,4 +2476,3 @@ void SrvAnsiImpl::XTermAltBuffer(bool bSetAltBuffer/*, condata::TablePtr& table*
}
}

View File

@ -1032,12 +1032,7 @@ BOOL WINAPI ReadOutput(FAR_CHAR_INFO* Buffer, COORD BufferSize, COORD BufferCoor
break;
}
FAR_CHAR_INFO chr{};
if (lbRead)
{
chr.Char = pc->Char.UnicodeChar;
chr.Attributes.Flags = pc->Attributes & 0xFF00;
}
FAR_CHAR_INFO chr = {lbRead ? pc->Char.UnicodeChar : L' '};
if (pTrueColor && pTrueColor >= pTrueColorEnd)
{
@ -1285,7 +1280,7 @@ BOOL WINAPI WriteOutput(const FAR_CHAR_INFO* Buffer, COORD BufferSize, COORD Buf
}
n |= (Flags & 0xFF00);
pc->Attributes = n;
if (pTrueColor)

View File

@ -2505,10 +2505,11 @@ BOOL CEAnsi::ReportString(LPCWSTR asRet)
LPCWSTR pc = asRet;
for (size_t i = 0; i < nLen; i++, p++, pc++)
{
const char ch = (*pc == 0x1B || *pc >= 0x20) ? *pc : L' ';
p->EventType = KEY_EVENT;
p->Event.KeyEvent.bKeyDown = TRUE;
p->Event.KeyEvent.wRepeatCount = 1;
p->Event.KeyEvent.uChar.UnicodeChar = *pc;
p->Event.KeyEvent.uChar.UnicodeChar = ch;
}
DumpKnownEscape(asRet, nLen, de_Report);

View File

@ -1,5 +1,5 @@
#define CONEMUVERN 22,8,7,0
#define CONEMUVERS "220807"
#define CONEMUVERL L"220807"
#define MSI86 "../ConEmu.220807.x86.msi"
#define MSI64 "../ConEmu.220807.x64.msi"
#define CONEMUVERN 23,7,24,0
#define CONEMUVERS "230724"
#define CONEMUVERL L"230724"
#define MSI86 "../ConEmu.230724.x86.msi"
#define MSI64 "../ConEmu.230724.x64.msi"

View File

@ -1,7 +1,7 @@
<?xml version="1.0" encoding="utf-8"?>
<Include>
<?define Version = '$(var.MajorVersion).220.8070' ?>
<?define ConEmuVerS = '220807.$(var.Platform)' ?>
<?define Version = '$(var.MajorVersion).230.7240' ?>
<?define ConEmuVerS = '230724.$(var.Platform)' ?>
</Include>

View File

@ -125,7 +125,7 @@ typedef struct _CONSOLE_SELECTION_INFO
#define CEHOMEPAGE_A "https://conemu.github.io/"
#define CEHOMEPAGE _CRT_WIDE(CEHOMEPAGE_A)
#define CEDOWNLPAGE L"https://www.fosshub.com/ConEmu.html"
#define CEDOWNLPAGE L"https://conemu.github.io/en/Downloads.html"
#define CEFLATTRPAGE L"http://flattr.com/thing/2002773/Maximus5ConEmu-on-GitHub"
#define CEDONATEPAGE L"https://conemu.github.io/donate.html"
#define CEWIKIBASE L"https://conemu.github.io/en/"

View File

@ -101,9 +101,6 @@ bool SearchAppPaths(LPCWSTR asFilePath, CEStr& rsFound, const bool abSetPath, CE
rsFound.Set(pszPath);
bFound = true;
if (pszCheck != szVal)
free(pszCheck);
// The program may require additional "%PATH%". So, if allowed...
if (abSetPath)
{

File diff suppressed because it is too large Load Diff