[BUG_FIXED] Fix file association Unicode bug.
[BUG_FIXED] Fix WindowDlg close file bug. [BUG_FIXED] Add html.xml, sql.xml and rc.xml into installer. [CHANGE] Change the reload from disk behaviour. git-svn-id: svn://svn.tuxfamily.org/svnroot/notepadplus/repository@337 f5eea248-9336-0410-98b8-ebc06183d4e3
This commit is contained in:
parent
22f25219e2
commit
af23902b82
@ -2,16 +2,33 @@ Notepad++ v5.1 fixed bugs and added features (from v5.0.3) :
|
|||||||
|
|
||||||
1. Make Notepad++ Unicode-compliant application(Unicode path supported).
|
1. Make Notepad++ Unicode-compliant application(Unicode path supported).
|
||||||
2. Fix crash issue due to the incoherent modification/creation date.
|
2. Fix crash issue due to the incoherent modification/creation date.
|
||||||
3. Fix tag match highlighting mismatched bug.
|
3. Enhance Find in files feature : launch in thread, stop as wish.
|
||||||
4. Make tag match highlighting on non html zone optional.
|
4. Fix tag match highlighting mismatched bug.
|
||||||
5. Refine the Save/Open file directory settings (follow tab/last operation/user defined dir).
|
5. Make tag match highlighting on non html zone optional.
|
||||||
6. Add "Doc go to new instance" and "Doc open in new instance" features.
|
6. Fix cpu high consumption bug while document is cloned with smart highlighting and xml matched highlighting features activating.
|
||||||
7. Add new pluin notification NPPN_DOCACTIVATED and NPPN_LANGCHANGED.
|
7. Refine the Save/Open file directory settings (follow tab/last operation/user defined dir).
|
||||||
8. Fix context menu incorrect setting crash bug.
|
8. Add "Doc go to new instance" and "Doc open in new instance" features.
|
||||||
9. Fix a problem with Incremental search+UTF8 in win9x.
|
9. Move document to another instance of Notepad++ via drag and drop document tab.
|
||||||
10. Fix bug with CPP lexer keyword list.
|
10. Add new pluin notification NPPN_DOCACTIVATED and NPPN_LANGCHANGED.
|
||||||
|
11. Fix context menu incorrect setting crash bug.
|
||||||
|
12. Fix crash problem while typing Chinese character in ANSI CSS document under Chinese environment.
|
||||||
|
13. Fix a problem with Incremental search+UTF8 in win9x.
|
||||||
|
14. Fix the User defined language not working in Unicode version bug.
|
||||||
|
15. Fix bug with CPP lexer keyword list.
|
||||||
|
16. Fix auto-completion not woring for HTML, SQL and RC problem.
|
||||||
|
17. Remove all the comic sans font (finally :) ).
|
||||||
|
|
||||||
|
|
||||||
|
Included plugins (Unicode):
|
||||||
|
|
||||||
|
1. TexFX v0.24a
|
||||||
|
2. MIME Tools v1.5
|
||||||
|
3. NppExport v0.2.8
|
||||||
|
4. Doc Monitor v2.2
|
||||||
|
5. NppAutoIndent 1.2
|
||||||
|
6. FTP_synchronize v0.9.6
|
||||||
|
7. NppAutoIndent 1.2
|
||||||
|
|
||||||
Included plugins (ANSI):
|
Included plugins (ANSI):
|
||||||
|
|
||||||
1. TexFX v0.24a
|
1. TexFX v0.24a
|
||||||
@ -24,10 +41,3 @@ Included plugins (ANSI):
|
|||||||
8. Light Explorer v1.5
|
8. Light Explorer v1.5
|
||||||
9. Doc Monitor v2.2
|
9. Doc Monitor v2.2
|
||||||
10. NppAutoIndent 1.2
|
10. NppAutoIndent 1.2
|
||||||
|
|
||||||
Included plugins (Unicode):
|
|
||||||
1. MIME Tools v1.5
|
|
||||||
2. NppExport v0.2.8
|
|
||||||
3. Doc Monitor v2.2
|
|
||||||
4. NppAutoIndent 1.2
|
|
||||||
5. FTP_synchronize v0.9.6
|
|
@ -571,6 +571,16 @@ SubSection "Auto-completion Files" autoCompletionComponent
|
|||||||
File "..\bin\plugins\APIs\html.xml"
|
File "..\bin\plugins\APIs\html.xml"
|
||||||
SectionEnd
|
SectionEnd
|
||||||
|
|
||||||
|
Section RC
|
||||||
|
SetOutPath "$INSTDIR\plugins\APIs"
|
||||||
|
File "..\bin\plugins\APIs\rc.xml"
|
||||||
|
SectionEnd
|
||||||
|
|
||||||
|
Section SQL
|
||||||
|
SetOutPath "$INSTDIR\plugins\APIs"
|
||||||
|
File "..\bin\plugins\APIs\sql.xml"
|
||||||
|
SectionEnd
|
||||||
|
|
||||||
Section PHP
|
Section PHP
|
||||||
SetOutPath "$INSTDIR\plugins\APIs"
|
SetOutPath "$INSTDIR\plugins\APIs"
|
||||||
File "..\bin\plugins\APIs\php.xml"
|
File "..\bin\plugins\APIs\php.xml"
|
||||||
@ -814,6 +824,21 @@ SubSection un.autoCompletionComponent
|
|||||||
Section un.CSS
|
Section un.CSS
|
||||||
Delete "$INSTDIR\plugins\APIs\css.xml"
|
Delete "$INSTDIR\plugins\APIs\css.xml"
|
||||||
RMDir "$INSTDIR\plugins\APIs\"
|
RMDir "$INSTDIR\plugins\APIs\"
|
||||||
|
SectionEnd
|
||||||
|
|
||||||
|
Section un.HTML
|
||||||
|
Delete "$INSTDIR\plugins\APIs\html.xml"
|
||||||
|
RMDir "$INSTDIR\plugins\APIs\"
|
||||||
|
SectionEnd
|
||||||
|
|
||||||
|
Section un.SQL
|
||||||
|
Delete "$INSTDIR\plugins\APIs\sql.xml"
|
||||||
|
RMDir "$INSTDIR\plugins\APIs\"
|
||||||
|
SectionEnd
|
||||||
|
|
||||||
|
Section un.RC
|
||||||
|
Delete "$INSTDIR\plugins\APIs\rc.xml"
|
||||||
|
RMDir "$INSTDIR\plugins\APIs\"
|
||||||
SectionEnd
|
SectionEnd
|
||||||
|
|
||||||
Section un.VB
|
Section un.VB
|
||||||
|
@ -230,7 +230,7 @@ void RegExtDlg::getRegisteredExts()
|
|||||||
{
|
{
|
||||||
//TCHAR valName[extNameLen];
|
//TCHAR valName[extNameLen];
|
||||||
TCHAR valData[extNameLen];
|
TCHAR valData[extNameLen];
|
||||||
int valDataLen = extNameLen;
|
int valDataLen = extNameLen * sizeof(TCHAR);
|
||||||
int valType;
|
int valType;
|
||||||
HKEY hKey2Check;
|
HKEY hKey2Check;
|
||||||
extNameActualLen = extNameLen;
|
extNameActualLen = extNameLen;
|
||||||
@ -269,17 +269,16 @@ void RegExtDlg::addExt(TCHAR *ext)
|
|||||||
|
|
||||||
if (nRet == ERROR_SUCCESS)
|
if (nRet == ERROR_SUCCESS)
|
||||||
{
|
{
|
||||||
int valDataLen = 256;
|
TCHAR valData[MAX_PATH];
|
||||||
TCHAR valData[256];
|
int valDataLen = MAX_PATH * sizeof(TCHAR);
|
||||||
|
|
||||||
|
|
||||||
if (dwDisp == REG_OPENED_EXISTING_KEY)
|
if (dwDisp == REG_OPENED_EXISTING_KEY)
|
||||||
{
|
{
|
||||||
int res = ::RegQueryValueEx(hKey, TEXT(""), NULL, NULL, (LPBYTE)valData, (LPDWORD)&valDataLen);
|
int res = ::RegQueryValueEx(hKey, TEXT(""), NULL, NULL, (LPBYTE)valData, (LPDWORD)&valDataLen);
|
||||||
if (res == ERROR_SUCCESS)
|
if (res == ERROR_SUCCESS)
|
||||||
::RegSetValueEx(hKey, nppBackup, 0, REG_SZ, (LPBYTE)valData, valDataLen+1);
|
::RegSetValueEx(hKey, nppBackup, 0, REG_SZ, (LPBYTE)valData, valDataLen);
|
||||||
}
|
}
|
||||||
::RegSetValueEx(hKey, NULL, 0, REG_SZ, (LPBYTE)nppName, lstrlen(nppName)+1);
|
::RegSetValueEx(hKey, NULL, 0, REG_SZ, (LPBYTE)nppName, (lstrlen(nppName)+1)*sizeof(TCHAR));
|
||||||
|
|
||||||
::RegCloseKey(hKey);
|
::RegCloseKey(hKey);
|
||||||
}
|
}
|
||||||
@ -302,7 +301,7 @@ bool RegExtDlg::deleteExts(const TCHAR *ext2Delete)
|
|||||||
else
|
else
|
||||||
{
|
{
|
||||||
TCHAR valData[extNameLen];
|
TCHAR valData[extNameLen];
|
||||||
int valDataLen = extNameLen;
|
int valDataLen = extNameLen*sizeof(TCHAR);
|
||||||
int valType;
|
int valType;
|
||||||
int res = ::RegQueryValueEx(hKey, nppBackup, NULL, (LPDWORD)&valType, (LPBYTE)valData, (LPDWORD)&valDataLen);
|
int res = ::RegQueryValueEx(hKey, nppBackup, NULL, (LPDWORD)&valType, (LPBYTE)valData, (LPDWORD)&valDataLen);
|
||||||
|
|
||||||
@ -344,7 +343,7 @@ void RegExtDlg::writeNppPath()
|
|||||||
{
|
{
|
||||||
// Write the value for new document
|
// Write the value for new document
|
||||||
::RegOpenKeyEx(HKEY_CLASSES_ROOT, nppName, 0, KEY_ALL_ACCESS, &hRootKey);
|
::RegOpenKeyEx(HKEY_CLASSES_ROOT, nppName, 0, KEY_ALL_ACCESS, &hRootKey);
|
||||||
::RegSetValueEx(hRootKey, NULL, 0, REG_SZ, (LPBYTE)nppDoc, lstrlen(nppDoc)+1);
|
::RegSetValueEx(hRootKey, NULL, 0, REG_SZ, (LPBYTE)nppDoc, (lstrlen(nppDoc)+1)*sizeof(TCHAR));
|
||||||
|
|
||||||
TCHAR nppPath[MAX_PATH];
|
TCHAR nppPath[MAX_PATH];
|
||||||
::GetModuleFileName(_hInst, nppPath, MAX_PATH);
|
::GetModuleFileName(_hInst, nppPath, MAX_PATH);
|
||||||
@ -352,7 +351,7 @@ void RegExtDlg::writeNppPath()
|
|||||||
TCHAR nppPathParam[256] = TEXT("\"");
|
TCHAR nppPathParam[256] = TEXT("\"");
|
||||||
lstrcat(lstrcat(nppPathParam, nppPath), TEXT("\" \"%1\""));
|
lstrcat(lstrcat(nppPathParam, nppPath), TEXT("\" \"%1\""));
|
||||||
|
|
||||||
::RegSetValueEx(hKey, NULL, 0, REG_SZ, (LPBYTE)nppPathParam, lstrlen(nppPathParam)+1);
|
::RegSetValueEx(hKey, NULL, 0, REG_SZ, (LPBYTE)nppPathParam, (lstrlen(nppPathParam)+1)*sizeof(TCHAR));
|
||||||
}
|
}
|
||||||
RegCloseKey(hKey);
|
RegCloseKey(hKey);
|
||||||
}
|
}
|
||||||
|
@ -722,7 +722,7 @@ bool Notepad_plus::doReload(BufferID id, bool alert)
|
|||||||
*/
|
*/
|
||||||
if (alert)
|
if (alert)
|
||||||
{
|
{
|
||||||
if (::MessageBox(_hSelf, TEXT("Do you want to reload the current file?"), TEXT("Reload"), MB_YESNO | MB_ICONQUESTION | MB_APPLMODAL) != IDYES)
|
if (::MessageBox(_hSelf, TEXT("Are you sure you want to reload the current file and lose the changes made in Notepad++?"), TEXT("Reload"), MB_YESNO | MB_ICONEXCLAMATION | MB_APPLMODAL) != IDYES)
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -793,9 +793,9 @@ void Notepad_plus::doClose(BufferID id, int whichOne) {
|
|||||||
_pluginsManager.notify(&scnN);
|
_pluginsManager.notify(&scnN);
|
||||||
|
|
||||||
//add to recent files if its an existing file
|
//add to recent files if its an existing file
|
||||||
if (!buf->isUntitled() && PathFileExists(buf->getFilePath()))
|
if (!buf->isUntitled() && PathFileExists(buf->getFullPathName()))
|
||||||
{
|
{
|
||||||
_lastRecentFileList.add(buf->getFilePath());
|
_lastRecentFileList.add(buf->getFullPathName());
|
||||||
}
|
}
|
||||||
|
|
||||||
int nrDocs = whichOne==MAIN_VIEW?(_mainDocTab.nbItem()):(_subDocTab.nbItem());
|
int nrDocs = whichOne==MAIN_VIEW?(_mainDocTab.nbItem()):(_subDocTab.nbItem());
|
||||||
@ -823,7 +823,7 @@ void Notepad_plus::fileNew()
|
|||||||
bool Notepad_plus::fileReload()
|
bool Notepad_plus::fileReload()
|
||||||
{
|
{
|
||||||
BufferID buf = _pEditView->getCurrentBufferID();
|
BufferID buf = _pEditView->getCurrentBufferID();
|
||||||
return doReload(buf, true);
|
return doReload(buf, buf->isDirty());
|
||||||
}
|
}
|
||||||
|
|
||||||
generic_string exts2Filters(generic_string exts) {
|
generic_string exts2Filters(generic_string exts) {
|
||||||
@ -985,7 +985,7 @@ bool Notepad_plus::fileSave(BufferID id)
|
|||||||
|
|
||||||
if (!buf->getFileReadOnly() && buf->isDirty()) //cannot save if readonly
|
if (!buf->getFileReadOnly() && buf->isDirty()) //cannot save if readonly
|
||||||
{
|
{
|
||||||
const TCHAR *fn = buf->getFilePath();
|
const TCHAR *fn = buf->getFullPathName();
|
||||||
if (buf->isUntitled())
|
if (buf->isUntitled())
|
||||||
{
|
{
|
||||||
return fileSaveAs(id);
|
return fileSaveAs(id);
|
||||||
@ -1062,7 +1062,7 @@ bool Notepad_plus::fileSave(BufferID id)
|
|||||||
|
|
||||||
::CopyFile(fn, fn_dateTime_bak.c_str(), FALSE);
|
::CopyFile(fn, fn_dateTime_bak.c_str(), FALSE);
|
||||||
}
|
}
|
||||||
return doSave(bufferID, buf->getFilePath(), false);
|
return doSave(bufferID, buf->getFullPathName(), false);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return false;
|
return false;
|
||||||
@ -1152,7 +1152,7 @@ bool Notepad_plus::fileDelete(BufferID id, int curView)
|
|||||||
bufferID = _pEditView->getCurrentBufferID();
|
bufferID = _pEditView->getCurrentBufferID();
|
||||||
|
|
||||||
Buffer * buf = MainFileManager->getBufferByID(bufferID);
|
Buffer * buf = MainFileManager->getBufferByID(bufferID);
|
||||||
const TCHAR *fileNamePath = buf->getFilePath();
|
const TCHAR *fileNamePath = buf->getFullPathName();
|
||||||
|
|
||||||
if (PathFileExists(fileNamePath))
|
if (PathFileExists(fileNamePath))
|
||||||
return false;
|
return false;
|
||||||
@ -1174,7 +1174,7 @@ bool Notepad_plus::fileDelete(BufferID id, int curView)
|
|||||||
bufferID = _pEditView->getCurrentBufferID();
|
bufferID = _pEditView->getCurrentBufferID();
|
||||||
|
|
||||||
Buffer * buf = MainFileManager->getBufferByID(bufferID);
|
Buffer * buf = MainFileManager->getBufferByID(bufferID);
|
||||||
const TCHAR *fileNamePath = buf->getFilePath();
|
const TCHAR *fileNamePath = buf->getFullPathName();
|
||||||
|
|
||||||
if (doDeleteOrNot(fileNamePath) == IDYES)
|
if (doDeleteOrNot(fileNamePath) == IDYES)
|
||||||
{
|
{
|
||||||
@ -1200,7 +1200,7 @@ bool Notepad_plus::fileClose(BufferID id, int curView)
|
|||||||
int res;
|
int res;
|
||||||
|
|
||||||
//process the fileNamePath into LRF
|
//process the fileNamePath into LRF
|
||||||
const TCHAR *fileNamePath = buf->getFilePath();
|
const TCHAR *fileNamePath = buf->getFullPathName();
|
||||||
|
|
||||||
if (buf->isDirty())
|
if (buf->isDirty())
|
||||||
{
|
{
|
||||||
@ -1242,7 +1242,7 @@ bool Notepad_plus::fileCloseAll()
|
|||||||
BufferID id = _mainDocTab.getBufferByIndex(i);
|
BufferID id = _mainDocTab.getBufferByIndex(i);
|
||||||
Buffer * buf = MainFileManager->getBufferByID(id);
|
Buffer * buf = MainFileManager->getBufferByID(id);
|
||||||
if (buf->isDirty()) {
|
if (buf->isDirty()) {
|
||||||
int res = doSaveOrNot(buf->getFilePath());
|
int res = doSaveOrNot(buf->getFullPathName());
|
||||||
if (res == IDYES) {
|
if (res == IDYES) {
|
||||||
if (!fileSave(id))
|
if (!fileSave(id))
|
||||||
return false; //abort entire procedure
|
return false; //abort entire procedure
|
||||||
@ -1256,7 +1256,7 @@ bool Notepad_plus::fileCloseAll()
|
|||||||
BufferID id = _subDocTab.getBufferByIndex(i);
|
BufferID id = _subDocTab.getBufferByIndex(i);
|
||||||
Buffer * buf = MainFileManager->getBufferByID(id);
|
Buffer * buf = MainFileManager->getBufferByID(id);
|
||||||
if (buf->isDirty()) {
|
if (buf->isDirty()) {
|
||||||
int res = doSaveOrNot(buf->getFilePath());
|
int res = doSaveOrNot(buf->getFullPathName());
|
||||||
if (res == IDYES) {
|
if (res == IDYES) {
|
||||||
if (!fileSave(id))
|
if (!fileSave(id))
|
||||||
return false; //abort entire procedure
|
return false; //abort entire procedure
|
||||||
@ -1298,7 +1298,7 @@ bool Notepad_plus::fileCloseAllButCurrent()
|
|||||||
continue;
|
continue;
|
||||||
Buffer * buf = MainFileManager->getBufferByID(id);
|
Buffer * buf = MainFileManager->getBufferByID(id);
|
||||||
if (buf->isDirty()) {
|
if (buf->isDirty()) {
|
||||||
int res = doSaveOrNot(buf->getFilePath());
|
int res = doSaveOrNot(buf->getFullPathName());
|
||||||
if (res == IDYES) {
|
if (res == IDYES) {
|
||||||
if (!fileSave(id))
|
if (!fileSave(id))
|
||||||
return false; //abort entire procedure
|
return false; //abort entire procedure
|
||||||
@ -1314,7 +1314,7 @@ bool Notepad_plus::fileCloseAllButCurrent()
|
|||||||
if (id == current)
|
if (id == current)
|
||||||
continue;
|
continue;
|
||||||
if (buf->isDirty()) {
|
if (buf->isDirty()) {
|
||||||
int res = doSaveOrNot(buf->getFilePath());
|
int res = doSaveOrNot(buf->getFullPathName());
|
||||||
if (res == IDYES) {
|
if (res == IDYES) {
|
||||||
if (!fileSave(id))
|
if (!fileSave(id))
|
||||||
return false; //abort entire procedure
|
return false; //abort entire procedure
|
||||||
@ -1635,7 +1635,7 @@ bool Notepad_plus::findInOpenedFiles() {
|
|||||||
{
|
{
|
||||||
pBuf = MainFileManager->getBufferByID(_mainDocTab.getBufferByIndex(i));
|
pBuf = MainFileManager->getBufferByID(_mainDocTab.getBufferByIndex(i));
|
||||||
_invisibleEditView.execute(SCI_SETDOCPOINTER, 0, pBuf->getDocument());
|
_invisibleEditView.execute(SCI_SETDOCPOINTER, 0, pBuf->getDocument());
|
||||||
nbTotal += _findReplaceDlg.processAll(ProcessFindAll, NULL, NULL, isEntireDoc, pBuf->getFilePath());
|
nbTotal += _findReplaceDlg.processAll(ProcessFindAll, NULL, NULL, isEntireDoc, pBuf->getFullPathName());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1645,7 +1645,7 @@ bool Notepad_plus::findInOpenedFiles() {
|
|||||||
{
|
{
|
||||||
pBuf = MainFileManager->getBufferByID(_subDocTab.getBufferByIndex(i));
|
pBuf = MainFileManager->getBufferByID(_subDocTab.getBufferByIndex(i));
|
||||||
_invisibleEditView.execute(SCI_SETDOCPOINTER, 0, pBuf->getDocument());
|
_invisibleEditView.execute(SCI_SETDOCPOINTER, 0, pBuf->getDocument());
|
||||||
nbTotal += _findReplaceDlg.processAll(ProcessFindAll, NULL, NULL, isEntireDoc, pBuf->getFilePath());
|
nbTotal += _findReplaceDlg.processAll(ProcessFindAll, NULL, NULL, isEntireDoc, pBuf->getFullPathName());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1701,7 +1701,7 @@ void Notepad_plus::checkDocState()
|
|||||||
|
|
||||||
bool isCurrentDirty = curBuf->isDirty();
|
bool isCurrentDirty = curBuf->isDirty();
|
||||||
bool isSeveralDirty = isCurrentDirty;
|
bool isSeveralDirty = isCurrentDirty;
|
||||||
bool isFileExisting = PathFileExists(curBuf->getFilePath()) != FALSE;
|
bool isFileExisting = PathFileExists(curBuf->getFullPathName()) != FALSE;
|
||||||
if (!isCurrentDirty)
|
if (!isCurrentDirty)
|
||||||
{
|
{
|
||||||
for(int i = 0; i < MainFileManager->getNrBuffers(); i++)
|
for(int i = 0; i < MainFileManager->getNrBuffers(); i++)
|
||||||
@ -1977,7 +1977,7 @@ BOOL Notepad_plus::notify(SCNotification *notification)
|
|||||||
else
|
else
|
||||||
{
|
{
|
||||||
generic_string quotFileName = TEXT("\"");
|
generic_string quotFileName = TEXT("\"");
|
||||||
quotFileName += _pEditView->getCurrentBuffer()->getFilePath();
|
quotFileName += _pEditView->getCurrentBuffer()->getFullPathName();
|
||||||
quotFileName += TEXT("\"");
|
quotFileName += TEXT("\"");
|
||||||
COPYDATASTRUCT fileNamesData;
|
COPYDATASTRUCT fileNamesData;
|
||||||
fileNamesData.dwData = COPYDATA_FILENAMES;
|
fileNamesData.dwData = COPYDATA_FILENAMES;
|
||||||
@ -1995,7 +1995,7 @@ BOOL Notepad_plus::notify(SCNotification *notification)
|
|||||||
int iView = isFromPrimary?MAIN_VIEW:SUB_VIEW;
|
int iView = isFromPrimary?MAIN_VIEW:SUB_VIEW;
|
||||||
if (buf->isDirty())
|
if (buf->isDirty())
|
||||||
{
|
{
|
||||||
::MessageBox(_hSelf, TEXT("Buffer can not be dirty"), TEXT(""), MB_OK);
|
::MessageBox(_hSelf, TEXT("Document is modified, save it then try again."), TEXT("Go to another Notepad++ instance"), MB_OK);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
@ -2339,7 +2339,7 @@ BOOL Notepad_plus::notify(SCNotification *notification)
|
|||||||
_tabPopupMenu.enableItem(IDM_EDIT_SETREADONLY, !isSysReadOnly);
|
_tabPopupMenu.enableItem(IDM_EDIT_SETREADONLY, !isSysReadOnly);
|
||||||
_tabPopupMenu.enableItem(IDM_EDIT_CLEARREADONLY, isSysReadOnly);
|
_tabPopupMenu.enableItem(IDM_EDIT_CLEARREADONLY, isSysReadOnly);
|
||||||
|
|
||||||
bool isFileExisting = PathFileExists(buf->getFilePath()) != FALSE;
|
bool isFileExisting = PathFileExists(buf->getFullPathName()) != FALSE;
|
||||||
_tabPopupMenu.enableItem(IDM_FILE_DELETE, isFileExisting);
|
_tabPopupMenu.enableItem(IDM_FILE_DELETE, isFileExisting);
|
||||||
_tabPopupMenu.enableItem(IDM_FILE_RENAME, isFileExisting);
|
_tabPopupMenu.enableItem(IDM_FILE_RENAME, isFileExisting);
|
||||||
|
|
||||||
@ -2450,13 +2450,13 @@ BOOL Notepad_plus::notify(SCNotification *notification)
|
|||||||
{
|
{
|
||||||
BufferID idd = _mainDocTab.getBufferByIndex(id);
|
BufferID idd = _mainDocTab.getBufferByIndex(id);
|
||||||
Buffer * buf = MainFileManager->getBufferByID(idd);
|
Buffer * buf = MainFileManager->getBufferByID(idd);
|
||||||
tip = buf->getFilePath();
|
tip = buf->getFullPathName();
|
||||||
}
|
}
|
||||||
else if (hWin == _subDocTab.getHSelf())
|
else if (hWin == _subDocTab.getHSelf())
|
||||||
{
|
{
|
||||||
BufferID idd = _subDocTab.getBufferByIndex(id);
|
BufferID idd = _subDocTab.getBufferByIndex(id);
|
||||||
Buffer * buf = MainFileManager->getBufferByID(idd);
|
Buffer * buf = MainFileManager->getBufferByID(idd);
|
||||||
tip = buf->getFilePath();
|
tip = buf->getFullPathName();
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
break;
|
break;
|
||||||
@ -3072,10 +3072,10 @@ void Notepad_plus::command(int id)
|
|||||||
{
|
{
|
||||||
Buffer * buf = _pEditView->getCurrentBuffer();
|
Buffer * buf = _pEditView->getCurrentBuffer();
|
||||||
if (id == IDM_EDIT_FULLPATHTOCLIP) {
|
if (id == IDM_EDIT_FULLPATHTOCLIP) {
|
||||||
str2Cliboard(buf->getFilePath());
|
str2Cliboard(buf->getFullPathName());
|
||||||
} else if (id == IDM_EDIT_CURRENTDIRTOCLIP) {
|
} else if (id == IDM_EDIT_CURRENTDIRTOCLIP) {
|
||||||
TCHAR dir[MAX_PATH];
|
TCHAR dir[MAX_PATH];
|
||||||
lstrcpy(dir, buf->getFilePath());
|
lstrcpy(dir, buf->getFullPathName());
|
||||||
PathRemoveFileSpec((TCHAR *)dir);
|
PathRemoveFileSpec((TCHAR *)dir);
|
||||||
str2Cliboard(dir);
|
str2Cliboard(dir);
|
||||||
} else if (id == IDM_EDIT_FILENAMETOCLIP) {
|
} else if (id == IDM_EDIT_FILENAMETOCLIP) {
|
||||||
@ -4548,7 +4548,7 @@ void Notepad_plus::setTitle()
|
|||||||
if (buf->isDirty()) {
|
if (buf->isDirty()) {
|
||||||
result += TEXT("*");
|
result += TEXT("*");
|
||||||
}
|
}
|
||||||
result += buf->getFilePath();
|
result += buf->getFullPathName();
|
||||||
result += TEXT(" - ");
|
result += TEXT(" - ");
|
||||||
result += _className;
|
result += _className;
|
||||||
::SetWindowText(_hSelf, result.c_str());
|
::SetWindowText(_hSelf, result.c_str());
|
||||||
@ -6204,14 +6204,14 @@ void Notepad_plus::getTaskListInfo(TaskListInfo *tli)
|
|||||||
BufferID bufID = _pDocTab->getBufferByIndex(i);
|
BufferID bufID = _pDocTab->getBufferByIndex(i);
|
||||||
Buffer * b = MainFileManager->getBufferByID(bufID);
|
Buffer * b = MainFileManager->getBufferByID(bufID);
|
||||||
int status = b->isReadOnly()?tb_ro:(b->isDirty()?tb_unsaved:tb_saved);
|
int status = b->isReadOnly()?tb_ro:(b->isDirty()?tb_unsaved:tb_saved);
|
||||||
tli->_tlfsLst.push_back(TaskLstFnStatus(currentView(), i, b->getFilePath(), status));
|
tli->_tlfsLst.push_back(TaskLstFnStatus(currentView(), i, b->getFullPathName(), status));
|
||||||
}
|
}
|
||||||
for (size_t i = 0 ; i < nonCurrentNbDoc ; i++)
|
for (size_t i = 0 ; i < nonCurrentNbDoc ; i++)
|
||||||
{
|
{
|
||||||
BufferID bufID = _pNonDocTab->getBufferByIndex(i);
|
BufferID bufID = _pNonDocTab->getBufferByIndex(i);
|
||||||
Buffer * b = MainFileManager->getBufferByID(bufID);
|
Buffer * b = MainFileManager->getBufferByID(bufID);
|
||||||
int status = b->isReadOnly()?tb_ro:(b->isDirty()?tb_unsaved:tb_saved);
|
int status = b->isReadOnly()?tb_ro:(b->isDirty()?tb_unsaved:tb_saved);
|
||||||
tli->_tlfsLst.push_back(TaskLstFnStatus(otherView(), i, b->getFilePath(), status));
|
tli->_tlfsLst.push_back(TaskLstFnStatus(otherView(), i, b->getFullPathName(), status));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -6983,7 +6983,7 @@ LRESULT Notepad_plus::runProc(HWND hwnd, UINT Message, WPARAM wParam, LPARAM lPa
|
|||||||
{
|
{
|
||||||
TCHAR str[MAX_PATH];
|
TCHAR str[MAX_PATH];
|
||||||
// par defaut : NPPM_GETCURRENTDIRECTORY
|
// par defaut : NPPM_GETCURRENTDIRECTORY
|
||||||
TCHAR *fileStr = lstrcpy(str, _pEditView->getCurrentBuffer()->getFilePath());
|
TCHAR *fileStr = lstrcpy(str, _pEditView->getCurrentBuffer()->getFullPathName());
|
||||||
|
|
||||||
if (Message == NPPM_GETCURRENTDIRECTORY)
|
if (Message == NPPM_GETCURRENTDIRECTORY)
|
||||||
PathRemoveFileSpec(str);
|
PathRemoveFileSpec(str);
|
||||||
@ -7116,7 +7116,7 @@ LRESULT Notepad_plus::runProc(HWND hwnd, UINT Message, WPARAM wParam, LPARAM lPa
|
|||||||
{
|
{
|
||||||
BufferID id = _mainDocTab.getBufferByIndex(i);
|
BufferID id = _mainDocTab.getBufferByIndex(i);
|
||||||
Buffer * buf = MainFileManager->getBufferByID(id);
|
Buffer * buf = MainFileManager->getBufferByID(id);
|
||||||
lstrcpy(fileNames[j++], buf->getFilePath());
|
lstrcpy(fileNames[j++], buf->getFullPathName());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (Message != NPPM_GETOPENFILENAMESPRIMARY) {
|
if (Message != NPPM_GETOPENFILENAMESPRIMARY) {
|
||||||
@ -7124,7 +7124,7 @@ LRESULT Notepad_plus::runProc(HWND hwnd, UINT Message, WPARAM wParam, LPARAM lPa
|
|||||||
{
|
{
|
||||||
BufferID id = _subDocTab.getBufferByIndex(i);
|
BufferID id = _subDocTab.getBufferByIndex(i);
|
||||||
Buffer * buf = MainFileManager->getBufferByID(id);
|
Buffer * buf = MainFileManager->getBufferByID(id);
|
||||||
lstrcpy(fileNames[j++], buf->getFilePath());
|
lstrcpy(fileNames[j++], buf->getFullPathName());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return j;
|
return j;
|
||||||
@ -8100,11 +8100,11 @@ LRESULT Notepad_plus::runProc(HWND hwnd, UINT Message, WPARAM wParam, LPARAM lPa
|
|||||||
NMWINDLG* nmdlg = (NMWINDLG*)lParam;
|
NMWINDLG* nmdlg = (NMWINDLG*)lParam;
|
||||||
switch (nmdlg->type)
|
switch (nmdlg->type)
|
||||||
{
|
{
|
||||||
case WDT_ACTIVATE:
|
case WDT_ACTIVATE:
|
||||||
activateDoc(nmdlg->curSel);
|
activateDoc(nmdlg->curSel);
|
||||||
nmdlg->processed = TRUE;
|
nmdlg->processed = TRUE;
|
||||||
break;
|
break;
|
||||||
case WDT_SAVE:
|
case WDT_SAVE:
|
||||||
{
|
{
|
||||||
//loop through nmdlg->nItems, get index and save it
|
//loop through nmdlg->nItems, get index and save it
|
||||||
for (int i = 0; i < (int)nmdlg->nItems; i++) {
|
for (int i = 0; i < (int)nmdlg->nItems; i++) {
|
||||||
@ -8113,13 +8113,14 @@ LRESULT Notepad_plus::runProc(HWND hwnd, UINT Message, WPARAM wParam, LPARAM lPa
|
|||||||
nmdlg->processed = TRUE;
|
nmdlg->processed = TRUE;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case WDT_CLOSE:
|
case WDT_CLOSE:
|
||||||
{
|
{
|
||||||
//loop through nmdlg->nItems, get index and close it
|
//loop through nmdlg->nItems, get index and close it
|
||||||
for (int i = 0; i < (int)nmdlg->nItems; i++) {
|
for (int i = 0; i < (int)nmdlg->nItems; i++) {
|
||||||
fileClose(_pDocTab->getBufferByIndex(i), currentView());
|
fileClose(_pDocTab->getBufferByIndex(nmdlg->Items[i]), currentView());
|
||||||
nmdlg->Items[i] = 0xFFFFFFFF; // indicate file was closed
|
|
||||||
UINT pos = nmdlg->Items[i];
|
UINT pos = nmdlg->Items[i];
|
||||||
|
nmdlg->Items[i] = 0xFFFFFFFF; // indicate file was closed
|
||||||
|
|
||||||
for (int j=i+1; j<(int)nmdlg->nItems; ++j)
|
for (int j=i+1; j<(int)nmdlg->nItems; ++j)
|
||||||
if (nmdlg->Items[j] > pos)
|
if (nmdlg->Items[j] > pos)
|
||||||
--nmdlg->Items[j];
|
--nmdlg->Items[j];
|
||||||
@ -8127,20 +8128,20 @@ LRESULT Notepad_plus::runProc(HWND hwnd, UINT Message, WPARAM wParam, LPARAM lPa
|
|||||||
nmdlg->processed = TRUE;
|
nmdlg->processed = TRUE;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case WDT_SORT:
|
case WDT_SORT:
|
||||||
if (nmdlg->nItems != _pDocTab->nbItem()) //sanity check, if mismatch just abort
|
if (nmdlg->nItems != _pDocTab->nbItem()) //sanity check, if mismatch just abort
|
||||||
|
break;
|
||||||
|
//Collect all buffers
|
||||||
|
std::vector<BufferID> tempBufs;
|
||||||
|
for(int i = 0; i < (int)nmdlg->nItems; i++) {
|
||||||
|
tempBufs.push_back(_pDocTab->getBufferByIndex(i));
|
||||||
|
}
|
||||||
|
//Reset buffers
|
||||||
|
for(int i = 0; i < (int)nmdlg->nItems; i++) {
|
||||||
|
_pDocTab->setBuffer(i, tempBufs[nmdlg->Items[i]]);
|
||||||
|
}
|
||||||
|
activateBuffer(_pDocTab->getBufferByIndex(_pDocTab->getCurrentTabIndex()), currentView());
|
||||||
break;
|
break;
|
||||||
//Collect all buffers
|
|
||||||
std::vector<BufferID> tempBufs;
|
|
||||||
for(int i = 0; i < (int)nmdlg->nItems; i++) {
|
|
||||||
tempBufs.push_back(_pDocTab->getBufferByIndex(i));
|
|
||||||
}
|
|
||||||
//Reset buffers
|
|
||||||
for(int i = 0; i < (int)nmdlg->nItems; i++) {
|
|
||||||
_pDocTab->setBuffer(i, tempBufs[nmdlg->Items[i]]);
|
|
||||||
}
|
|
||||||
activateBuffer(_pDocTab->getBufferByIndex(_pDocTab->getCurrentTabIndex()), currentView());
|
|
||||||
break;
|
|
||||||
}
|
}
|
||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
@ -8179,8 +8180,6 @@ LRESULT CALLBACK Notepad_plus::Notepad_plus_Proc(HWND hwnd, UINT Message, WPARAM
|
|||||||
|
|
||||||
void Notepad_plus::fullScreenToggle()
|
void Notepad_plus::fullScreenToggle()
|
||||||
{
|
{
|
||||||
HMONITOR currentMonitor; //Handle to monitor where fullscreen should go
|
|
||||||
MONITORINFO mi; //Info of that monitor
|
|
||||||
RECT fullscreenArea; //RECT used to calculate window fullscrene size
|
RECT fullscreenArea; //RECT used to calculate window fullscrene size
|
||||||
|
|
||||||
_isfullScreen = !_isfullScreen;
|
_isfullScreen = !_isfullScreen;
|
||||||
@ -8194,17 +8193,21 @@ void Notepad_plus::fullScreenToggle()
|
|||||||
fullscreenArea.left = 0;
|
fullscreenArea.left = 0;
|
||||||
fullscreenArea.right = GetSystemMetrics(SM_CXSCREEN);
|
fullscreenArea.right = GetSystemMetrics(SM_CXSCREEN);
|
||||||
fullscreenArea.bottom = GetSystemMetrics(SM_CYSCREEN);
|
fullscreenArea.bottom = GetSystemMetrics(SM_CYSCREEN);
|
||||||
|
|
||||||
//Caution, this will not work on windows 95, so probably add some checking of some sorts like Unicode checks, IF 95 were to be supported
|
//if (_winVersion != WV_NT)
|
||||||
currentMonitor = MonitorFromWindow(_hSelf, MONITOR_DEFAULTTONEAREST); //should always be valid monitor handle
|
|
||||||
mi.cbSize = sizeof(MONITORINFO);
|
|
||||||
if (GetMonitorInfo(currentMonitor, &mi) != FALSE)
|
|
||||||
{
|
{
|
||||||
fullscreenArea = mi.rcMonitor;
|
HMONITOR currentMonitor; //Handle to monitor where fullscreen should go
|
||||||
fullscreenArea.right -= fullscreenArea.left;
|
MONITORINFO mi; //Info of that monitor
|
||||||
fullscreenArea.bottom -= fullscreenArea.top;
|
//Caution, this will not work on windows 95, so probably add some checking of some sorts like Unicode checks, IF 95 were to be supported
|
||||||
|
currentMonitor = MonitorFromWindow(_hSelf, MONITOR_DEFAULTTONEAREST); //should always be valid monitor handle
|
||||||
|
mi.cbSize = sizeof(MONITORINFO);
|
||||||
|
if (GetMonitorInfo(currentMonitor, &mi) != FALSE)
|
||||||
|
{
|
||||||
|
fullscreenArea = mi.rcMonitor;
|
||||||
|
fullscreenArea.right -= fullscreenArea.left;
|
||||||
|
fullscreenArea.bottom -= fullscreenArea.top;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
//Hide menu
|
//Hide menu
|
||||||
::SetMenu(_hSelf, NULL);
|
::SetMenu(_hSelf, NULL);
|
||||||
|
|
||||||
@ -8375,12 +8378,12 @@ void Notepad_plus::getCurrentOpenedFiles(Session & session)
|
|||||||
{
|
{
|
||||||
BufferID bufID = _mainDocTab.getBufferByIndex(i);
|
BufferID bufID = _mainDocTab.getBufferByIndex(i);
|
||||||
Buffer * buf = MainFileManager->getBufferByID(bufID);
|
Buffer * buf = MainFileManager->getBufferByID(bufID);
|
||||||
if (!buf->isUntitled() && PathFileExists(buf->getFilePath()))
|
if (!buf->isUntitled() && PathFileExists(buf->getFullPathName()))
|
||||||
{
|
{
|
||||||
generic_string languageName = getLangFromMenu( buf );
|
generic_string languageName = getLangFromMenu( buf );
|
||||||
const TCHAR *langName = languageName.c_str();
|
const TCHAR *langName = languageName.c_str();
|
||||||
|
|
||||||
sessionFileInfo sfi(buf->getFilePath(), langName, buf->getPosition(&_mainEditView));
|
sessionFileInfo sfi(buf->getFullPathName(), langName, buf->getPosition(&_mainEditView));
|
||||||
|
|
||||||
//_mainEditView.activateBuffer(buf->getID());
|
//_mainEditView.activateBuffer(buf->getID());
|
||||||
_invisibleEditView.execute(SCI_SETDOCPOINTER, 0, buf->getDocument());
|
_invisibleEditView.execute(SCI_SETDOCPOINTER, 0, buf->getDocument());
|
||||||
@ -8400,12 +8403,12 @@ void Notepad_plus::getCurrentOpenedFiles(Session & session)
|
|||||||
{
|
{
|
||||||
BufferID bufID = _subDocTab.getBufferByIndex(i);
|
BufferID bufID = _subDocTab.getBufferByIndex(i);
|
||||||
Buffer * buf = MainFileManager->getBufferByID(bufID);
|
Buffer * buf = MainFileManager->getBufferByID(bufID);
|
||||||
if (!buf->isUntitled() && PathFileExists(buf->getFilePath()))
|
if (!buf->isUntitled() && PathFileExists(buf->getFullPathName()))
|
||||||
{
|
{
|
||||||
generic_string languageName = getLangFromMenu( buf );
|
generic_string languageName = getLangFromMenu( buf );
|
||||||
const TCHAR *langName = languageName.c_str();
|
const TCHAR *langName = languageName.c_str();
|
||||||
|
|
||||||
sessionFileInfo sfi(buf->getFilePath(), langName, buf->getPosition(&_subEditView));
|
sessionFileInfo sfi(buf->getFullPathName(), langName, buf->getPosition(&_subEditView));
|
||||||
|
|
||||||
_invisibleEditView.execute(SCI_SETDOCPOINTER, 0, buf->getDocument());
|
_invisibleEditView.execute(SCI_SETDOCPOINTER, 0, buf->getDocument());
|
||||||
int maxLine = _invisibleEditView.execute(SCI_GETLINECOUNT);
|
int maxLine = _invisibleEditView.execute(SCI_GETLINECOUNT);
|
||||||
@ -8659,10 +8662,10 @@ void Notepad_plus::notifyBufferChanged(Buffer * buffer, int mask) {
|
|||||||
case DOC_MODIFIED: //ask for reloading
|
case DOC_MODIFIED: //ask for reloading
|
||||||
{
|
{
|
||||||
bool autoUpdate = (nppGUI._fileAutoDetection == cdAutoUpdate) || (nppGUI._fileAutoDetection == cdAutoUpdateGo2end);
|
bool autoUpdate = (nppGUI._fileAutoDetection == cdAutoUpdate) || (nppGUI._fileAutoDetection == cdAutoUpdateGo2end);
|
||||||
if (!autoUpdate)
|
if (!autoUpdate || buffer->isDirty())
|
||||||
{
|
{
|
||||||
didDialog = true;
|
didDialog = true;
|
||||||
if (doReloadOrNot(buffer->getFilePath()) != IDYES)
|
if (doReloadOrNot(buffer->getFullPathName(), buffer->isDirty()) != IDYES)
|
||||||
break; //abort
|
break; //abort
|
||||||
}
|
}
|
||||||
//activateBuffer(buffer->getID(), iView); //activate the buffer in the first view possible
|
//activateBuffer(buffer->getID(), iView); //activate the buffer in the first view possible
|
||||||
@ -8681,7 +8684,7 @@ void Notepad_plus::notifyBufferChanged(Buffer * buffer, int mask) {
|
|||||||
iView = otherView();
|
iView = otherView();
|
||||||
//activateBuffer(buffer->getID(), iView); //activate the buffer in the first view possible
|
//activateBuffer(buffer->getID(), iView); //activate the buffer in the first view possible
|
||||||
didDialog = true;
|
didDialog = true;
|
||||||
if (doCloseOrNot(buffer->getFilePath()) == IDNO)
|
if (doCloseOrNot(buffer->getFullPathName()) == IDNO)
|
||||||
{
|
{
|
||||||
//close in both views, doing current view last since that has to remain opened
|
//close in both views, doing current view last since that has to remain opened
|
||||||
doClose(buffer->getID(), otherView());
|
doClose(buffer->getID(), otherView());
|
||||||
@ -8723,7 +8726,7 @@ void Notepad_plus::notifyBufferChanged(Buffer * buffer, int mask) {
|
|||||||
checkDocState();
|
checkDocState();
|
||||||
setTitle();
|
setTitle();
|
||||||
TCHAR dir[MAX_PATH];
|
TCHAR dir[MAX_PATH];
|
||||||
lstrcpy(dir, buffer->getFilePath());
|
lstrcpy(dir, buffer->getFullPathName());
|
||||||
PathRemoveFileSpec(dir);
|
PathRemoveFileSpec(dir);
|
||||||
setWorkingDir(dir);
|
setWorkingDir(dir);
|
||||||
}
|
}
|
||||||
@ -8777,7 +8780,7 @@ void Notepad_plus::notifyBufferActivated(BufferID bufid, int view) {
|
|||||||
setDisplayFormat(buf->getFormat());
|
setDisplayFormat(buf->getFormat());
|
||||||
enableConvertMenuItems(buf->getFormat());
|
enableConvertMenuItems(buf->getFormat());
|
||||||
TCHAR dir[MAX_PATH];
|
TCHAR dir[MAX_PATH];
|
||||||
lstrcpy(dir, buf->getFilePath());
|
lstrcpy(dir, buf->getFullPathName());
|
||||||
PathRemoveFileSpec(dir);
|
PathRemoveFileSpec(dir);
|
||||||
setWorkingDir(dir);
|
setWorkingDir(dir);
|
||||||
setTitle();
|
setTitle();
|
||||||
|
@ -394,11 +394,13 @@ private:
|
|||||||
return doActionOrNot(TEXT("Save"), phrase, MB_YESNOCANCEL | MB_ICONQUESTION | MB_APPLMODAL);
|
return doActionOrNot(TEXT("Save"), phrase, MB_YESNOCANCEL | MB_ICONQUESTION | MB_APPLMODAL);
|
||||||
};
|
};
|
||||||
|
|
||||||
int doReloadOrNot(const TCHAR *fn) {
|
int doReloadOrNot(const TCHAR *fn, bool dirty) {
|
||||||
TCHAR pattern[128] = TEXT("The file \"%s\" is modified by another program.\rReload this file?");
|
TCHAR* pattern = TEXT("%s\r\rThis file has been modified by another program.\rDo you want to reload it%s?");
|
||||||
|
TCHAR* lose_info_str = dirty ? TEXT(" and lose the changes made in Notepad++") : TEXT("");
|
||||||
TCHAR phrase[512];
|
TCHAR phrase[512];
|
||||||
wsprintf(phrase, pattern, fn);
|
wsprintf(phrase, pattern, fn, lose_info_str);
|
||||||
return doActionOrNot(TEXT("Reload"), phrase, MB_YESNO | MB_ICONQUESTION | MB_APPLMODAL);
|
int icon = dirty ? MB_ICONEXCLAMATION : MB_ICONQUESTION;
|
||||||
|
return doActionOrNot(TEXT("Reload"), phrase, MB_YESNO | MB_APPLMODAL | icon);
|
||||||
};
|
};
|
||||||
|
|
||||||
int doCloseOrNot(const TCHAR *fn) {
|
int doCloseOrNot(const TCHAR *fn) {
|
||||||
|
@ -423,7 +423,7 @@ bool FileManager::reloadBuffer(BufferID id) {
|
|||||||
Document doc = buf->getDocument();
|
Document doc = buf->getDocument();
|
||||||
Utf8_16_Read UnicodeConvertor;
|
Utf8_16_Read UnicodeConvertor;
|
||||||
buf->_canNotify = false; //disable notify during file load, we dont want dirty to be triggered
|
buf->_canNotify = false; //disable notify during file load, we dont want dirty to be triggered
|
||||||
bool res = loadFileData(doc, buf->getFilePath(), &UnicodeConvertor, buf->getLangType());
|
bool res = loadFileData(doc, buf->getFullPathName(), &UnicodeConvertor, buf->getLangType());
|
||||||
buf->_canNotify = true;
|
buf->_canNotify = true;
|
||||||
if (res) {
|
if (res) {
|
||||||
if (UnicodeConvertor.getNewBuf()) {
|
if (UnicodeConvertor.getNewBuf()) {
|
||||||
@ -446,7 +446,7 @@ bool FileManager::reloadBufferDeferred(BufferID id) {
|
|||||||
bool FileManager::deleteFile(BufferID id)
|
bool FileManager::deleteFile(BufferID id)
|
||||||
{
|
{
|
||||||
Buffer * buf = getBufferByID(id);
|
Buffer * buf = getBufferByID(id);
|
||||||
const TCHAR *fileNamePath = buf->getFilePath();
|
const TCHAR *fileNamePath = buf->getFullPathName();
|
||||||
if (!PathFileExists(fileNamePath))
|
if (!PathFileExists(fileNamePath))
|
||||||
return false;
|
return false;
|
||||||
return ::DeleteFile(fileNamePath) != 0;
|
return ::DeleteFile(fileNamePath) != 0;
|
||||||
@ -455,7 +455,7 @@ bool FileManager::deleteFile(BufferID id)
|
|||||||
bool FileManager::moveFile(BufferID id, const TCHAR * newFileName)
|
bool FileManager::moveFile(BufferID id, const TCHAR * newFileName)
|
||||||
{
|
{
|
||||||
Buffer * buf = getBufferByID(id);
|
Buffer * buf = getBufferByID(id);
|
||||||
const TCHAR *fileNamePath = buf->getFilePath();
|
const TCHAR *fileNamePath = buf->getFullPathName();
|
||||||
if (!PathFileExists(fileNamePath))
|
if (!PathFileExists(fileNamePath))
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
@ -622,7 +622,7 @@ BufferID FileManager::getBufferFromName(const TCHAR * name) {
|
|||||||
::GetFullPathName(name, MAX_PATH, fullpath, NULL);
|
::GetFullPathName(name, MAX_PATH, fullpath, NULL);
|
||||||
::GetLongPathName(fullpath, fullpath, MAX_PATH);
|
::GetLongPathName(fullpath, fullpath, MAX_PATH);
|
||||||
for(size_t i = 0; i < _buffers.size(); i++) {
|
for(size_t i = 0; i < _buffers.size(); i++) {
|
||||||
if (!lstrcmpi(name, _buffers.at(i)->getFilePath()))
|
if (!lstrcmpi(name, _buffers.at(i)->getFullPathName()))
|
||||||
return _buffers.at(i)->getID();
|
return _buffers.at(i)->getID();
|
||||||
}
|
}
|
||||||
return BUFFER_INVALID;
|
return BUFFER_INVALID;
|
||||||
@ -649,6 +649,6 @@ int FileManager::getFileNameFromBuffer(BufferID id, TCHAR * fn2copy) {
|
|||||||
return -1;
|
return -1;
|
||||||
Buffer * buf = getBufferByID(id);
|
Buffer * buf = getBufferByID(id);
|
||||||
if (fn2copy)
|
if (fn2copy)
|
||||||
lstrcpy(fn2copy, buf->getFilePath());
|
lstrcpy(fn2copy, buf->getFullPathName());
|
||||||
return lstrlen(buf->getFilePath());
|
return lstrlen(buf->getFullPathName());
|
||||||
}
|
}
|
||||||
|
@ -160,7 +160,7 @@ public :
|
|||||||
// 3. gets the last modified time
|
// 3. gets the last modified time
|
||||||
void setFileName(const TCHAR *fn, LangType defaultLang = L_TXT);
|
void setFileName(const TCHAR *fn, LangType defaultLang = L_TXT);
|
||||||
|
|
||||||
const TCHAR * getFilePath() const {
|
const TCHAR * getFullPathName() const {
|
||||||
return _fullPathName;
|
return _fullPathName;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -75,7 +75,7 @@ BufferID DocTabView::findBufferByName(const TCHAR * fullfilename) { //-1 if not
|
|||||||
::SendMessage(_hSelf, TCM_GETITEM, i, reinterpret_cast<LPARAM>(&tie));
|
::SendMessage(_hSelf, TCM_GETITEM, i, reinterpret_cast<LPARAM>(&tie));
|
||||||
BufferID id = (BufferID)tie.lParam;
|
BufferID id = (BufferID)tie.lParam;
|
||||||
Buffer * buf = MainFileManager->getBufferByID(id);
|
Buffer * buf = MainFileManager->getBufferByID(id);
|
||||||
if (!lstrcmp(fullfilename, buf->getFilePath())) {
|
if (!lstrcmp(fullfilename, buf->getFullPathName())) {
|
||||||
return id;
|
return id;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -178,7 +178,7 @@ size_t Printer::doPrint(bool justDoIt)
|
|||||||
|
|
||||||
DOCINFO docInfo;
|
DOCINFO docInfo;
|
||||||
docInfo.cbSize = sizeof(DOCINFO);
|
docInfo.cbSize = sizeof(DOCINFO);
|
||||||
docInfo.lpszDocName = _pSEView->getCurrentBuffer()->getFilePath();
|
docInfo.lpszDocName = _pSEView->getCurrentBuffer()->getFullPathName();
|
||||||
docInfo.lpszOutput = NULL;
|
docInfo.lpszOutput = NULL;
|
||||||
|
|
||||||
if (::StartDoc(_pdlg.hDC, &docInfo) < 0)
|
if (::StartDoc(_pdlg.hDC, &docInfo) < 0)
|
||||||
|
@ -118,8 +118,8 @@ struct BufferEquivalent
|
|||||||
}
|
}
|
||||||
else if (_iColumn == 1)
|
else if (_iColumn == 1)
|
||||||
{
|
{
|
||||||
const TCHAR *s1 = b1->getFilePath();
|
const TCHAR *s1 = b1->getFullPathName();
|
||||||
const TCHAR *s2 = b2->getFilePath();
|
const TCHAR *s2 = b2->getFullPathName();
|
||||||
return _strequiv(s1, s2); //we can compare the full path to sort on directory, since after sorting directories sorting files is the second thing to do (if directories are the same that is)
|
return _strequiv(s1, s2); //we can compare the full path to sort on directory, since after sorting directories sorting files is the second thing to do (if directories are the same that is)
|
||||||
}
|
}
|
||||||
else if (_iColumn == 2)
|
else if (_iColumn == 2)
|
||||||
@ -270,7 +270,7 @@ BOOL CALLBACK WindowsDlg::run_dlgProc(UINT message, WPARAM wParam, LPARAM lParam
|
|||||||
}
|
}
|
||||||
else if (pLvdi->item.iSubItem == 1) // directory
|
else if (pLvdi->item.iSubItem == 1) // directory
|
||||||
{
|
{
|
||||||
const TCHAR *fullName = buf->getFilePath();
|
const TCHAR *fullName = buf->getFullPathName();
|
||||||
const TCHAR *fileName = buf->getFileName();
|
const TCHAR *fileName = buf->getFileName();
|
||||||
int len = lstrlen(fullName)-lstrlen(fileName);
|
int len = lstrlen(fullName)-lstrlen(fileName);
|
||||||
if (!len) {
|
if (!len) {
|
||||||
@ -656,6 +656,7 @@ void WindowsDlg::doClose()
|
|||||||
for(UINT i=-1, j=0;; ++j) {
|
for(UINT i=-1, j=0;; ++j) {
|
||||||
i = ListView_GetNextItem(_hList, i, LVNI_SELECTED);
|
i = ListView_GetNextItem(_hList, i, LVNI_SELECTED);
|
||||||
if (i == -1) break;
|
if (i == -1) break;
|
||||||
|
ListView_SetItemState(_hList, i, 0, LVIS_SELECTED); // deselect
|
||||||
nmdlg.Items[j] = _idxMap[i];
|
nmdlg.Items[j] = _idxMap[i];
|
||||||
key[j] = i;
|
key[j] = i;
|
||||||
}
|
}
|
||||||
@ -683,7 +684,13 @@ void WindowsDlg::doClose()
|
|||||||
doRefresh(true);
|
doRefresh(true);
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
ListView_RedrawItems(_hList, 0, ListView_GetSelectedCount(_hList));
|
// select first previously selected item (or last one if only the last one was removed)
|
||||||
|
if (index == _idxMap.size()) index --;
|
||||||
|
if (index >= 0)
|
||||||
|
{
|
||||||
|
ListView_SetItemState(_hList, index, LVIS_SELECTED, LVIS_SELECTED);
|
||||||
|
ListView_RedrawItems(_hList, 0, _idxMap.size() - 1);
|
||||||
|
}
|
||||||
ListView_SetItemCount(_hList, _idxMap.size());
|
ListView_SetItemCount(_hList, _idxMap.size());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1,9 +1,9 @@
|
|||||||
// Scintilla source code edit control
|
// Scintilla source code edit control
|
||||||
/** @file LexCSS.cxx
|
/** @file LexCSS.cxx
|
||||||
** Lexer for Cascading Style Sheets
|
** Lexer for Cascading Style Sheets
|
||||||
** Written by Jakub Vrána
|
** Written by Jakub Vr?na
|
||||||
** Improved by Philippe Lhoste (CSS2)
|
** Improved by Philippe Lhoste (CSS2)
|
||||||
**/
|
**/
|
||||||
// Copyright 1998-2002 by Neil Hodgson <neilh@scintilla.org>
|
// Copyright 1998-2002 by Neil Hodgson <neilh@scintilla.org>
|
||||||
// The License.txt file describes the conditions under which this software may be distributed.
|
// The License.txt file describes the conditions under which this software may be distributed.
|
||||||
|
|
||||||
@ -31,8 +31,8 @@ static inline bool IsAWordChar(const unsigned int ch) {
|
|||||||
return (isalnum(ch) || ch == '-' || ch == '_' || ch >= 161); // _ is not in fact correct CSS word-character
|
return (isalnum(ch) || ch == '-' || ch == '_' || ch >= 161); // _ is not in fact correct CSS word-character
|
||||||
}
|
}
|
||||||
|
|
||||||
inline bool IsCssOperator(const char ch) {
|
inline bool IsCssOperator(const int ch) {
|
||||||
if (!isalnum(ch) &&
|
if (!((ch < 0x80) && isalnum(ch)) &&
|
||||||
(ch == '{' || ch == '}' || ch == ':' || ch == ',' || ch == ';' ||
|
(ch == '{' || ch == '}' || ch == ':' || ch == ',' || ch == ';' ||
|
||||||
ch == '.' || ch == '#' || ch == '!' || ch == '@' ||
|
ch == '.' || ch == '#' || ch == '!' || ch == '@' ||
|
||||||
/* CSS2 */
|
/* CSS2 */
|
||||||
@ -194,19 +194,14 @@ static void ColouriseCssDoc(unsigned int startPos, int length, int initStyle, Wo
|
|||||||
s2++;
|
s2++;
|
||||||
switch (sc.state) {
|
switch (sc.state) {
|
||||||
case SCE_CSS_IDENTIFIER:
|
case SCE_CSS_IDENTIFIER:
|
||||||
if (!keywords.InList(s2)) {
|
case SCE_CSS_IDENTIFIER2:
|
||||||
if (keywords2.InList(s2)) {
|
|
||||||
sc.ChangeState(SCE_CSS_IDENTIFIER2);
|
|
||||||
} else {
|
|
||||||
sc.ChangeState(SCE_CSS_UNKNOWN_IDENTIFIER);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
case SCE_CSS_UNKNOWN_IDENTIFIER:
|
case SCE_CSS_UNKNOWN_IDENTIFIER:
|
||||||
if (keywords.InList(s2))
|
if (keywords.InList(s2))
|
||||||
sc.ChangeState(SCE_CSS_IDENTIFIER);
|
sc.ChangeState(SCE_CSS_IDENTIFIER);
|
||||||
else if (keywords2.InList(s2))
|
else if (keywords2.InList(s2))
|
||||||
sc.ChangeState(SCE_CSS_IDENTIFIER2);
|
sc.ChangeState(SCE_CSS_IDENTIFIER2);
|
||||||
|
else
|
||||||
|
sc.ChangeState(SCE_CSS_UNKNOWN_IDENTIFIER);
|
||||||
break;
|
break;
|
||||||
case SCE_CSS_PSEUDOCLASS:
|
case SCE_CSS_PSEUDOCLASS:
|
||||||
if (!pseudoClasses.InList(s2))
|
if (!pseudoClasses.InList(s2))
|
||||||
@ -232,7 +227,7 @@ static void ColouriseCssDoc(unsigned int startPos, int length, int initStyle, Wo
|
|||||||
sc.Forward();
|
sc.Forward();
|
||||||
} else if (sc.state == SCE_CSS_VALUE && (sc.ch == '\"' || sc.ch == '\'')) {
|
} else if (sc.state == SCE_CSS_VALUE && (sc.ch == '\"' || sc.ch == '\'')) {
|
||||||
sc.SetState((sc.ch == '\"' ? SCE_CSS_DOUBLESTRING : SCE_CSS_SINGLESTRING));
|
sc.SetState((sc.ch == '\"' ? SCE_CSS_DOUBLESTRING : SCE_CSS_SINGLESTRING));
|
||||||
} else if (IsCssOperator(static_cast<char>(sc.ch))
|
} else if (IsCssOperator(sc.ch)
|
||||||
&& (sc.state != SCE_CSS_ATTRIBUTE || sc.ch == ']')
|
&& (sc.state != SCE_CSS_ATTRIBUTE || sc.ch == ']')
|
||||||
&& (sc.state != SCE_CSS_VALUE || sc.ch == ';' || sc.ch == '}' || sc.ch == '!')
|
&& (sc.state != SCE_CSS_VALUE || sc.ch == ';' || sc.ch == '}' || sc.ch == '!')
|
||||||
&& (sc.state != SCE_CSS_DIRECTIVE || sc.ch == ';' || sc.ch == '{')
|
&& (sc.state != SCE_CSS_DIRECTIVE || sc.ch == ';' || sc.ch == '{')
|
||||||
|
Loading…
Reference in New Issue
Block a user