mirror of
https://github.com/hyprwm/hyprland-wiki.git
synced 2024-11-22 12:45:59 +01:00
added better code faq
This commit is contained in:
parent
d02a734bad
commit
e6e305aafe
2 changed files with 71 additions and 9 deletions
64
pages/Contributing and Debugging/PR-Guidelines.md
Normal file
64
pages/Contributing and Debugging/PR-Guidelines.md
Normal file
|
@ -0,0 +1,64 @@
|
||||||
|
## PR Requirements
|
||||||
|
|
||||||
|
- Clean, not hacky code
|
||||||
|
- Described changes and *why* they were there
|
||||||
|
- Following the style (see below)
|
||||||
|
|
||||||
|
## Code Style
|
||||||
|
|
||||||
|
Hyprland's code style:
|
||||||
|
```cpp
|
||||||
|
void myFunction(int arg) {
|
||||||
|
|
||||||
|
if (shortStatement)
|
||||||
|
doSomething();
|
||||||
|
else
|
||||||
|
doNotDoIt();
|
||||||
|
|
||||||
|
switch (value) {
|
||||||
|
case 1:
|
||||||
|
{ // braces optional
|
||||||
|
blahBlah();
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
default:
|
||||||
|
Debug::log(ERR, "error");
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
const auto CONSTVALUE = arg == 1 ? 2 : 3;
|
||||||
|
|
||||||
|
void* pLocalPointer = nullptr;
|
||||||
|
|
||||||
|
int localValue = 0;
|
||||||
|
|
||||||
|
if (MY && VERY && LONG && IF && STATEMENT && OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO && SUPERLONG && STATEMENT) {
|
||||||
|
; // blank
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
class myClass {
|
||||||
|
public:
|
||||||
|
int m_iMyLocalInt = 0;
|
||||||
|
// ^ member
|
||||||
|
// ^ int
|
||||||
|
// ^ camel name
|
||||||
|
|
||||||
|
void classFunction(int, int, bool defaultBool = false);
|
||||||
|
// ^ most arg names omitted
|
||||||
|
// ^ arg name mandatory here because C++
|
||||||
|
|
||||||
|
// Note: omitting args only for functions with clear / few args. For long functions:
|
||||||
|
void classFunctionLong(int a, int b, bool sure, bool red, bool enabled, void* item, const CColor& color = {0});
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
## Some code FAQ
|
||||||
|
|
||||||
|
> Why is the config variable getting so weird?
|
||||||
|
|
||||||
|
Every variable from the config needs to be found in a hashmap. To limit the amount of hashmap searches, getting a config option looks like this:
|
||||||
|
```cpp
|
||||||
|
static auto *const PFOLLOWMOUSE = &g_pConfigManager->getConfigValuePtr("input:follow_mouse")->intValue;
|
||||||
|
```
|
||||||
|
Since the hashmap *cannot* be mutated during runtime, this pointer will always be valid, and will not require hashmap lookups every single time it's read.
|
|
@ -1,12 +1,6 @@
|
||||||
# Contributing guidelines
|
# Contributing guidelines
|
||||||
|
|
||||||
For PRs, make sure that you:
|
PR, code styling and code FAQs are [here](./PR-Guidelines)
|
||||||
|
|
||||||
- follow the code style
|
|
||||||
- don't write "hacky" code
|
|
||||||
- check and test the code
|
|
||||||
- are contributing something useful
|
|
||||||
- explain your PR as best as you can
|
|
||||||
|
|
||||||
For issues, please see
|
For issues, please see
|
||||||
[the guidelines](https://github.com/hyprwm/Hyprland/blob/main/docs/ISSUE_GUIDELINES.md)
|
[the guidelines](https://github.com/hyprwm/Hyprland/blob/main/docs/ISSUE_GUIDELINES.md)
|
||||||
|
@ -17,8 +11,6 @@ For issues, please see
|
||||||
|
|
||||||
`xcb` stuff, check with your local package provider.
|
`xcb` stuff, check with your local package provider.
|
||||||
|
|
||||||
`wlroots-git` - always have the latest wlroots.
|
|
||||||
|
|
||||||
`wayland` - of course.
|
`wayland` - of course.
|
||||||
|
|
||||||
*Arch*:
|
*Arch*:
|
||||||
|
@ -50,6 +42,12 @@ Also, before the first build (or after some updates, possibly)
|
||||||
need to `make config`.)
|
need to `make config`.)
|
||||||
{{< /hint >}}
|
{{< /hint >}}
|
||||||
|
|
||||||
|
{{< hint type=warning >}}
|
||||||
|
`make config` will overwrite wlroots headers in `/usr/`,
|
||||||
|
meaning you'll be unable to build any other wlroots compositor
|
||||||
|
without a wlroots reinstall.
|
||||||
|
{{< /hint >}}
|
||||||
|
|
||||||
# Running
|
# Running
|
||||||
|
|
||||||
when running Hyprland in Debug mode, the config is
|
when running Hyprland in Debug mode, the config is
|
||||||
|
|
Loading…
Reference in a new issue