Skip to content

Commit

Permalink
Merge pull request #1101 from 7-rate/feature/CurLineTopCommand
Browse files Browse the repository at this point in the history
「カーソル行をウィンドウ上部へ」「カーソル行をウィンドウ下部へ」機能を追加
  • Loading branch information
beru authored Nov 30, 2019
2 parents 0bb08fb + 354e4e1 commit e5172cb
Show file tree
Hide file tree
Showing 8 changed files with 50 additions and 9 deletions.
2 changes: 2 additions & 0 deletions sakura_core/Funccode_x.hsrc
Original file line number Diff line number Diff line change
Expand Up @@ -158,6 +158,8 @@ F_1PageDown = 30343, //1ページダウン なし
F_GOFILETOP = 30350, //ファイルの先頭に移動 なし
F_GOFILEEND = 30351, //ファイルの最後に移動 なし
F_CURLINECENTER = 30360, //カーソル行をウィンドウ中央へ なし
F_CURLINETOP = 30361, //カーソル行をウィンドウ上部へ なし
F_CURLINEBOTTOM = 30362, //カーソル行をウィンドウ下部へ なし
F_JUMPHIST_PREV = 30370, //移動履歴: 前へ なし
F_JUMPHIST_NEXT = 30371, //移動履歴: 次へ なし
F_JUMPHIST_SET = 30372, //現在位置を移動履歴に登録 なし
Expand Down
2 changes: 2 additions & 0 deletions sakura_core/cmd/CViewCommander.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -294,6 +294,8 @@ BOOL CViewCommander::HandleCommand(
case F_GOFILETOP: Command_GOFILETOP( m_pCommanderView->GetSelectionInfo().m_bSelectingLock ); break; //ファイルの先頭に移動
case F_GOFILEEND: Command_GOFILEEND( m_pCommanderView->GetSelectionInfo().m_bSelectingLock ); break; //ファイルの最後に移動
case F_CURLINECENTER: Command_CURLINECENTER(); break; /* カーソル行をウィンドウ中央へ */
case F_CURLINETOP: Command_CURLINETOP(); break; /* カーソル行をウィンドウ上部へ */
case F_CURLINEBOTTOM: Command_CURLINEBOTTOM(); break; /* カーソル行をウィンドウ下部へ */
case F_JUMPHIST_PREV: Command_JUMPHIST_PREV(); break; //移動履歴: 前へ
case F_JUMPHIST_NEXT: Command_JUMPHIST_NEXT(); break; //移動履歴: 次へ
case F_JUMPHIST_SET: Command_JUMPHIST_SET(); break; //現在位置を移動履歴に登録
Expand Down
3 changes: 3 additions & 0 deletions sakura_core/cmd/CViewCommander.h
Original file line number Diff line number Diff line change
Expand Up @@ -176,6 +176,8 @@ class CViewCommander{
void Command_GOFILETOP( bool bSelect ); /* ファイルの先頭に移動 */
void Command_GOFILEEND( bool bSelect ); /* ファイルの最後に移動 */
void Command_CURLINECENTER( void ); /* カーソル行をウィンドウ中央へ */
void Command_CURLINETOP( void ); /* カーソル行をウィンドウ上部へ */
void Command_CURLINEBOTTOM( void ); /* カーソル行をウィンドウ下部へ */
void Command_JUMPHIST_PREV(void); // 移動履歴: 前へ
void Command_JUMPHIST_NEXT(void); // 移動履歴: 次へ
void Command_JUMPHIST_SET(void); // 現在位置を移動履歴に登録
Expand Down Expand Up @@ -401,6 +403,7 @@ class CViewCommander{
/* その他 */

private:
void MoveViewTopLine(CLayoutInt nViewTopLine);
void AlertNotFound(HWND hwnd, bool bReplaceAll, LPCWSTR format, ...);
void DelCharForOverwrite(const wchar_t* pszInput, int nLen); // 上書き用の一文字削除 // 2009.04.11 ryoji
bool Sub_PreProcTagJumpByTagsFile( WCHAR* szCurrentPath, int count ); // タグジャンプの前処理
Expand Down
42 changes: 33 additions & 9 deletions sakura_core/cmd/CViewCommander_Cursor.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -826,23 +826,47 @@ void CViewCommander::Command_GOFILEEND( bool bSelect )
}
}

/* カーソル行をウィンドウ中央へ */
void CViewCommander::Command_CURLINECENTER( void )
/* nViewTopLineをウィンドウの上部へ */
void CViewCommander::MoveViewTopLine(CLayoutInt nViewTopLine)
{
CLayoutInt nViewTopLine;
nViewTopLine = GetCaret().GetCaretLayoutPos().GetY2() - ( m_pCommanderView->GetTextArea().m_nViewRowNum / 2 );

// sui 02/08/09
if( 0 > nViewTopLine ) nViewTopLine = CLayoutInt(0);
if (0 > nViewTopLine) nViewTopLine = CLayoutInt(0);

CLayoutInt nScrollLines = nViewTopLine - m_pCommanderView->GetTextArea().GetViewTopLine(); //Sep. 11, 2004 genta 同期用に行数を記憶
m_pCommanderView->GetTextArea().SetViewTopLine( nViewTopLine );
m_pCommanderView->GetTextArea().SetViewTopLine(nViewTopLine);
/* フォーカス移動時の再描画 */
m_pCommanderView->RedrawAll();
// sui 02/08/09

// Sep. 11, 2004 genta 同期スクロールの関数化
m_pCommanderView->SyncScrollV( nScrollLines );
m_pCommanderView->SyncScrollV(nScrollLines);
}

/* カーソル行をウィンドウ中央へ */
void CViewCommander::Command_CURLINECENTER( void )
{
CLayoutInt nViewTopLine;
nViewTopLine = GetCaret().GetCaretLayoutPos().GetY2() - ( m_pCommanderView->GetTextArea().m_nViewRowNum / 2 );

MoveViewTopLine(nViewTopLine);
}

/* カーソル行をウィンドウ上部へ */
void CViewCommander::Command_CURLINETOP(void)
{
CLayoutInt nViewTopLine;
nViewTopLine = GetCaret().GetCaretLayoutPos().GetY2();

MoveViewTopLine(nViewTopLine);
}

/* カーソル行をウィンドウ下部へ */
void CViewCommander::Command_CURLINEBOTTOM(void)
{
CLayoutInt nViewTopLine;
nViewTopLine = GetCaret().GetCaretLayoutPos().GetY2() - (m_pCommanderView->GetTextArea().m_nViewRowNum);

MoveViewTopLine(nViewTopLine);
}

// 移動履歴を前へたどる
Expand Down
2 changes: 2 additions & 0 deletions sakura_core/func/Funccode.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -182,6 +182,8 @@ const EFunctionCode pnFuncList_Move[] = { //Oct. 16, 2000 JEPRO 変数名変更(
F_GOFILETOP , //ファイルの先頭に移動
F_GOFILEEND , //ファイルの最後に移動
F_CURLINECENTER , //カーソル行をウィンドウ中央へ
F_CURLINETOP , //カーソル行をウィンドウ上部へ
F_CURLINEBOTTOM , //カーソル行をウィンドウ下部へ
F_JUMP_DIALOG , //指定行ヘジャンプ //Sept. 17, 2000 JEPRO コマンド本家は「検索系」
F_JUMP_SRCHSTARTPOS , //検索開始位置へ戻る // 02/06/26 ai コマンド本家は「検索系」
F_JUMPHIST_PREV , //移動履歴: 前へ
Expand Down
4 changes: 4 additions & 0 deletions sakura_core/macro/CSMacroMgr.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -131,6 +131,8 @@ MacroFuncInfo CSMacroMgr::m_MacroFuncInfoCommandArr[] =
{F_GOFILETOP, LTEXT("GoFileTop"), {VT_EMPTY, VT_EMPTY, VT_EMPTY, VT_EMPTY}, VT_EMPTY, NULL}, //ファイルの先頭に移動
{F_GOFILEEND, LTEXT("GoFileEnd"), {VT_EMPTY, VT_EMPTY, VT_EMPTY, VT_EMPTY}, VT_EMPTY, NULL}, //ファイルの最後に移動
{F_CURLINECENTER, LTEXT("CurLineCenter"), {VT_EMPTY, VT_EMPTY, VT_EMPTY, VT_EMPTY}, VT_EMPTY, NULL}, //カーソル行をウィンドウ中央へ
{F_CURLINETOP, LTEXT("CurLineTop"), {VT_EMPTY, VT_EMPTY, VT_EMPTY, VT_EMPTY}, VT_EMPTY, NULL}, //カーソル行をウィンドウ上部へ
{F_CURLINEBOTTOM, LTEXT("CurLineBottom"), {VT_EMPTY, VT_EMPTY, VT_EMPTY, VT_EMPTY}, VT_EMPTY, NULL}, //カーソル行をウィンドウ下部へ
{F_JUMPHIST_PREV, LTEXT("MoveHistPrev"), {VT_EMPTY, VT_EMPTY, VT_EMPTY, VT_EMPTY}, VT_EMPTY, NULL}, //移動履歴: 前へ
{F_JUMPHIST_NEXT, LTEXT("MoveHistNext"), {VT_EMPTY, VT_EMPTY, VT_EMPTY, VT_EMPTY}, VT_EMPTY, NULL}, //移動履歴: 次へ
{F_JUMPHIST_SET, LTEXT("MoveHistSet"), {VT_EMPTY, VT_EMPTY, VT_EMPTY, VT_EMPTY}, VT_EMPTY, NULL}, //現在位置を移動履歴に登録
Expand Down Expand Up @@ -972,6 +974,8 @@ BOOL CSMacroMgr::CanFuncIsKeyMacro( int nFuncID )
case F_WORDLEFT ://単語の左端に移動
case F_WORDRIGHT ://単語の右端に移動
case F_CURLINECENTER ://カーソル行をウィンドウ中央へ
case F_CURLINETOP ://カーソル行をウィンドウ上部へ
case F_CURLINEBOTTOM ://カーソル行をウィンドウ下部へ
case F_JUMPHIST_PREV ://移動履歴: 前へ
case F_JUMPHIST_NEXT ://移動履歴: 次へ
case F_JUMPHIST_SET ://現在位置を移動履歴に登録
Expand Down
2 changes: 2 additions & 0 deletions sakura_core/sakura_rc.rc
Original file line number Diff line number Diff line change
Expand Up @@ -2374,6 +2374,8 @@ END
STRINGTABLE DISCARDABLE
BEGIN
F_CURLINECENTER "カーソル行をウィンドウ中央へ"
F_CURLINETOP "カーソル行をウィンドウ上部へ"
F_CURLINEBOTTOM "カーソル行をウィンドウ下部へ"
END

STRINGTABLE DISCARDABLE
Expand Down
2 changes: 2 additions & 0 deletions sakura_lang_en_US/sakura_lang_rc.rc
Original file line number Diff line number Diff line change
Expand Up @@ -2379,6 +2379,8 @@ END
STRINGTABLE DISCARDABLE
BEGIN
F_CURLINECENTER "Center Current Line"
F_CURLINETOP "Top Current Line"
F_CURLINEBOTTOM "Bottom Current Line"
END

STRINGTABLE DISCARDABLE
Expand Down

0 comments on commit e5172cb

Please sign in to comment.