Переглянути джерело

Completed searching function in Share folder

Toby Chui 3 роки тому
батько
коміт
05239da4a0
100 змінених файлів з 168 додано та 84 видалено
  1. 70 38
      file_system.go
  2. 57 6
      mod/share/shareEntry/shareEntry.go
  3. 0 0
      web/Code Studio/CodeStudio.css
  4. 1 1
      web/Code Studio/backend/read.agi
  5. 2 2
      web/Code Studio/backend/store.agi
  6. 1 1
      web/Code Studio/backend/writeFile.agi
  7. 3 3
      web/Code Studio/embedded.html
  8. 1 1
      web/Code Studio/home.html
  9. 0 0
      web/Code Studio/img/banner.png
  10. 0 0
      web/Code Studio/img/banner.psd
  11. BIN
      web/Code Studio/img/desktop_icon.png
  12. 0 0
      web/Code Studio/img/desktop_icon.psd
  13. 0 0
      web/Code Studio/img/module_icon.png
  14. 0 0
      web/Code Studio/img/module_icon.psd
  15. 25 24
      web/Code Studio/index.html
  16. 8 8
      web/Code Studio/init.agi
  17. 0 0
      web/Code Studio/script/monaco/LICENSE
  18. 0 0
      web/Code Studio/script/monaco/README.md
  19. 0 0
      web/Code Studio/script/monaco/ThirdPartyNotices.txt
  20. 0 0
      web/Code Studio/script/monaco/bundleInfo.json
  21. 0 0
      web/Code Studio/script/monaco/monaco.d.ts
  22. 0 0
      web/Code Studio/script/monaco/nls.metadata.json
  23. 0 0
      web/Code Studio/script/monaco/vs/base/browser/ui/codiconLabel/codicon/codicon.ttf
  24. 0 0
      web/Code Studio/script/monaco/vs/base/worker/workerMain.js
  25. 0 0
      web/Code Studio/script/monaco/vs/base/worker/workerMain.js.map
  26. 0 0
      web/Code Studio/script/monaco/vs/basic-languages/_.contribution.js
  27. 0 0
      web/Code Studio/script/monaco/vs/basic-languages/abap/abap.contribution.js
  28. 0 0
      web/Code Studio/script/monaco/vs/basic-languages/abap/abap.js
  29. 0 0
      web/Code Studio/script/monaco/vs/basic-languages/apex/apex.contribution.js
  30. 0 0
      web/Code Studio/script/monaco/vs/basic-languages/apex/apex.js
  31. 0 0
      web/Code Studio/script/monaco/vs/basic-languages/azcli/azcli.contribution.js
  32. 0 0
      web/Code Studio/script/monaco/vs/basic-languages/azcli/azcli.js
  33. 0 0
      web/Code Studio/script/monaco/vs/basic-languages/bat/bat.contribution.js
  34. 0 0
      web/Code Studio/script/monaco/vs/basic-languages/bat/bat.js
  35. 0 0
      web/Code Studio/script/monaco/vs/basic-languages/cameligo/cameligo.contribution.js
  36. 0 0
      web/Code Studio/script/monaco/vs/basic-languages/cameligo/cameligo.js
  37. 0 0
      web/Code Studio/script/monaco/vs/basic-languages/clojure/clojure.contribution.js
  38. 0 0
      web/Code Studio/script/monaco/vs/basic-languages/clojure/clojure.js
  39. 0 0
      web/Code Studio/script/monaco/vs/basic-languages/coffee/coffee.contribution.js
  40. 0 0
      web/Code Studio/script/monaco/vs/basic-languages/coffee/coffee.js
  41. 0 0
      web/Code Studio/script/monaco/vs/basic-languages/cpp/cpp.contribution.js
  42. 0 0
      web/Code Studio/script/monaco/vs/basic-languages/cpp/cpp.js
  43. 0 0
      web/Code Studio/script/monaco/vs/basic-languages/csharp/csharp.contribution.js
  44. 0 0
      web/Code Studio/script/monaco/vs/basic-languages/csharp/csharp.js
  45. 0 0
      web/Code Studio/script/monaco/vs/basic-languages/csp/csp.contribution.js
  46. 0 0
      web/Code Studio/script/monaco/vs/basic-languages/csp/csp.js
  47. 0 0
      web/Code Studio/script/monaco/vs/basic-languages/css/css.contribution.js
  48. 0 0
      web/Code Studio/script/monaco/vs/basic-languages/css/css.js
  49. 0 0
      web/Code Studio/script/monaco/vs/basic-languages/dockerfile/dockerfile.contribution.js
  50. 0 0
      web/Code Studio/script/monaco/vs/basic-languages/dockerfile/dockerfile.js
  51. 0 0
      web/Code Studio/script/monaco/vs/basic-languages/fsharp/fsharp.contribution.js
  52. 0 0
      web/Code Studio/script/monaco/vs/basic-languages/fsharp/fsharp.js
  53. 0 0
      web/Code Studio/script/monaco/vs/basic-languages/go/go.contribution.js
  54. 0 0
      web/Code Studio/script/monaco/vs/basic-languages/go/go.js
  55. 0 0
      web/Code Studio/script/monaco/vs/basic-languages/graphql/graphql.contribution.js
  56. 0 0
      web/Code Studio/script/monaco/vs/basic-languages/graphql/graphql.js
  57. 0 0
      web/Code Studio/script/monaco/vs/basic-languages/handlebars/handlebars.contribution.js
  58. 0 0
      web/Code Studio/script/monaco/vs/basic-languages/handlebars/handlebars.js
  59. 0 0
      web/Code Studio/script/monaco/vs/basic-languages/html/html.contribution.js
  60. 0 0
      web/Code Studio/script/monaco/vs/basic-languages/html/html.js
  61. 0 0
      web/Code Studio/script/monaco/vs/basic-languages/ini/ini.contribution.js
  62. 0 0
      web/Code Studio/script/monaco/vs/basic-languages/ini/ini.js
  63. 0 0
      web/Code Studio/script/monaco/vs/basic-languages/java/java.contribution.js
  64. 0 0
      web/Code Studio/script/monaco/vs/basic-languages/java/java.js
  65. 0 0
      web/Code Studio/script/monaco/vs/basic-languages/javascript/javascript.contribution.js
  66. 0 0
      web/Code Studio/script/monaco/vs/basic-languages/javascript/javascript.js
  67. 0 0
      web/Code Studio/script/monaco/vs/basic-languages/kotlin/kotlin.contribution.js
  68. 0 0
      web/Code Studio/script/monaco/vs/basic-languages/kotlin/kotlin.js
  69. 0 0
      web/Code Studio/script/monaco/vs/basic-languages/less/less.contribution.js
  70. 0 0
      web/Code Studio/script/monaco/vs/basic-languages/less/less.js
  71. 0 0
      web/Code Studio/script/monaco/vs/basic-languages/lua/lua.contribution.js
  72. 0 0
      web/Code Studio/script/monaco/vs/basic-languages/lua/lua.js
  73. 0 0
      web/Code Studio/script/monaco/vs/basic-languages/markdown/markdown.contribution.js
  74. 0 0
      web/Code Studio/script/monaco/vs/basic-languages/markdown/markdown.js
  75. 0 0
      web/Code Studio/script/monaco/vs/basic-languages/mips/mips.contribution.js
  76. 0 0
      web/Code Studio/script/monaco/vs/basic-languages/mips/mips.js
  77. 0 0
      web/Code Studio/script/monaco/vs/basic-languages/msdax/msdax.contribution.js
  78. 0 0
      web/Code Studio/script/monaco/vs/basic-languages/msdax/msdax.js
  79. 0 0
      web/Code Studio/script/monaco/vs/basic-languages/mysql/mysql.contribution.js
  80. 0 0
      web/Code Studio/script/monaco/vs/basic-languages/mysql/mysql.js
  81. 0 0
      web/Code Studio/script/monaco/vs/basic-languages/objective-c/objective-c.contribution.js
  82. 0 0
      web/Code Studio/script/monaco/vs/basic-languages/objective-c/objective-c.js
  83. 0 0
      web/Code Studio/script/monaco/vs/basic-languages/pascal/pascal.contribution.js
  84. 0 0
      web/Code Studio/script/monaco/vs/basic-languages/pascal/pascal.js
  85. 0 0
      web/Code Studio/script/monaco/vs/basic-languages/pascaligo/pascaligo.contribution.js
  86. 0 0
      web/Code Studio/script/monaco/vs/basic-languages/pascaligo/pascaligo.js
  87. 0 0
      web/Code Studio/script/monaco/vs/basic-languages/perl/perl.contribution.js
  88. 0 0
      web/Code Studio/script/monaco/vs/basic-languages/perl/perl.js
  89. 0 0
      web/Code Studio/script/monaco/vs/basic-languages/pgsql/pgsql.contribution.js
  90. 0 0
      web/Code Studio/script/monaco/vs/basic-languages/pgsql/pgsql.js
  91. 0 0
      web/Code Studio/script/monaco/vs/basic-languages/php/php.contribution.js
  92. 0 0
      web/Code Studio/script/monaco/vs/basic-languages/php/php.js
  93. 0 0
      web/Code Studio/script/monaco/vs/basic-languages/postiats/postiats.contribution.js
  94. 0 0
      web/Code Studio/script/monaco/vs/basic-languages/postiats/postiats.js
  95. 0 0
      web/Code Studio/script/monaco/vs/basic-languages/powerquery/powerquery.contribution.js
  96. 0 0
      web/Code Studio/script/monaco/vs/basic-languages/powerquery/powerquery.js
  97. 0 0
      web/Code Studio/script/monaco/vs/basic-languages/powershell/powershell.contribution.js
  98. 0 0
      web/Code Studio/script/monaco/vs/basic-languages/powershell/powershell.js
  99. 0 0
      web/Code Studio/script/monaco/vs/basic-languages/pug/pug.contribution.js
  100. 0 0
      web/Code Studio/script/monaco/vs/basic-languages/pug/pug.js

