Repository files navigation

Internals

This project is all about internals. You know, those things you find yourself cutting and pasting between project, yet never quite keeping each version updated. Sure, it's great to be able to pull code from someplace that solves a problem, and once it works, really, there is no reason to update it unless something new is needed or a bug is found.

Ah yes, but a bug will be found. And you'll fix it in one project, but neglect to fix it in another. And that can be painful.

So what do you do? You create a KitchenSink project. You now have a cool assembly that is separate and contains all of your common bits of code. Now you have two problems. Bugs and keeping all your projects on the latest depedencies. The solution? Well, let's use ilmerge and make it all one assembly. Now you that THREE problems.

Let's recap. That previous paragraph is a world of pain and misery.

Solution?

Create a GitHub repository, call it Internals, and put all your common code in there. Now, put it all in a non-specific namespace like, well, Internals.

Now you can add this repository as a submodule to your other projects. The code is in one place, it's all internal (nothing in the Internals repository is marked public, nothing!). And the world is a happier place.

How do I use it?

I thought you would never ask. First, you need to add the submodule to your project. Since we built everything at the root of the Internals project, well, this makes it easy. Just type the following command in your project folder:

 git submodule add https://github.com/phatboyg/Internals.git src/YourProjectFolder/Internals

This will add a directory to the YourProjectFolder called Internals and pull the Internals repository into that folder.

To see the files in your project, it seems that you can easily add wildcards to a Visual Studio C# Project (.csproj) if you know what you're doing. Because it's never easy with Visual Studio. So open your project file in your favorite text editor (you didn't think you could do this from the IDE did you?).

Locate the section where all of your other item groups are located, and cram the following chunk of code into it:

 <ItemGroup>
<Compile Include="Internals\**\*.cs" />
</ItemGroup>

Once you save, you'll be prompted to reload the project in Visual Studio (do a Save All before you start hacking .csproj files, or you will lose changes).

What about updates?

If you want to fetch the latest changes to the Internals project, just go into the Internals folder (so that Git will recognize that you want to operate on the submodule) and type:

 git pull

If you're lazy like me, you can also take a shortcut:

 git submodule foreach git pull

This second command will pull the latest for all of your submodules, so if you have more than one make sure that is what you wanted.

Is that it?

Yes, that's it. Feel free to reference it in your project, feel free to clone and submit pull requests.

Enjoy!

