As a new Emacs user, this video has been one of the most helpful in setting up my config. Thanks for making this!
@Wadedd7723 күн бұрын
I've been searching for how to get a status bar for the past 2 hours and you came to light. This is the only video that actually helped rather than other videos where they just expect you to know everything from the start.
@謙虛的學仔Ай бұрын
hving searched for videos of emacs for a month. finally a gem :D
@bwestbroАй бұрын
Thank you so much for the kind words!
@binux5592Ай бұрын
Dude, you've gotten a lot older since the first episod.
@bwestbroАй бұрын
unsafe code will do that to you
@sridhard7204Ай бұрын
Spectro software plz. Explain sir.c20 cage structure. Carbon doped with Boran and Nitrogen.
@amidamarurookieАй бұрын
I'd like to see more projects with OCaml
@sridhard72042 ай бұрын
Very useful video.❤
@sridhard72042 ай бұрын
Superb.
@kRySt4LGaMeR3 ай бұрын
congratulations! have you thought about having version parity with dwm, instead of having your own?
@bwestbro3 ай бұрын
Thank you! Do you mean calling this rwm 6.5? I think I considered that, but I'm going to start making changes that will move it away from dwm and make the separate version numbering more relevant.
@AlexNon-hh4pk3 ай бұрын
white theme, do you want to kill my eyes?
@bwestbro3 ай бұрын
Yes
@juddhorton91573 ай бұрын
Congrats! Huge accomplishment, looking forward to the future!
@TheTmLev3 ай бұрын
Congratulations on your hard work!
@null11q3 ай бұрын
Great work, man. I use dwm. I am also learning rust. I have something to tinker with now.😅
@johanngambolputty53513 ай бұрын
null pointer exception because of emojis... ☠
@Beryesa.3 ай бұрын
Nice but is it effective to make new things for a dying platform and not Wayland 🤔
@bwestbro3 ай бұрын
I was waiting for the Wayland comments. I'm happy with X and plan to stick with it for the foreseeable future, so it doesn't look dying to me. I'm glad other people are working on Wayland, though, because I'll switch eventually if it becomes compelling enough.
@Beryesa.3 ай бұрын
@@bwestbro sure, I was just wondering
@bwestbro3 ай бұрын
@@Beryesa.for sure, it’s a fair question! Honestly, I should probably look more into Wayland, but I’ve been so happy with dwm that I haven’t gotten too curious
@iiisaac13123 ай бұрын
Writing DWM for wayland would be way beyond DWM's original scope. A wayland WM also has to be a compositor and needs to dedicate itself to a compositor library, like wl-r🤢🤮ts or aquamarine (or write your own, which could easily be 10 times bigger than the WM itself).
@bwestbro3 ай бұрын
Someone on GitHub brought my attention to the dwl project, which is basically a port of dwm to Wayland. From the quick peek I took at the source code, the names are similar but the implementation is completely different, as I kind of expected without knowing that much about Wayland. It also depends on wlroots (is that the same as wl-r?), so it sounds like you're exactly right.
@cnicolas3 ай бұрын
Does it have a stacking mode?
@bwestbro3 ай бұрын
The main mode in dwm (and thus rwm) is a master and stack tiling layout. Is that what you mean by stacking?
@cnicolas3 ай бұрын
@@bwestbro I just don't like tiling windows, that's all
@bwestbro3 ай бұрын
@@cnicolas ah fair enough! I think dwm possibly calls stacking “floating,” in which case it does have that mode, but it’s probably not as good as a dedicated floating/stacking WM.
@romanstingler4353 ай бұрын
I cloned your repo, I want to take a look at the commit history, I am interested in the paths you took. I am super impressed, even though I wouldn't probably use it as my daily driver, I prefer hyprland dwindle layout. But I love that more and more rust WM are being created. Niri, LeftWm, WayCooler, ....
@bwestbro3 ай бұрын
Thanks for the kind words! This was mostly a learning experience to figure out how dwm really works, but I think I'm going to try to make this my daily driver now.
@scubather3 ай бұрын
he is back
@ArthurSchoppenweghauer3 ай бұрын
What I also hate about Python is that you can't produce a compiled executable. Shipping applications written in Python is a nightmare, because everything has to be installed in a docker image and this has to then be shipped to an environment with a container runtime. Not only does this feel clunky because the base image is already bloated to shit, but it also requires the whole container ecosystem (runtime, container registry, image scanners, etc.). The complexification of deploying python apps this way leads to entire jobs (laughingly called "DevOps") whose sole purpose it is to manage the added complexity owed to everyone and their mother writing their applications in interpreted languages.
@ArthurSchoppenweghauer3 ай бұрын
Most of your suffering probably could've been avoided by reading the documentation for whatever the type of result is. Also writing the results to disk once and then loading them each time (instead of re-running the computation with each attempt) would probably save you some time. Yes, Python is slow but this can be mitigated by calling faster libraries like numpy. But then you enter the world of depdenceny management and will also suffer, just differently.
@bwestbro3 ай бұрын
Good points here. The example isn't totally perfect in this case since it wasn't really `some_expensive_computation` but rather retrieving data from a server. And I was trying to write the results to disk as JSON to avoid repeating that! I'd usually agree that reading the docs would have helped me, but in this case, the result object actually had a `json` method but it threw an exception. So this is basically a bug in the library I was using, I guess. As a slight tangent, I don't generally find Python documentation very readable or helpful, but I've probably been spoiled by Rust and Go docs and prefer their formats too. For me, though, it's always useful to have the types of arguments and return values, and most Python documentation does not have those. To your other comment, I totally feel the pain of Python packaging. We use conda at work, which works well in some cases but feels like such a mess in many other ways. I'm always glad to get back to my personal Rust projects where I can compile everything to a single, portable binary.
@VorpalForceField3 ай бұрын
Cool Deal .. Thank You for sharing .. Cheers :)
@BorisNVM3 ай бұрын
good, thanks ! p.s.: i've been having some problems with the signature key. But this was still helpful
@mendelovitch3 ай бұрын
Good stuff.
@ZachPalmer-OleMiss4 ай бұрын
Can confirm, I do know this 0:50
@bwestbro4 ай бұрын
The legend himself
@TravisAIT4 ай бұрын
This was useful. Thanks.
@nightly_builds4 ай бұрын
up up up!
@Breakcaft5 ай бұрын
After C-c C-m I get en error: No TeX trees available; configure "TeX-tree-roots" I am running on Windows 11 Home. The Mode is LaTeX/P. I did move the file i am working on into a specific folder, did that change anything? I am so lost XD
@bwestbro5 ай бұрын
I have run into this before and in setups that previously worked. I'm not sure what causes it, but I think it can be fixed by following the suggestion there of "configure TeX-tree-roots". That should point to the directories/folders containing your LaTeX installation. The value of my TeX-tree-roots on Linux is ("/usr/share/texmf-dist/" "/usr/share/texmf/"), and I think I could set that by running something like (setq TeX-tree-roots '("/usr/share/texmf-dist/" "/usr/share/texmf/")). The entries in your list will definitely be different on Windows unless you're running this inside of WSL.
@Breakcaft5 ай бұрын
@@bwestbro Thanks for your answer, as I am quite the beginner I didn't understand at first that -- Emacs +auctex wasn't an absolute list of installs i needed. I havent had TexLive installed yet (thought LaTeX came with auctex) so yeah, there is that. :D works now that emacs actually has some place to execute what I wrote.
@deedend5 ай бұрын
This video is really what I was looking for... Thank you very much!!
@kRySt4LGaMeR5 ай бұрын
did you finish rwm already? :D
@bwestbro5 ай бұрын
Sadly no... I need to get back to it!
@amidamarurookie5 ай бұрын
Interesting! Weight-watcher 😂
@vedantmatanhelia10166 ай бұрын
ur mod t was also set to 2 commands btw
@bwestbro6 ай бұрын
Yes.
@francescojamesfanti64306 ай бұрын
i cannot achieve to activate the type inlay hints right at side of var or method to be inferred. like when declaring an implicit i32 id like to shee the ghost hint of that i32
@bwestbro5 ай бұрын
Hmm, I'm not sure why that would be. I actually don't like the inlay hints, but they seem to work by default with eglot for me.
@hspadim6 ай бұрын
One thing that may improve the performance of your project is using “&” instead of “&&” and “|” instead of “||”. This way you are saying that you want to evaluate the whole thing and doesn’t want to short circuit it. It sometimes helped me improve the performance on some benchmarks
@hspadim6 ай бұрын
Another thing that helped me before: use some plain linear algebra before writing the algorithm. I’ve got under 1 microsecond on linear regressions given that I know that the x axis is symmetrical. There are some basis/algorithms that let you compute on compile time and let you get a nice matrix and a nice system of equations
@bwestbro5 ай бұрын
Interesting suggestions! I thought short-circuiting would usually speed things up, but as always, I guess you have to measure to be sure!
@lycomedes6 ай бұрын
We use the same stuff! Arch, dwm, Brave, and Emacs!
@ItsukiMoroshima7 ай бұрын
Thanks for your video, the 'tree-sitter-install-language-grammar' is not mentioned in the documentation for either rust-mode or emacs-tree-sitter!
@bwestbro7 ай бұрын
Glad it was helpful! To defend these packages a little bit, `treesit-install-language-grammar` is part of the built-in tree-sitter support in Emacs 29 and later (in the treesit package), and it works with the also built-in rust-ts-mode. emacs-tree-sitter and rust-mode are earlier, third-party versions of these packages, so it's not really surprising that they don't mention this new function.
@batuurdor7 ай бұрын
Hey brent, how did you get your company work out-of-box with python ?
@bwestbro7 ай бұрын
I'm not totally sure what you mean, but a few things you will need are: 1. company-mode active in python-mode (or python-ts-mode if you're following the video; I usually check this with C-h m) 2. A company backend that provides completions (I think eglot or lsp-mode should provide this automatically) 3. An LSP server for eglot or lsp-mode to connect to For point 1, it looks like I add a hook to python-ts-mode to activate company-mode at 5:28, and I install pylsp around 4:37 for point 3. Like I said, I think either of the main LSP packages will handle point 2 for you, but I used to have to mess with the company-backends variable before LSP servers were common. I hope this helps!
@SerobZeromintis7 ай бұрын
I'm trying to migrate from using Overleaf to write LaTeX documents to Emacs' AUCTeX, but I'm very accustomed to typing "\begin{" "enter" "writing the name of the environment" then getting the "}" + "\end{<environment>}" completion and my cursor being placed inside the environment. Do I need to manually write all of this behavior with yassnipets?
@bwestbro7 ай бұрын
You can definitely use snippets (and I do for some environments like figures), but auctex also has key bindings for inserting environments (C-c C-e) and macros (C-c C-m) and probably other stuff that even I don't know about! A general tip here is the C-h b binding, which opens a help page on the available bindings in a given mode. If you do that in a LaTeX buffer and search for latex-mode, you should find pretty much everything auctex can do. Some of my other favorites are C-c . for LaTeX-mark-environment, C-c ] for closing an environment if I did open it manually, and C-u C-c C-e, which lets you change the surrounding environment to something else. There is also a TeX language server that I've used for completions called texlab. I generally prefer just using the auctex bindings, but you could check that out too if you already use eglot or lsp-mode in Emacs.
@scubather7 ай бұрын
aaaaaaaand the name is... TheBindgen ps lfstream!
@SerobZeromintis9 ай бұрын
damn I didn't know you had to actually get the name given by xprop for the st terminal lol thank you
@avgeekboy9 ай бұрын
Great video, thanks! When I try C-c C-c, and use default, it states my tex engine is nil. I can compile and view in terminal fine. Any ideas? I tried a fresh install of Auctex and texlive-science on a Debian machine.
@bwestbro9 ай бұрын
Ah man, that sounds so familiar, but I can't find myself debugging it in any of my LaTeX videos. Are you sure you're in auctex mode (usually LaTeX/P in the modeline)? I think I ran into this when I was having trouble getting auctex to load and kept ending up in a different TeX mode. This link came up when I was searching, maybe it will be relevant if you're using an older version of Emacs: emacs.stackexchange.com/a/80390/26944
@avgeekboy9 ай бұрын
@bwestbro Thanks for the reply mate. I've been looking all afternoon and I think that is the correct answer. I'm running Emacs 27.1 (Debian 11 old-stable as 12 update broke my R Studio last year and I'm scared to commit to the upgrade again!) and Auctex 14.0.2. I really need to bite the bullet and update Debian which will give me Emacs 28-something. I'm keen to use Emacs to write my masters thesis rather than convert from MD. Cheers from New Zealand 🇳🇿 😀
@bwestbro9 ай бұрын
No problem, I totally understand! I used to be a big proponent of updating all the time, but I've had a couple of painful breaking updates recently and am now much more reluctant! You should also be able to build Emacs from source without too much trouble if you wanted to go that route instead of updating Debian. I do that with the Emacs master branch, but they also have the more stable 29 branch if you wanted to be a little more stable. I know a lot of people don't like snaps, but I installed Emacs 29.1 as a snap on one of my ubuntu VMs instead of the older version available in the main repos. Maybe that would work on Debian too. Good luck on your thesis!
@jorgegomezabrante87809 ай бұрын
Hi, great vid! Can you post the config as a gist?
@bwestbro9 ай бұрын
Great suggestion, I had been delaying creating a repo. Here it is! github.com/ntBre/.emacs
@jorgegomezabrante87809 ай бұрын
Thanks! How do you use clippy with your setup? @@bwestbro
@bwestbro9 ай бұрын
Ah, that's a good question. For the most part I just run `cargo clippy` using the compilation interface. However, if you mean run it continuously with eglot, I'm pretty sure that's what sent me back to lsp-mode last time because I could not figure out how to tell eglot to use clippy for the cargo watch command (at least that's what lsp-mode calls it: lsp-rust-analyzer-cargo-watch-command). I tried using this code (add-hook 'rust-mode-hook (defun my/eglot-rust-hook () (setq-local eglot-workspace-configuration '(:rust-analyzer (:checkOnSave (:command "clippy"))))))) and I think another variant that I can't find in my commit history, but I don't think it ever actually worked. Most of the eglot configuration seems to be geared toward dir-local variables or something, but I definitely prefer to have a central configuration in my init file. If I switch my main config to eglot, I plan to read through the info page to see if I've missed anything or if it has been updated since eglot got included in Emacs itself. If that's what you were asking about and you find an answer, please let me know!
@kRySt4LGaMeR9 ай бұрын
it's never too much bindgen::
@DJjambon00110 ай бұрын
lol legend
@ianmortimer89110 ай бұрын
Thanks for the useful videos. Good to see "real world" usage and often forgotten tips and tricks 👍
@sad0n310 ай бұрын
Great Content. I was thinking about writing my own window manager. This will help me a lot.
@yurisich10 ай бұрын
If those are rack servers or asic miners screeching in the background you've earned my deepest respect. Legend.
@Firstorder6610 ай бұрын
2:19 what did you do here? Not sure what hotkey you used
@bwestbro10 ай бұрын
Do you mean when I deleted all of the custom stuff? You can barely see it with the default color scheme, but I set the mark with C-space and then just went down to the end of the file with C-n and hit backspace. That's nearly the limit of my default Emacs binding knowledge besides navigating within a line!
@Firstorder6610 ай бұрын
@@bwestbroactuzlly right before the deletion, you wrote some code, hit some keys, and then that red text appeared
@bwestbro10 ай бұрын
Ah, I think that was just C-x C-e for `eval-last-sexp`. When you change some settings, Emacs saves them into your config file (or custom-file as I set a bit later). So that text won't be inserted every time you evaluate the last s-expression.
@Firstorder6610 ай бұрын
@@bwestbro thanks. To be honest emacs is just way to much of a pain. Its not practical at all. For latex i found obsidian which you can set up in 5 minutes. Setting it up for coding is even worse. Emacs is cool but i just dont have the hours to put into learning it
@bwestbro10 ай бұрын
It's not for everyone. It took me three tries before I liked it enough to keep using it. If you ever feel overly constrained by your current tools and want the flexibility Emacs gives you (forces upon you?) give it another try! And if/when you are still interested, check out some of my more recent videos. Emacs 28 and 29 especially have made getting started much easier than I show in this video.
@jazzyBit10 ай бұрын
love it, but I have only one problem with eglot. when I activate it and try to write a function like "printf" it shows me a window or mini eldoc buffer. Is there a way to disable it?
@bwestbro10 ай бұрын
I looked back through my commit history to when I tried out eglot in my main config (September 2022!) and I set eldoc-echo-area-use-multiline-p to 3 in a :custom block of my (use-package eglot). I think if you set that to nil, it will display only a single line and should stay in the echo area. I also set eldoc-echo-area-display-truncation-message to nil so that it would stop trying to tell me how to see the full docs. Hopefully that helps!