+ 70 - 38
file_system.go

@@ -5,6 +5,7 @@ import (
 	"encoding/hex"
 	"encoding/json"
 	"errors"
+	"fmt"
 	"io"
 	"io/ioutil"
 	"log"
@@ -239,16 +240,37 @@ func system_fs_handleFileSearch(w http.ResponseWriter, r *http.Request) {
 	//Check if case sensitive is enabled
 	casesensitve, _ := mv(r, "casesensitive", true)
 
-	//Translate the vpath to realpath
-	rpath, err := userinfo.VirtualPathToRealPath(vpath)
+	vrootID, subpath, err := fs.GetIDFromVirtualPath(vpath)
+	var targetFSH *filesystem.FileSystemHandler = nil
 	if err != nil {
+
 		sendErrorResponse(w, "Invalid path given")
 		return
+	} else {
+		targetFSH, _ = GetFsHandlerByUUID(vrootID)
+	}
+	rpath := ""
+	if targetFSH != nil && targetFSH.Filesystem != "virtual" {
+		//Translate the vpath to realpath if this is an actual path on disk
+		resolvedPath, err := userinfo.VirtualPathToRealPath(vpath)
+		if err != nil {
+			sendErrorResponse(w, "Invalid path given")
+			return
+		}
+
+		rpath = resolvedPath
 	}
 
 	//Check if the search mode is recursive keyword or wildcard
 	if len(keyword) > 1 && keyword[:1] == "/" {
 		//Wildcard
+
+		//Updates 31-12-2021: Do not allow wildcard search on virtual type's FSH
+		if targetFSH != nil && targetFSH.Filesystem == "virtual" {
+			sendErrorResponse(w, "This virtual storage device do not allow wildcard search")
+			return
+		}
+
 		wildcard := keyword[1:]
 		matchingFiles, err := filepath.Glob(filepath.Join(rpath, wildcard))
 		if err != nil {
@@ -287,25 +309,40 @@ func system_fs_handleFileSearch(w http.ResponseWriter, r *http.Request) {
 		//Recursive keyword
 		results := []fs.FileData{}
 		var err error = nil
-		if casesensitve == "true" {
-			//Require case sensitive match
-			err = filepath.Walk(rpath, func(path string, info os.FileInfo, err error) error {
-				if strings.Contains(filepath.Base(path), keyword) {
-					//This is a matching file
-					if !fs.IsInsideHiddenFolder(path) {
-						thisVpath, _ := userinfo.RealPathToVirtualPath(path)
-						results = append(results, fs.GetFileDataFromPath(thisVpath, path, 2))
-					}
-
+		if targetFSH != nil && targetFSH.Filesystem == "virtual" {
+			//To be done: Move hardcoded vroot ID to interface for all virtual storage devices
+			if vrootID == "share" {
+				if casesensitve != "true" {
+					keyword = strings.ToLower(keyword)
 				}
-				return nil
-			})
+				err = shareEntryTable.Walk(subpath, userinfo.Username, userinfo.GetUserPermissionGroupNames(), func(fileData fs.FileData) error {
+					filename := filepath.Base(fileData.Filename)
+					if casesensitve != "true" {
+						filename = strings.ToLower(filename)
+					}
+					if strings.Contains(filename, keyword) {
+						//This is a matching file
+						if !fs.IsInsideHiddenFolder(fileData.Filepath) {
+							results = append(results, fileData)
+						}
+					}
+					return nil
+				})
+			} else {
+				log.Println("Dynamic virtual root walk is not supported yet: ", vrootID)
+			}
 		} else {
-			//Require general match
-			keywordLower := strings.ToLower(keyword)
-			err = filepath.Walk(rpath, func(path string, info os.FileInfo, err error) error {
+			if casesensitve != "true" {
+				keyword = strings.ToLower(keyword)
+			}
 
-				if strings.Contains(strings.ToLower(filepath.Base(path)), keywordLower) {
+			fmt.Println(rpath)
+			err = filepath.Walk(rpath, func(path string, info os.FileInfo, err error) error {
+				thisFilename := filepath.Base(path)
+				if casesensitve != "true" {
+					thisFilename = strings.ToLower(thisFilename)
+				}
+				if strings.Contains(thisFilename, keyword) {
 					//This is a matching file
 					if !fs.IsInsideHiddenFolder(path) {
 						thisVpath, _ := userinfo.RealPathToVirtualPath(path)
@@ -321,7 +358,6 @@ func system_fs_handleFileSearch(w http.ResponseWriter, r *http.Request) {
 			sendErrorResponse(w, err.Error())
 			return
 		}
-
 		//OK. Tidy up the results
 		js, _ := json.Marshal(results)
 		sendJSONResponse(w, string(js))
@@ -1082,14 +1118,14 @@ func system_fs_handleNewObjects(w http.ResponseWriter, r *http.Request) {
 		//Translate the path to realpath
 		rpath, err := userinfo.VirtualPathToRealPath(vsrc)
 		if err != nil {
-			sendErrorResponse(w, "Invalid path given.")
+			sendErrorResponse(w, "Invalid path given")
 			return
 		}
 
 		//Check if directory is readonly
 		accmode := userinfo.GetPathAccessPermission(vsrc)
 		if accmode == "readonly" {
-			sendErrorResponse(w, "This directory is Read Only.")
+			sendErrorResponse(w, "This directory is Read Only")
 			return
 		} else if accmode == "denied" {
 			sendErrorResponse(w, "Access Denied")
@@ -1100,7 +1136,7 @@ func system_fs_handleNewObjects(w http.ResponseWriter, r *http.Request) {
 
 		if fileType == "file" {
 			for fileExists(newfilePath) {
-				sendErrorResponse(w, "Given filename already exists.")
+				sendErrorResponse(w, "Given filename already exists")
 				return
 			}
 			ext := filepath.Ext(filename)
@@ -1139,7 +1175,7 @@ func system_fs_handleNewObjects(w http.ResponseWriter, r *http.Request) {
 
 		} else if fileType == "folder" {
 			if fileExists(newfilePath) {
-				sendErrorResponse(w, "Given folder already exists.")
+				sendErrorResponse(w, "Given folder already exists")
 				return
 			}
 			//Create the folder at target location
@@ -1519,7 +1555,7 @@ func system_fs_handleOpr(w http.ResponseWriter, r *http.Request) {
 				if fileExists(edgeCaseFilename) {
 					rsrcFile = edgeCaseFilename
 				} else {
-					sendErrorResponse(w, "Source file not exists.")
+					sendErrorResponse(w, "Source file not exists")
 					return
 				}
 
@@ -1545,7 +1581,7 @@ func system_fs_handleOpr(w http.ResponseWriter, r *http.Request) {
 				//Check if the target dir is not readonly
 				accmode := userinfo.GetPathAccessPermission(string(vsrcFile))
 				if accmode == "readonly" {
-					sendErrorResponse(w, "This directory is Read Only.")
+					sendErrorResponse(w, "This directory is Read Only")
 					return
 				} else if accmode == "denied" {
 					sendErrorResponse(w, "Access Denied")
@@ -1596,7 +1632,7 @@ func system_fs_handleOpr(w http.ResponseWriter, r *http.Request) {
 				//Check if the source file is read only.
 				accmode := userinfo.GetPathAccessPermission(string(vsrcFile))
 				if accmode == "readonly" {
-					sendErrorResponse(w, "This source file is Read Only.")
+					sendErrorResponse(w, "This source file is Read Only")
 					return
 				} else if accmode == "denied" {
 					sendErrorResponse(w, "Access Denied")
@@ -1604,7 +1640,7 @@ func system_fs_handleOpr(w http.ResponseWriter, r *http.Request) {
 				}
 
 				if rdestFile == "" {
-					sendErrorResponse(w, "Undefined dest location.")
+					sendErrorResponse(w, "Undefined dest location")
 					return
 				}
 
@@ -1657,14 +1693,14 @@ func system_fs_handleOpr(w http.ResponseWriter, r *http.Request) {
 
 				//Check if the desintation is read only.
 				if !userinfo.CanWrite(vdestFile) {
-					sendErrorResponse(w, "Access Denied.")
+					sendErrorResponse(w, "Access Denied")
 					return
 				}
 
 				if !fileExists(rdestFile) {
 					if fileExists(filepath.Dir(rdestFile)) {
 						//User pass in the whole path for the folder. Report error usecase.
-						sendErrorResponse(w, "Dest location should be an existing folder instead of the full path of the copied file.")
+						sendErrorResponse(w, "Dest location should be an existing folder instead of the full path of the copied file")
 						return
 					}
 					sendErrorResponse(w, "Dest folder not found")
@@ -1698,7 +1734,7 @@ func system_fs_handleOpr(w http.ResponseWriter, r *http.Request) {
 				}
 
 				if !userinfo.CanWrite(vsrcFile) {
-					sendErrorResponse(w, "Access Denied.")
+					sendErrorResponse(w, "Access Denied")
 					return
 				}
 
@@ -1741,7 +1777,7 @@ func system_fs_handleOpr(w http.ResponseWriter, r *http.Request) {
 						return
 					}*/
 				if !userinfo.CanWrite(vsrcFile) {
-					sendErrorResponse(w, "Access Denied.")
+					sendErrorResponse(w, "Access Denied")
 					return
 				}
 
@@ -1764,7 +1800,7 @@ func system_fs_handleOpr(w http.ResponseWriter, r *http.Request) {
 
 				//Check if the user can write to the target dest file
 				if userinfo.CanWrite(string(vdestFile)) == false {
-					sendErrorResponse(w, "Access Denied.")
+					sendErrorResponse(w, "Access Denied")
 					return
 				}
 
@@ -1785,7 +1821,7 @@ func system_fs_handleOpr(w http.ResponseWriter, r *http.Request) {
 				}
 
 			} else {
-				sendErrorResponse(w, "Unknown file opeartion given.")
+				sendErrorResponse(w, "Unknown file opeartion given")
 				return
 			}
 		}
@@ -2177,11 +2213,7 @@ func system_fs_handleList(w http.ResponseWriter, r *http.Request) {
 	//Handle some special virtual file systems / mount points
 	if VirtualRootID == "share" && subpath == "" {
 		userpgs := userinfo.GetUserPermissionGroupNames()
-		files, err := shareEntryTable.RouteShareVroot(subpath, userinfo.Username, userpgs)
-		if err != nil {
-			sendErrorResponse(w, "Error. Unable to parse path. "+err.Error())
-			return
-		}
+		files := shareEntryTable.ListRootForUser(userinfo.Username, userpgs)
 		parsedFilelist = files
 	} else {
 		//Normal file systems

+ 57 - 6
mod/share/shareEntry/shareEntry.go

@@ -3,7 +3,7 @@ package shareEntry
 import (
 	"encoding/json"
 	"errors"
-	"log"
+	"os"
 	"path/filepath"
 	"strings"
 	"sync"
@@ -261,16 +261,67 @@ func (s *ShareEntryTable) ResolveShareVrootPath(subpath string, username string,
 	return "", errors.New("Not implemented")
 }
 
-func (s *ShareEntryTable) RouteShareVroot(subpath string, username string, usergroup []string) ([]fs.FileData, error) {
+func (s *ShareEntryTable) Walk(subpath string, username string, usergroup []string, fastWalkFunction func(fs.FileData) error) error {
+	//Resolve the subpath
 	if subpath == "" {
-		return s.listRootForUser(username, usergroup), nil
+		//List root as a collections of shares
+		rootFileList := s.ListRootForUser(username, usergroup)
+		for _, fileInRoot := range rootFileList {
+			if fs.IsDir(fileInRoot.Realpath) {
+				//Walk it
+				err := filepath.Walk(fileInRoot.Realpath, func(path string, info os.FileInfo, err error) error {
+					relPath, err := filepath.Rel(fileInRoot.Realpath, path)
+					if err != nil {
+						return err
+					}
+
+					thisVpath := filepath.ToSlash(filepath.Join(fileInRoot.Filepath, relPath))
+					thisFd := fs.GetFileDataFromPath(thisVpath, path, 2)
+					err = fastWalkFunction(thisFd)
+					if err != nil {
+						return err
+					}
+					return nil
+				})
+
+				return err
+			} else {
+				//Normal files
+				err := fastWalkFunction(fileInRoot)
+				if err != nil {
+					return err
+				}
+			}
+
+		}
 	} else {
-		log.Println("Checkpoint!", subpath)
-		return []fs.FileData{}, nil
+		//List realpath of the system
+		rpath, err := s.ResolveShareVrootPath(subpath, username, usergroup)
+		if err != nil {
+			return err
+		}
+
+		vpath := "share:/" + subpath
+		err = filepath.Walk(rpath, func(path string, info os.FileInfo, err error) error {
+			relPath, err := filepath.Rel(rpath, path)
+			if err != nil {
+				return err
+			}
+			thisVpath := filepath.ToSlash(filepath.Join(vpath, relPath))
+			thisFd := fs.GetFileDataFromPath(thisVpath, rpath, 2)
+			err = fastWalkFunction(thisFd)
+			if err != nil {
+				return err
+			}
+			return nil
+		})
+
+		return err
 	}
+	return nil
 }
 
-func (s *ShareEntryTable) listRootForUser(username string, usergroup []string) []fs.FileData {
+func (s *ShareEntryTable) ListRootForUser(username string, usergroup []string) []fs.FileData {
 	//Iterate through all shares in the system to see which of the share is user accessible
 	userAccessiableShare := []*ShareOption{}
 	s.FileToUrlMap.Range(func(fp, so interface{}) bool {

+ 0 - 0
web/NotepadA/notepadA.css → web/Code Studio/CodeStudio.css


+ 1 - 1
web/NotepadA/backend/read.agi → web/Code Studio/backend/read.agi

@@ -1,5 +1,5 @@
 /*
-    File Reader for NotepadA
+    File Reader for Code Studio
     author: tobychui
 
     Require paramter: file

+ 2 - 2
web/NotepadA/backend/store.agi → web/Code Studio/backend/store.agi

@@ -1,7 +1,7 @@
 //AGI script for saving and getting data from system core database
 if (opr == "set"){
     if (typeof key !== 'undefined' && typeof value !== 'undefined'){
-        if (!writeDBItem("NotepadA",USERNAME + "/" + key, value)){
+        if (!writeDBItem("Code Studio",USERNAME + "/" + key, value)){
             sendJSONResp(JSON.stringify({
                 error: "Failed to write to database"
             }));
@@ -9,7 +9,7 @@ if (opr == "set"){
     }
 }else if (opr == "get"){
     if (typeof key !== 'undefined'){
-        var content = readDBItem("NotepadA",USERNAME + "/" + key);
+        var content = readDBItem("Code Studio",USERNAME + "/" + key);
         if (content == false){
             sendJSONResp(JSON.stringify({
                 error: "Unable to read database"

+ 1 - 1
web/NotepadA/backend/writeFile.agi → web/Code Studio/backend/writeFile.agi

@@ -1,4 +1,4 @@
-//NotepadA File writing API
+//Code Studio File writing API
 //Required paramters: filepath, content
 var success = requirelib("filelib");
 if (!success){

+ 3 - 3
web/NotepadA/embedded.html → web/Code Studio/embedded.html

@@ -32,8 +32,8 @@
                 //Start one instance launching
                 $(parent.window.document.body).find(".floatWindow").each(function(){
                     var iframeURL = $(this).find("iframe").attr('src');
-                    if (iframeURL.includes("NotepadA/index.html")){
-                        //There are already one instance of NotepadA running. Send open command to that window.
+                    if (iframeURL.includes("Code Studio/index.html")){
+                        //There are already one instance of Code Studio running. Send open command to that window.
                         openLocally = false;
                         var files = ao_module_loadInputFiles();
                         if (files.length > 0){
@@ -53,7 +53,7 @@
                     ao_module_setResizableWindowSize();
                     //Update the iframe url as well
                     hash = window.location.hash;
-                    $(parent.getFloatWindowByID(ao_module_windowID)).find("iframe").attr('src',"NotepadA/index.html" + hash);
+                    $(parent.getFloatWindowByID(ao_module_windowID)).find("iframe").attr('src',"Code Studio/index.html" + hash);
                     //Move the hash value as well
                     window.location.href = "index.html" + hash;
                 }

+ 1 - 1
web/NotepadA/home.html → web/Code Studio/home.html

@@ -1,4 +1,4 @@
 <div style="color:white; padding:22px;">
-    <h1>NotepadA Editor Ready!</h1>
+    <h1>Code Studio Editor Ready!</h1>
     <p>To start editing, open a file from the dropdown menu or select open folder > click on any files listed in the Directory Listing.</p>
 </div>

+ 0 - 0
web/NotepadA/img/banner.png → web/Code Studio/img/banner.png


+ 0 - 0
web/NotepadA/img/banner.psd → web/Code Studio/img/banner.psd


BIN
web/Code Studio/img/desktop_icon.png


+ 0 - 0
web/NotepadA/img/desktop_icon.psd → web/Code Studio/img/desktop_icon.psd


+ 0 - 0
web/NotepadA/img/module_icon.png → web/Code Studio/img/module_icon.png


+ 0 - 0
web/NotepadA/img/module_icon.psd → web/Code Studio/img/module_icon.psd


+ 25 - 24
web/NotepadA/index.html → web/Code Studio/index.html

@@ -4,10 +4,10 @@
         <meta name="apple-mobile-web-app-capable" content="yes" />
         <meta name="viewport" content="user-scalable=no, width=device-width, initial-scale=1, maximum-scale=1"/>
         <meta charset="UTF-8">
-        <title>NotepadA</title>
+        <title>Code Studio</title>
         <meta name="theme-color" content="#4b75ff">
         <link rel="stylesheet" href="../script/semantic/semantic.min.css">
-        <link rel="stylesheet" href="notepadA.css">
+        <link rel="stylesheet" href="CodeStudio.css">
         <script src="../script/jquery.min.js"></script>
         <script src="../script/semantic/semantic.min.js"></script>
         <script src="../script/ao_module.js"></script>
@@ -91,7 +91,7 @@
             <div class="rightpadded">
                 <div class="item" id="filepath"><i class="code file icon"></i> user:/</div>
                 <div class="item" id="fileExt">N/A</div>
-                <div class="item">NotepadA</div>
+                <div class="item">Code Studio</div>
             </div>
         </div>
          <!-- Context Menu -->
@@ -103,7 +103,7 @@
         <div id="licenseInfo" class="ui modal">
             <i class="close icon"></i>
             <div class="header">
-                NotepadA License
+                Code Studio License
             </div>
             <div class="content">
               <div class="description">
@@ -128,10 +128,10 @@
         <div id="aboutnpa" class="ui basic modal">
             <div class="ui icon header">
                 <i class="code icon"></i>
-                NotepadA Code Editor
+                Code Studio Editor
             </div>
             <div class="content" align="center">
-                <p>The default code editor for ArOZ Online 1.0<br>Developed by Toby Chui</p>
+                <p>The default code editor for ArozOS 1.0<br>Developed by Toby Chui</p>
             </div>
             <div class="actions">
                 <div class="ui green ok inverted button">
@@ -598,7 +598,7 @@
                     <div class="item" onclick="window.open('https://microsoft.github.io/monaco-editor/'); hideContextMenu();">About Monaco Editor</div>
                     <div class="divider"></div>
                     <div class="item" onclick="showLicense();">License</div>
-                    <div class="item" onclick="showAboutNotepadA();">About NotepadA</div>
+                    <div class="item" onclick="showAboutCodeStudio();">About Code Studio</div>
                     `);
                 }
 
@@ -615,7 +615,7 @@
                 hideContextMenu();
             }
 
-            function showAboutNotepadA(){
+            function showAboutCodeStudio(){
                 $("#aboutnpa").modal("show");
                 hideContextMenu();
             }
@@ -741,7 +741,7 @@
                 }
 
                 //Get the file
-                ao_module_agirun("NotepadA/backend/read.agi",{
+                ao_module_agirun("Code Studio/backend/read.agi",{
                     file: filepath
                 }, function(filecontent){
                     //Get the target Opening Editor
@@ -788,9 +788,9 @@
 
                         //Update title if nonVDI or update floatWindow title if under fdi
                     if (ao_module_virtualDesktop){
-                        ao_module_setWindowTitle("NotepadA - " + filename);
+                        ao_module_setWindowTitle("Code Studio - " + filename);
                     }else{
-                        document.title = "NotepadA - " + filename;
+                        document.title = "Code Studio - " + filename;
                     }
 
 
@@ -1176,9 +1176,9 @@
 
                 //Update title if nonVDI or update floatWindow title if under fdi
                 if (ao_module_virtualDesktop){
-                    ao_module_setWindowTitle("NotepadA - " + tabInfo.filename);
+                    ao_module_setWindowTitle("Code Studio - " + tabInfo.filename);
                 }else{
-                    document.title = "NotepadA - " + tabInfo.filename
+                    document.title = "Code Studio - " + tabInfo.filename
                 }
 
                 //Focus this tab
@@ -1338,10 +1338,10 @@
 
             function showColorPicker(){
                 ao_module_newfw({
-                    url: "NotepadA/tools/colorpicker/index.html",
+                    url: "Code Studio/tools/colorpicker/index.html",
                     width: 365,
                     height: 200,
-                    appicon: "NotepadA/img/module_icon.png",
+                    appicon: "Code Studio/img/module_icon.png",
                     title: "Color Picker"
                 });
             }
@@ -1350,6 +1350,7 @@
                 var currentFileData = getCurrentFocusedFileData();
                 if (currentFileData == null){
                     //No opened files
+                    alert("No editing file found!")
                     return;
                 }
 
@@ -1357,10 +1358,10 @@
                 var fd = encodeURIComponent(JSON.stringify([currentFileData]));
 
                 ao_module_newfw({
-                    url: "NotepadA/tools/mobipreview/index.html#" + fd,
+                    url: "Code Studio/tools/mobipreview/index.html#" + fd,
                     width: 350,
                     height: 625,
-                    appicon: "NotepadA/img/module_icon.png",
+                    appicon: "Code Studio/img/module_icon.png",
                     title: "Responsive Design Viewer"
                 });
             }
@@ -1389,21 +1390,21 @@
                 //Encode the filedata
                 var fd = encodeURIComponent(JSON.stringify([currentFileData]));
                 ao_module_newfw({
-                    url: "NotepadA/index.html#" + fd,
+                    url: "Code Studio/index.html#" + fd,
                     width: 890,
                     height: 625,
-                    appicon: "NotepadA/img/module_icon.png",
-                    title: "NotepadA"
+                    appicon: "Code Studio/img/module_icon.png",
+                    title: "Code Studio"
                 });
             }
 
             function newEditor(){
                 ao_module_newfw({
-                    url: "NotepadA/index.html",
+                    url: "Code Studio/index.html",
                     width: 890,
                     height: 625,
-                    appicon: "NotepadA/img/module_icon.png",
-                    title: "NotepadA"
+                    appicon: "Code Studio/img/module_icon.png",
+                    title: "Code Studio"
                 });
             }
 
@@ -1463,7 +1464,7 @@
             //Call to the system core with AJGI script
             function syscall(scriptName, data, callback=undefined){
                 $.ajax({
-                    url: "../system/ajgi/interface?script=NotepadA/backend/" + scriptName + ".agi",
+                    url: "../system/ajgi/interface?script=Code Studio/backend/" + scriptName + ".agi",
                     method: "POST",
                     data: data,
                     success: function(data){

+ 8 - 8
web/NotepadA/init.agi → web/Code Studio/init.agi

@@ -5,20 +5,20 @@
 */
 
 //Create database for this module
-newDBTableIfNotExists("NotepadA")
+newDBTableIfNotExists("Code Studio")
 
 //Define the launchInfo for the module
 var moduleLaunchInfo = {
-    Name: "NotepadA",
-	Desc: "The best code editor on ArOZ Online",
+    Name: "Code Studio",
+	Desc: "The best code editor on ArozOS",
 	Group: "Office",
-	IconPath: "NotepadA/img/module_icon.png",
-	Version: "1.2",
-	StartDir: "NotepadA/index.html",
+	IconPath: "Code Studio/img/module_icon.png",
+	Version: "1.3",
+	StartDir: "Code Studio/index.html",
 	SupportFW: true,
-	LaunchFWDir: "NotepadA/index.html",
+	LaunchFWDir: "Code Studio/index.html",
 	SupportEmb: true,
-	LaunchEmb: "NotepadA/embedded.html",
+	LaunchEmb: "Code Studio/embedded.html",
 	InitFWSize: [1024, 768],
 	InitEmbSize: [360, 200],
 	SupportedExt: [".bat",".coffee",".cpp",".cs",".csp",".csv",".fs",".dockerfile",".go",".html",".ini",".java",".js",".agi", ".lua",".mips",".md", ".sql",".txt",".php",".py",".ts",".xml",".yaml"]

+ 0 - 0
web/NotepadA/script/monaco/LICENSE → web/Code Studio/script/monaco/LICENSE


+ 0 - 0
web/NotepadA/script/monaco/README.md → web/Code Studio/script/monaco/README.md


+ 0 - 0
web/NotepadA/script/monaco/ThirdPartyNotices.txt → web/Code Studio/script/monaco/ThirdPartyNotices.txt


+ 0 - 0
web/NotepadA/script/monaco/bundleInfo.json → web/Code Studio/script/monaco/bundleInfo.json


+ 0 - 0
web/NotepadA/script/monaco/monaco.d.ts → web/Code Studio/script/monaco/monaco.d.ts


+ 0 - 0
web/NotepadA/script/monaco/nls.metadata.json → web/Code Studio/script/monaco/nls.metadata.json


+ 0 - 0
web/NotepadA/script/monaco/vs/base/browser/ui/codiconLabel/codicon/codicon.ttf → web/Code Studio/script/monaco/vs/base/browser/ui/codiconLabel/codicon/codicon.ttf


+ 0 - 0
web/NotepadA/script/monaco/vs/base/worker/workerMain.js → web/Code Studio/script/monaco/vs/base/worker/workerMain.js


+ 0 - 0
web/NotepadA/script/monaco/vs/base/worker/workerMain.js.map → web/Code Studio/script/monaco/vs/base/worker/workerMain.js.map


+ 0 - 0
web/NotepadA/script/monaco/vs/basic-languages/_.contribution.js → web/Code Studio/script/monaco/vs/basic-languages/_.contribution.js


+ 0 - 0
web/NotepadA/script/monaco/vs/basic-languages/abap/abap.contribution.js → web/Code Studio/script/monaco/vs/basic-languages/abap/abap.contribution.js


+ 0 - 0
web/NotepadA/script/monaco/vs/basic-languages/abap/abap.js → web/Code Studio/script/monaco/vs/basic-languages/abap/abap.js


+ 0 - 0
web/NotepadA/script/monaco/vs/basic-languages/apex/apex.contribution.js → web/Code Studio/script/monaco/vs/basic-languages/apex/apex.contribution.js


+ 0 - 0
web/NotepadA/script/monaco/vs/basic-languages/apex/apex.js → web/Code Studio/script/monaco/vs/basic-languages/apex/apex.js


+ 0 - 0
web/NotepadA/script/monaco/vs/basic-languages/azcli/azcli.contribution.js → web/Code Studio/script/monaco/vs/basic-languages/azcli/azcli.contribution.js


+ 0 - 0
web/NotepadA/script/monaco/vs/basic-languages/azcli/azcli.js → web/Code Studio/script/monaco/vs/basic-languages/azcli/azcli.js


+ 0 - 0
web/NotepadA/script/monaco/vs/basic-languages/bat/bat.contribution.js → web/Code Studio/script/monaco/vs/basic-languages/bat/bat.contribution.js


+ 0 - 0
web/NotepadA/script/monaco/vs/basic-languages/bat/bat.js → web/Code Studio/script/monaco/vs/basic-languages/bat/bat.js


+ 0 - 0
web/NotepadA/script/monaco/vs/basic-languages/cameligo/cameligo.contribution.js → web/Code Studio/script/monaco/vs/basic-languages/cameligo/cameligo.contribution.js


+ 0 - 0
web/NotepadA/script/monaco/vs/basic-languages/cameligo/cameligo.js → web/Code Studio/script/monaco/vs/basic-languages/cameligo/cameligo.js


+ 0 - 0
web/NotepadA/script/monaco/vs/basic-languages/clojure/clojure.contribution.js → web/Code Studio/script/monaco/vs/basic-languages/clojure/clojure.contribution.js


+ 0 - 0
web/NotepadA/script/monaco/vs/basic-languages/clojure/clojure.js → web/Code Studio/script/monaco/vs/basic-languages/clojure/clojure.js


+ 0 - 0
web/NotepadA/script/monaco/vs/basic-languages/coffee/coffee.contribution.js → web/Code Studio/script/monaco/vs/basic-languages/coffee/coffee.contribution.js


+ 0 - 0
web/NotepadA/script/monaco/vs/basic-languages/coffee/coffee.js → web/Code Studio/script/monaco/vs/basic-languages/coffee/coffee.js


+ 0 - 0
web/NotepadA/script/monaco/vs/basic-languages/cpp/cpp.contribution.js → web/Code Studio/script/monaco/vs/basic-languages/cpp/cpp.contribution.js


+ 0 - 0
web/NotepadA/script/monaco/vs/basic-languages/cpp/cpp.js → web/Code Studio/script/monaco/vs/basic-languages/cpp/cpp.js


+ 0 - 0
web/NotepadA/script/monaco/vs/basic-languages/csharp/csharp.contribution.js → web/Code Studio/script/monaco/vs/basic-languages/csharp/csharp.contribution.js


+ 0 - 0
web/NotepadA/script/monaco/vs/basic-languages/csharp/csharp.js → web/Code Studio/script/monaco/vs/basic-languages/csharp/csharp.js


+ 0 - 0
web/NotepadA/script/monaco/vs/basic-languages/csp/csp.contribution.js → web/Code Studio/script/monaco/vs/basic-languages/csp/csp.contribution.js


+ 0 - 0
web/NotepadA/script/monaco/vs/basic-languages/csp/csp.js → web/Code Studio/script/monaco/vs/basic-languages/csp/csp.js


+ 0 - 0
web/NotepadA/script/monaco/vs/basic-languages/css/css.contribution.js → web/Code Studio/script/monaco/vs/basic-languages/css/css.contribution.js


+ 0 - 0
web/NotepadA/script/monaco/vs/basic-languages/css/css.js → web/Code Studio/script/monaco/vs/basic-languages/css/css.js


+ 0 - 0
web/NotepadA/script/monaco/vs/basic-languages/dockerfile/dockerfile.contribution.js → web/Code Studio/script/monaco/vs/basic-languages/dockerfile/dockerfile.contribution.js


+ 0 - 0
web/NotepadA/script/monaco/vs/basic-languages/dockerfile/dockerfile.js → web/Code Studio/script/monaco/vs/basic-languages/dockerfile/dockerfile.js


+ 0 - 0
web/NotepadA/script/monaco/vs/basic-languages/fsharp/fsharp.contribution.js → web/Code Studio/script/monaco/vs/basic-languages/fsharp/fsharp.contribution.js


+ 0 - 0
web/NotepadA/script/monaco/vs/basic-languages/fsharp/fsharp.js → web/Code Studio/script/monaco/vs/basic-languages/fsharp/fsharp.js


+ 0 - 0
web/NotepadA/script/monaco/vs/basic-languages/go/go.contribution.js → web/Code Studio/script/monaco/vs/basic-languages/go/go.contribution.js


+ 0 - 0
web/NotepadA/script/monaco/vs/basic-languages/go/go.js → web/Code Studio/script/monaco/vs/basic-languages/go/go.js


+ 0 - 0
web/NotepadA/script/monaco/vs/basic-languages/graphql/graphql.contribution.js → web/Code Studio/script/monaco/vs/basic-languages/graphql/graphql.contribution.js


+ 0 - 0
web/NotepadA/script/monaco/vs/basic-languages/graphql/graphql.js → web/Code Studio/script/monaco/vs/basic-languages/graphql/graphql.js


+ 0 - 0
web/NotepadA/script/monaco/vs/basic-languages/handlebars/handlebars.contribution.js → web/Code Studio/script/monaco/vs/basic-languages/handlebars/handlebars.contribution.js


+ 0 - 0
web/NotepadA/script/monaco/vs/basic-languages/handlebars/handlebars.js → web/Code Studio/script/monaco/vs/basic-languages/handlebars/handlebars.js


+ 0 - 0
web/NotepadA/script/monaco/vs/basic-languages/html/html.contribution.js → web/Code Studio/script/monaco/vs/basic-languages/html/html.contribution.js


+ 0 - 0
web/NotepadA/script/monaco/vs/basic-languages/html/html.js → web/Code Studio/script/monaco/vs/basic-languages/html/html.js


+ 0 - 0
web/NotepadA/script/monaco/vs/basic-languages/ini/ini.contribution.js → web/Code Studio/script/monaco/vs/basic-languages/ini/ini.contribution.js


+ 0 - 0
web/NotepadA/script/monaco/vs/basic-languages/ini/ini.js → web/Code Studio/script/monaco/vs/basic-languages/ini/ini.js


+ 0 - 0
web/NotepadA/script/monaco/vs/basic-languages/java/java.contribution.js → web/Code Studio/script/monaco/vs/basic-languages/java/java.contribution.js


+ 0 - 0
web/NotepadA/script/monaco/vs/basic-languages/java/java.js → web/Code Studio/script/monaco/vs/basic-languages/java/java.js


+ 0 - 0
web/NotepadA/script/monaco/vs/basic-languages/javascript/javascript.contribution.js → web/Code Studio/script/monaco/vs/basic-languages/javascript/javascript.contribution.js


+ 0 - 0
web/NotepadA/script/monaco/vs/basic-languages/javascript/javascript.js → web/Code Studio/script/monaco/vs/basic-languages/javascript/javascript.js


+ 0 - 0
web/NotepadA/script/monaco/vs/basic-languages/kotlin/kotlin.contribution.js → web/Code Studio/script/monaco/vs/basic-languages/kotlin/kotlin.contribution.js


+ 0 - 0
web/NotepadA/script/monaco/vs/basic-languages/kotlin/kotlin.js → web/Code Studio/script/monaco/vs/basic-languages/kotlin/kotlin.js


+ 0 - 0
web/NotepadA/script/monaco/vs/basic-languages/less/less.contribution.js → web/Code Studio/script/monaco/vs/basic-languages/less/less.contribution.js


+ 0 - 0
web/NotepadA/script/monaco/vs/basic-languages/less/less.js → web/Code Studio/script/monaco/vs/basic-languages/less/less.js


+ 0 - 0
web/NotepadA/script/monaco/vs/basic-languages/lua/lua.contribution.js → web/Code Studio/script/monaco/vs/basic-languages/lua/lua.contribution.js


+ 0 - 0
web/NotepadA/script/monaco/vs/basic-languages/lua/lua.js → web/Code Studio/script/monaco/vs/basic-languages/lua/lua.js


+ 0 - 0
web/NotepadA/script/monaco/vs/basic-languages/markdown/markdown.contribution.js → web/Code Studio/script/monaco/vs/basic-languages/markdown/markdown.contribution.js


+ 0 - 0
web/NotepadA/script/monaco/vs/basic-languages/markdown/markdown.js → web/Code Studio/script/monaco/vs/basic-languages/markdown/markdown.js


+ 0 - 0
web/NotepadA/script/monaco/vs/basic-languages/mips/mips.contribution.js → web/Code Studio/script/monaco/vs/basic-languages/mips/mips.contribution.js


+ 0 - 0
web/NotepadA/script/monaco/vs/basic-languages/mips/mips.js → web/Code Studio/script/monaco/vs/basic-languages/mips/mips.js


+ 0 - 0
web/NotepadA/script/monaco/vs/basic-languages/msdax/msdax.contribution.js → web/Code Studio/script/monaco/vs/basic-languages/msdax/msdax.contribution.js


+ 0 - 0
web/NotepadA/script/monaco/vs/basic-languages/msdax/msdax.js → web/Code Studio/script/monaco/vs/basic-languages/msdax/msdax.js


+ 0 - 0
web/NotepadA/script/monaco/vs/basic-languages/mysql/mysql.contribution.js → web/Code Studio/script/monaco/vs/basic-languages/mysql/mysql.contribution.js


+ 0 - 0
web/NotepadA/script/monaco/vs/basic-languages/mysql/mysql.js → web/Code Studio/script/monaco/vs/basic-languages/mysql/mysql.js


+ 0 - 0
web/NotepadA/script/monaco/vs/basic-languages/objective-c/objective-c.contribution.js → web/Code Studio/script/monaco/vs/basic-languages/objective-c/objective-c.contribution.js


+ 0 - 0
web/NotepadA/script/monaco/vs/basic-languages/objective-c/objective-c.js → web/Code Studio/script/monaco/vs/basic-languages/objective-c/objective-c.js


+ 0 - 0
web/NotepadA/script/monaco/vs/basic-languages/pascal/pascal.contribution.js → web/Code Studio/script/monaco/vs/basic-languages/pascal/pascal.contribution.js


+ 0 - 0
web/NotepadA/script/monaco/vs/basic-languages/pascal/pascal.js → web/Code Studio/script/monaco/vs/basic-languages/pascal/pascal.js


+ 0 - 0
web/NotepadA/script/monaco/vs/basic-languages/pascaligo/pascaligo.contribution.js → web/Code Studio/script/monaco/vs/basic-languages/pascaligo/pascaligo.contribution.js


+ 0 - 0
web/NotepadA/script/monaco/vs/basic-languages/pascaligo/pascaligo.js → web/Code Studio/script/monaco/vs/basic-languages/pascaligo/pascaligo.js


+ 0 - 0
web/NotepadA/script/monaco/vs/basic-languages/perl/perl.contribution.js → web/Code Studio/script/monaco/vs/basic-languages/perl/perl.contribution.js


+ 0 - 0
web/NotepadA/script/monaco/vs/basic-languages/perl/perl.js → web/Code Studio/script/monaco/vs/basic-languages/perl/perl.js


+ 0 - 0
web/NotepadA/script/monaco/vs/basic-languages/pgsql/pgsql.contribution.js → web/Code Studio/script/monaco/vs/basic-languages/pgsql/pgsql.contribution.js


+ 0 - 0
web/NotepadA/script/monaco/vs/basic-languages/pgsql/pgsql.js → web/Code Studio/script/monaco/vs/basic-languages/pgsql/pgsql.js


+ 0 - 0
web/NotepadA/script/monaco/vs/basic-languages/php/php.contribution.js → web/Code Studio/script/monaco/vs/basic-languages/php/php.contribution.js


+ 0 - 0
web/NotepadA/script/monaco/vs/basic-languages/php/php.js → web/Code Studio/script/monaco/vs/basic-languages/php/php.js


+ 0 - 0
web/NotepadA/script/monaco/vs/basic-languages/postiats/postiats.contribution.js → web/Code Studio/script/monaco/vs/basic-languages/postiats/postiats.contribution.js


+ 0 - 0
web/NotepadA/script/monaco/vs/basic-languages/postiats/postiats.js → web/Code Studio/script/monaco/vs/basic-languages/postiats/postiats.js


+ 0 - 0
web/NotepadA/script/monaco/vs/basic-languages/powerquery/powerquery.contribution.js → web/Code Studio/script/monaco/vs/basic-languages/powerquery/powerquery.contribution.js


+ 0 - 0
web/NotepadA/script/monaco/vs/basic-languages/powerquery/powerquery.js → web/Code Studio/script/monaco/vs/basic-languages/powerquery/powerquery.js


+ 0 - 0
web/NotepadA/script/monaco/vs/basic-languages/powershell/powershell.contribution.js → web/Code Studio/script/monaco/vs/basic-languages/powershell/powershell.contribution.js


+ 0 - 0
web/NotepadA/script/monaco/vs/basic-languages/powershell/powershell.js → web/Code Studio/script/monaco/vs/basic-languages/powershell/powershell.js


+ 0 - 0
web/NotepadA/script/monaco/vs/basic-languages/pug/pug.contribution.js → web/Code Studio/script/monaco/vs/basic-languages/pug/pug.contribution.js


+ 0 - 0
web/NotepadA/script/monaco/vs/basic-languages/pug/pug.js → web/Code Studio/script/monaco/vs/basic-languages/pug/pug.js


Деякі файли не було показано, через те що забагато файлів було змінено