Chris Patterson @phatboyg

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Add copy buttons to all
 blocks\n(function() {\n function addCopyButtons() {\n document.querySelectorAll('pre code').forEach(function(codeBlock) {\n if (codeBlock.parentElement.hasAttribute('data-copy-added')) return;\n codeBlock.parentElement.setAttribute('data-copy-added', 'true');\n \n var btn = document.createElement('button');\n btn.textContent = 'Copy';\n btn.style.cssText = 'position:absolute;top:4px;right:4px;padding:2px 8px;font-size:11px;background:#4ecdc4;border:none;border-radius:4px;color:#1a1a2e;cursor:pointer;opacity:0.7;transition:opacity 0.2s;';\n btn.onmouseover = function() { this.style.opacity = '1'; };\n btn.onmouseout = function() { this.style.opacity = '0.7'; };\n btn.onclick = function() {\n navigator.clipboard.writeText(codeBlock.textContent).then(function() {\n btn.textContent = 'Copied!';\n setTimeout(function() { btn.textContent = 'Copy'; }, 1500);\n });\n };\n codeBlock.parentElement.style.position = 'relative';\n codeBlock.parentElement.appendChild(btn);\n });\n }\n \n addCopyButtons();\n \n // Re-run on dynamic content\n var observer = new MutationObserver(addCopyButtons);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Add Copy Buttons to Code Blocks");
}
} catch(__e) { console.warn('[Userscript:Add Copy Buttons to Code Blocks]', __e); }
})();
(function(){
try {
var __m = "github.com";
var __re = new RegExp('^' + "github\\.com" + '
Skip to content

Repository files navigation

Internals

This project is all about internals. You know, those things you find yourself cutting and pasting between project, yet never quite keeping each version updated. Sure, it's great to be able to pull code from someplace that solves a problem, and once it works, really, there is no reason to update it unless something new is needed or a bug is found.

Ah yes, but a bug will be found. And you'll fix it in one project, but neglect to fix it in another. And that can be painful.

So what do you do? You create a KitchenSink project. You now have a cool assembly that is separate and contains all of your common bits of code. Now you have two problems. Bugs and keeping all your projects on the latest depedencies. The solution? Well, let's use ilmerge and make it all one assembly. Now you that THREE problems.

Let's recap. That previous paragraph is a world of pain and misery.

Solution?

Create a GitHub repository, call it Internals, and put all your common code in there. Now, put it all in a non-specific namespace like, well, Internals.

Now you can add this repository as a submodule to your other projects. The code is in one place, it's all internal (nothing in the Internals repository is marked public, nothing!). And the world is a happier place.

How do I use it?

I thought you would never ask. First, you need to add the submodule to your project. Since we built everything at the root of the Internals project, well, this makes it easy. Just type the following command in your project folder:

 git submodule add https://github.com/phatboyg/Internals.git src/YourProjectFolder/Internals

This will add a directory to the YourProjectFolder called Internals and pull the Internals repository into that folder.

To see the files in your project, it seems that you can easily add wildcards to a Visual Studio C# Project (.csproj) if you know what you're doing. Because it's never easy with Visual Studio. So open your project file in your favorite text editor (you didn't think you could do this from the IDE did you?).

Locate the section where all of your other item groups are located, and cram the following chunk of code into it:

 <ItemGroup>
<Compile Include="Internals\**\*.cs" />
</ItemGroup>

Once you save, you'll be prompted to reload the project in Visual Studio (do a Save All before you start hacking .csproj files, or you will lose changes).

What about updates?

If you want to fetch the latest changes to the Internals project, just go into the Internals folder (so that Git will recognize that you want to operate on the submodule) and type:

 git pull

If you're lazy like me, you can also take a shortcut:

 git submodule foreach git pull

This second command will pull the latest for all of your submodules, so if you have more than one make sure that is what you wanted.

Is that it?

Yes, that's it. Feel free to reference it in your project, feel free to clone and submit pull requests.

Enjoy!

Chris Patterson @phatboyg

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Force GitHub README to respect dark mode\n(function() {\n var style = document.createElement('style');\n style.textContent = '\n .markdown-body {\n color-scheme: dark light;\n }\n .markdown-body pre { background: #161b22 !important; }\n .markdown-body code { background: rgba(110, 118, 129, 0.4) !important; }\n .markdown-body table th, .markdown-body table td { border-color: #30363d !important; }\n .markdown-body img { background: #0d1117; }\n .markdown-body blockquote { border-left-color: #8b949e; }\n .markdown-body hr { border-color: #30363d; }\n ';\n document.head.appendChild(style);\n})();", "GitHub Dark Mode README Fix"); } } catch(__e) { console.warn('[Userscript:GitHub Dark Mode README Fix]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Repository files navigation

Internals

This project is all about internals. You know, those things you find yourself cutting and pasting between project, yet never quite keeping each version updated. Sure, it's great to be able to pull code from someplace that solves a problem, and once it works, really, there is no reason to update it unless something new is needed or a bug is found.

Ah yes, but a bug will be found. And you'll fix it in one project, but neglect to fix it in another. And that can be painful.

So what do you do? You create a KitchenSink project. You now have a cool assembly that is separate and contains all of your common bits of code. Now you have two problems. Bugs and keeping all your projects on the latest depedencies. The solution? Well, let's use ilmerge and make it all one assembly. Now you that THREE problems.

Let's recap. That previous paragraph is a world of pain and misery.

Solution?

Create a GitHub repository, call it Internals, and put all your common code in there. Now, put it all in a non-specific namespace like, well, Internals.

Now you can add this repository as a submodule to your other projects. The code is in one place, it's all internal (nothing in the Internals repository is marked public, nothing!). And the world is a happier place.

How do I use it?

I thought you would never ask. First, you need to add the submodule to your project. Since we built everything at the root of the Internals project, well, this makes it easy. Just type the following command in your project folder:

 git submodule add https://github.com/phatboyg/Internals.git src/YourProjectFolder/Internals

This will add a directory to the YourProjectFolder called Internals and pull the Internals repository into that folder.

To see the files in your project, it seems that you can easily add wildcards to a Visual Studio C# Project (.csproj) if you know what you're doing. Because it's never easy with Visual Studio. So open your project file in your favorite text editor (you didn't think you could do this from the IDE did you?).

Locate the section where all of your other item groups are located, and cram the following chunk of code into it:

 <ItemGroup>
<Compile Include="Internals\**\*.cs" />
</ItemGroup>

Once you save, you'll be prompted to reload the project in Visual Studio (do a Save All before you start hacking .csproj files, or you will lose changes).

What about updates?

If you want to fetch the latest changes to the Internals project, just go into the Internals folder (so that Git will recognize that you want to operate on the submodule) and type:

 git pull

If you're lazy like me, you can also take a shortcut:

 git submodule foreach git pull

This second command will pull the latest for all of your submodules, so if you have more than one make sure that is what you wanted.

Is that it?

Yes, that's it. Feel free to reference it in your project, feel free to clone and submit pull requests.

Enjoy!

Chris Patterson @phatboyg

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Highlight search terms from Google/DuckDuckGo/Bing referrer\n(function() {\n var ref = document.referrer;\n var terms = [];\n \n if (ref.includes('google.com') || ref.includes('duckduckgo.com') || ref.includes('bing.com')) {\n var url = new URL(ref);\n var q = url.searchParams.get('q') || url.searchParams.get('p');\n if (q) {\n terms = q.split(/\\s+/).filter(function(t) { return t.length > 2; });\n }\n }\n \n if (terms.length === 0) return;\n \n var style = document.createElement('style');\n style.textContent = '.userscript-highlight { background: #fbbf24; color: #1a1a2e; padding: 1px 3px; border-radius: 2px; }';\n document.head.appendChild(style);\n \n function highlight(node) {\n if (node.nodeType === 3) { // text node\n var text = node.textContent;\n var found = false;\n terms.forEach(function(term) {\n var regex = new RegExp('(' + term.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\') + ')', 'gi');\n if (regex.test(text)) {\n found = true;\n var frag = document.createDocumentFragment();\n var parts = text.split(regex);\n parts.forEach(function(part, i) {\n if (i % 2 === 0) {\n frag.appendChild(document.createTextNode(part));\n } else {\n var span = document.createElement('span');\n span.className = 'userscript-highlight';\n span.textContent = part;\n frag.appendChild(span);\n }\n });\n node.parentNode.replaceChild(frag, node);\n }\n });\n } else if (node.nodeType === 1 && node.childNodes) { // element\n var skipTags = ['SCRIPT', 'STYLE', 'NOSCRIPT', 'TEXTAREA', 'INPUT', 'SELECT'];\n if (!skipTags.includes(node.tagName)) {\n Array.from(node.childNodes).forEach(highlight);\n }\n }\n }\n \n highlight(document.body);\n \n // Re-highlight on dynamic content\n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1 || node.nodeType === 3) highlight(node);\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Highlight Search Terms"); } } catch(__e) { console.warn('[Userscript:Highlight Search Terms]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Repository files navigation

Internals

This project is all about internals. You know, those things you find yourself cutting and pasting between project, yet never quite keeping each version updated. Sure, it's great to be able to pull code from someplace that solves a problem, and once it works, really, there is no reason to update it unless something new is needed or a bug is found.

Ah yes, but a bug will be found. And you'll fix it in one project, but neglect to fix it in another. And that can be painful.

So what do you do? You create a KitchenSink project. You now have a cool assembly that is separate and contains all of your common bits of code. Now you have two problems. Bugs and keeping all your projects on the latest depedencies. The solution? Well, let's use ilmerge and make it all one assembly. Now you that THREE problems.

Let's recap. That previous paragraph is a world of pain and misery.

Solution?

Create a GitHub repository, call it Internals, and put all your common code in there. Now, put it all in a non-specific namespace like, well, Internals.

Now you can add this repository as a submodule to your other projects. The code is in one place, it's all internal (nothing in the Internals repository is marked public, nothing!). And the world is a happier place.

How do I use it?

I thought you would never ask. First, you need to add the submodule to your project. Since we built everything at the root of the Internals project, well, this makes it easy. Just type the following command in your project folder:

 git submodule add https://github.com/phatboyg/Internals.git src/YourProjectFolder/Internals

This will add a directory to the YourProjectFolder called Internals and pull the Internals repository into that folder.

To see the files in your project, it seems that you can easily add wildcards to a Visual Studio C# Project (.csproj) if you know what you're doing. Because it's never easy with Visual Studio. So open your project file in your favorite text editor (you didn't think you could do this from the IDE did you?).

Locate the section where all of your other item groups are located, and cram the following chunk of code into it:

 <ItemGroup>
<Compile Include="Internals\**\*.cs" />
</ItemGroup>

Once you save, you'll be prompted to reload the project in Visual Studio (do a Save All before you start hacking .csproj files, or you will lose changes).

What about updates?

If you want to fetch the latest changes to the Internals project, just go into the Internals folder (so that Git will recognize that you want to operate on the submodule) and type:

 git pull

If you're lazy like me, you can also take a shortcut:

 git submodule foreach git pull

This second command will pull the latest for all of your submodules, so if you have more than one make sure that is what you wanted.

Is that it?

Yes, that's it. Feel free to reference it in your project, feel free to clone and submit pull requests.

Enjoy!

Chris Patterson @phatboyg

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Strip utm_, fbclid, gclid, etc. from all links on page\n(function() {\n var trackingParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content',\n 'fbclid', 'gclid', 'dclid', 'msclkid', 'yclid',\n 'ref', 'ref_src', 'source', 'medium', 'campaign'];\n \n function cleanUrl(url) {\n try {\n var u = new URL(url, window.location.origin);\n var changed = false;\n trackingParams.forEach(function(p) {\n if (u.searchParams.has(p)) {\n u.searchParams.delete(p);\n changed = true;\n }\n });\n return changed ? u.toString() : url;\n } catch (e) {\n return url;\n }\n }\n \n function cleanLinks() {\n document.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n \n cleanLinks();\n \n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1) {\n if (node.tagName === 'A') cleanLinks();\n node.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Remove Tracking Parameters from Links"); } } catch(__e) { console.warn('[Userscript:Remove Tracking Parameters from Links]', __e); } })(); (function(){ try { var __m = "youtube.com"; var __re = new RegExp('^' + "youtube\\.com" + '
Skip to content

Repository files navigation

Internals

This project is all about internals. You know, those things you find yourself cutting and pasting between project, yet never quite keeping each version updated. Sure, it's great to be able to pull code from someplace that solves a problem, and once it works, really, there is no reason to update it unless something new is needed or a bug is found.

Ah yes, but a bug will be found. And you'll fix it in one project, but neglect to fix it in another. And that can be painful.

So what do you do? You create a KitchenSink project. You now have a cool assembly that is separate and contains all of your common bits of code. Now you have two problems. Bugs and keeping all your projects on the latest depedencies. The solution? Well, let's use ilmerge and make it all one assembly. Now you that THREE problems.

Let's recap. That previous paragraph is a world of pain and misery.

Solution?

Create a GitHub repository, call it Internals, and put all your common code in there. Now, put it all in a non-specific namespace like, well, Internals.

Now you can add this repository as a submodule to your other projects. The code is in one place, it's all internal (nothing in the Internals repository is marked public, nothing!). And the world is a happier place.

How do I use it?

I thought you would never ask. First, you need to add the submodule to your project. Since we built everything at the root of the Internals project, well, this makes it easy. Just type the following command in your project folder:

 git submodule add https://github.com/phatboyg/Internals.git src/YourProjectFolder/Internals

This will add a directory to the YourProjectFolder called Internals and pull the Internals repository into that folder.

To see the files in your project, it seems that you can easily add wildcards to a Visual Studio C# Project (.csproj) if you know what you're doing. Because it's never easy with Visual Studio. So open your project file in your favorite text editor (you didn't think you could do this from the IDE did you?).

Locate the section where all of your other item groups are located, and cram the following chunk of code into it:

 <ItemGroup>
<Compile Include="Internals\**\*.cs" />
</ItemGroup>

Once you save, you'll be prompted to reload the project in Visual Studio (do a Save All before you start hacking .csproj files, or you will lose changes).

What about updates?

If you want to fetch the latest changes to the Internals project, just go into the Internals folder (so that Git will recognize that you want to operate on the submodule) and type:

 git pull

If you're lazy like me, you can also take a shortcut:

 git submodule foreach git pull

This second command will pull the latest for all of your submodules, so if you have more than one make sure that is what you wanted.

Is that it?

Yes, that's it. Feel free to reference it in your project, feel free to clone and submit pull requests.

Enjoy!

Chris Patterson @phatboyg

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Auto-enable theater mode on YouTube\n(function() {\n function tryTheater() {\n var btn = document.querySelector('button[aria-label=\"Theater mode\"], ytd-player #player button[title=\"Theater mode\"]');\n if (btn && !btn.classList.contains('activated')) {\n btn.click();\n }\n }\n \n // Try immediately\n tryTheater();\n \n // Try after navigation (SPA)\n var lastUrl = location.href;\n setInterval(function() {\n if (location.href !== lastUrl) {\n lastUrl = location.href;\n setTimeout(tryTheater, 500);\n }\n }, 1000);\n \n // Also try on player load\n var observer = new MutationObserver(tryTheater);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "YouTube Theater Mode Default"); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Repository files navigation

Internals

This project is all about internals. You know, those things you find yourself cutting and pasting between project, yet never quite keeping each version updated. Sure, it's great to be able to pull code from someplace that solves a problem, and once it works, really, there is no reason to update it unless something new is needed or a bug is found.

Ah yes, but a bug will be found. And you'll fix it in one project, but neglect to fix it in another. And that can be painful.

So what do you do? You create a KitchenSink project. You now have a cool assembly that is separate and contains all of your common bits of code. Now you have two problems. Bugs and keeping all your projects on the latest depedencies. The solution? Well, let's use ilmerge and make it all one assembly. Now you that THREE problems.

Let's recap. That previous paragraph is a world of pain and misery.

Solution?

Create a GitHub repository, call it Internals, and put all your common code in there. Now, put it all in a non-specific namespace like, well, Internals.

Now you can add this repository as a submodule to your other projects. The code is in one place, it's all internal (nothing in the Internals repository is marked public, nothing!). And the world is a happier place.

How do I use it?

I thought you would never ask. First, you need to add the submodule to your project. Since we built everything at the root of the Internals project, well, this makes it easy. Just type the following command in your project folder:

 git submodule add https://github.com/phatboyg/Internals.git src/YourProjectFolder/Internals

This will add a directory to the YourProjectFolder called Internals and pull the Internals repository into that folder.

To see the files in your project, it seems that you can easily add wildcards to a Visual Studio C# Project (.csproj) if you know what you're doing. Because it's never easy with Visual Studio. So open your project file in your favorite text editor (you didn't think you could do this from the IDE did you?).

Locate the section where all of your other item groups are located, and cram the following chunk of code into it:

 <ItemGroup>
<Compile Include="Internals\**\*.cs" />
</ItemGroup>

Once you save, you'll be prompted to reload the project in Visual Studio (do a Save All before you start hacking .csproj files, or you will lose changes).

What about updates?

If you want to fetch the latest changes to the Internals project, just go into the Internals folder (so that Git will recognize that you want to operate on the submodule) and type:

 git pull

If you're lazy like me, you can also take a shortcut:

 git submodule foreach git pull

This second command will pull the latest for all of your submodules, so if you have more than one make sure that is what you wanted.

Is that it?

Yes, that's it. Feel free to reference it in your project, feel free to clone and submit pull requests.

Enjoy!

Chris Patterson @phatboyg

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Remove or un-stick sticky/fixed headers that block content\n(function() {\n function unstick() {\n document.querySelectorAll('header, nav, [role=\"banner\"], .header, .navbar, .sticky, .fixed-top, [style*=\"position: fixed\"], [style*=\"position:sticky\"]').forEach(function(el) {\n if (el.style.position === 'fixed' || el.style.position === 'sticky' || \n getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') {\n el.style.position = 'static';\n el.style.top = 'auto';\n el.style.zIndex = 'auto';\n }\n });\n }\n \n unstick();\n \n var observer = new MutationObserver(unstick);\n observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] });\n})();", "Kill Sticky Headers"); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Repository files navigation

Internals

This project is all about internals. You know, those things you find yourself cutting and pasting between project, yet never quite keeping each version updated. Sure, it's great to be able to pull code from someplace that solves a problem, and once it works, really, there is no reason to update it unless something new is needed or a bug is found.

Ah yes, but a bug will be found. And you'll fix it in one project, but neglect to fix it in another. And that can be painful.

So what do you do? You create a KitchenSink project. You now have a cool assembly that is separate and contains all of your common bits of code. Now you have two problems. Bugs and keeping all your projects on the latest depedencies. The solution? Well, let's use ilmerge and make it all one assembly. Now you that THREE problems.

Let's recap. That previous paragraph is a world of pain and misery.

Solution?

Create a GitHub repository, call it Internals, and put all your common code in there. Now, put it all in a non-specific namespace like, well, Internals.

Now you can add this repository as a submodule to your other projects. The code is in one place, it's all internal (nothing in the Internals repository is marked public, nothing!). And the world is a happier place.

How do I use it?

I thought you would never ask. First, you need to add the submodule to your project. Since we built everything at the root of the Internals project, well, this makes it easy. Just type the following command in your project folder:

 git submodule add https://github.com/phatboyg/Internals.git src/YourProjectFolder/Internals

This will add a directory to the YourProjectFolder called Internals and pull the Internals repository into that folder.

To see the files in your project, it seems that you can easily add wildcards to a Visual Studio C# Project (.csproj) if you know what you're doing. Because it's never easy with Visual Studio. So open your project file in your favorite text editor (you didn't think you could do this from the IDE did you?).

Locate the section where all of your other item groups are located, and cram the following chunk of code into it:

 <ItemGroup>
<Compile Include="Internals\**\*.cs" />
</ItemGroup>

Once you save, you'll be prompted to reload the project in Visual Studio (do a Save All before you start hacking .csproj files, or you will lose changes).

What about updates?

If you want to fetch the latest changes to the Internals project, just go into the Internals folder (so that Git will recognize that you want to operate on the submodule) and type:

 git pull

If you're lazy like me, you can also take a shortcut:

 git submodule foreach git pull

This second command will pull the latest for all of your submodules, so if you have more than one make sure that is what you wanted.

Is that it?

Yes, that's it. Feel free to reference it in your project, feel free to clone and submit pull requests.

Enjoy!

Chris Patterson @phatboyg

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Universal Dark Mode - works on any site\n(function() {\n var enabled = true;\n \n function applyDarkMode() {\n if (!enabled) return;\n \n // Create style element if it doesn't exist\n var style = document.getElementById('universal-dark-mode-style');\n if (!style) {\n style = document.createElement('style');\n style.id = 'universal-dark-mode-style';\n document.head.appendChild(style);\n }\n \n // Dark mode CSS - inverts colors but preserves images/video\n style.textContent = '\n /* Invert everything except media */\n html {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #1a1a2e !important;\n }\n \n /* Restore images, videos, iframes, canvas */\n img, video, iframe, canvas, svg, picture, [style*=\"background-image\"] {\n filter: invert(1) hue-rotate(180deg) !important;\n }\n \n /* Preserve specific elements that should not be inverted */\n .no-dark-mode, .no-dark-mode *,\n [data-theme=\"light\"], [data-theme=\"light\"],\n .ace_editor, .ace_editor *,\n .CodeMirror, .CodeMirror *,\n .monaco-editor, .monaco-editor *,\n .markdown-body pre, .markdown-body pre *,\n .highlight, .highlight *,\n pre code, pre code * {\n filter: none !important;\n }\n \n /* Fix common UI elements */\n .modal, .popup, .dropdown-menu, .tooltip, .popover {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #2d2d44 !important;\n border-color: #444 !important;\n }\n \n /* Scrollbars */\n ::-webkit-scrollbar { background: #1a1a2e !important; }\n ::-webkit-scrollbar-thumb { background: #444 !important; }\n ::-webkit-scrollbar-thumb:hover { background: #555 !important; }\n \n /* Selection */\n ::selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ::-moz-selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ';\n }\n \n function removeDarkMode() {\n var style = document.getElementById('universal-dark-mode-style');\n if (style) style.remove();\n }\n \n // Toggle with Alt+Shift+D\n document.addEventListener('keydown', function(e) {\n if (e.altKey && e.shiftKey && e.key === 'D') {\n e.preventDefault();\n enabled = !enabled;\n if (enabled) {\n applyDarkMode();\n console.log('[Universal Dark Mode] Enabled');\n } else {\n removeDarkMode();\n console.log('[Universal Dark Mode] Disabled');\n }\n }\n });\n \n // Apply on load\n applyDarkMode();\n \n // Re-apply on dynamic content\n var observer = new MutationObserver(function(mutations) {\n if (enabled && !document.getElementById('universal-dark-mode-style')) {\n applyDarkMode();\n }\n });\n observer.observe(document.head, { childList: true });\n \n console.log('[Universal Dark Mode] Loaded - Press Alt+Shift+D to toggle');\n})();", "Universal Dark Mode"); } } catch(__e) { console.warn('[Userscript:Universal Dark Mode]', __e); } })(); })();
Skip to content

Repository files navigation

Internals

This project is all about internals. You know, those things you find yourself cutting and pasting between project, yet never quite keeping each version updated. Sure, it's great to be able to pull code from someplace that solves a problem, and once it works, really, there is no reason to update it unless something new is needed or a bug is found.

Ah yes, but a bug will be found. And you'll fix it in one project, but neglect to fix it in another. And that can be painful.

So what do you do? You create a KitchenSink project. You now have a cool assembly that is separate and contains all of your common bits of code. Now you have two problems. Bugs and keeping all your projects on the latest depedencies. The solution? Well, let's use ilmerge and make it all one assembly. Now you that THREE problems.

Let's recap. That previous paragraph is a world of pain and misery.

Solution?

Create a GitHub repository, call it Internals, and put all your common code in there. Now, put it all in a non-specific namespace like, well, Internals.

Now you can add this repository as a submodule to your other projects. The code is in one place, it's all internal (nothing in the Internals repository is marked public, nothing!). And the world is a happier place.

How do I use it?

I thought you would never ask. First, you need to add the submodule to your project. Since we built everything at the root of the Internals project, well, this makes it easy. Just type the following command in your project folder:

 git submodule add https://github.com/phatboyg/Internals.git src/YourProjectFolder/Internals

This will add a directory to the YourProjectFolder called Internals and pull the Internals repository into that folder.

To see the files in your project, it seems that you can easily add wildcards to a Visual Studio C# Project (.csproj) if you know what you're doing. Because it's never easy with Visual Studio. So open your project file in your favorite text editor (you didn't think you could do this from the IDE did you?).

Locate the section where all of your other item groups are located, and cram the following chunk of code into it:

 <ItemGroup>
<Compile Include="Internals\**\*.cs" />
</ItemGroup>

Once you save, you'll be prompted to reload the project in Visual Studio (do a Save All before you start hacking .csproj files, or you will lose changes).

What about updates?

If you want to fetch the latest changes to the Internals project, just go into the Internals folder (so that Git will recognize that you want to operate on the submodule) and type:

 git pull

If you're lazy like me, you can also take a shortcut:

 git submodule foreach git pull

This second command will pull the latest for all of your submodules, so if you have more than one make sure that is what you wanted.

Is that it?

Yes, that's it. Feel free to reference it in your project, feel free to clone and submit pull requests.

Enjoy!

Chris Patterson @phatboyg

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages