Skip to content

Instantly share code, notes, and snippets.

View osa1's full-sized avatar

Ömer Sinan Ağacan osa1

View GitHub Profile
diff --git a/autoload/fugitive.vim b/autoload/fugitive.vim
index 94cf8d0..4e58385 100644
--- a/autoload/fugitive.vim
+++ b/autoload/fugitive.vim
@@ -2147,7 +2147,7 @@ function! fugitive#BufReadCmd(...) abort
if b:fugitive_display_format
call s:ReplaceCmd([dir, 'cat-file', b:fugitive_type, rev])
else
- call s:ReplaceCmd([dir, '-c', 'diff.noprefix=false', 'show', '--no-color', '-m', '--first-parent', '--pretty=format:tree%x20%T%nparent%x20%P%nauthor%x20%an%x20<%ae>%x20%ad%ncommitter%x20%cn%x20<%ce>%x20%cd%nencoding%x20%e%n%n%s%n%n%b', rev])
+ call s:ReplaceCmd([dir, '-c', 'diff.noprefix=false', 'show', '--no-color', '-m', '--first-parent', '--pretty=format:commit%x20%H%ntree%x20%T%nparent%x20%P%nauthor%x20%an%x20<%ae>%x20%ad%ncommitter%x20%cn%x20<%ce>%x20%cd%nencoding%x20%e%n%n%s%n%n%b', rev])
@osa1
osa1 / zshrc
Created January 21, 2021 09:55
chpwd() {
local new_dir=${$(pwd)#${HOME}/}
if [[ $new_dir == $HOME ]]; then
echo "Returning to home"
return
fi
local shell_file_path=$HOME/shells/$new_dir.zsh
if [[ -e $shell_file_path ]]; then
@osa1
osa1 / config.toml
Last active February 7, 2021 10:14
# Sample TOML configuration file for building Rust.
#
# To configure rustbuild, copy this file to the directory from which you will be
# running the build, and name it config.toml.
#
# All options are commented out by default in this file, and they're commented
# out with their default values. The build system by default looks for
# `config.toml` in the current directory of a build for build configuration, but
# a custom configuration file can also be specified with `--config` to the build
# system.
use goblin::Object;
fn main() {
let file = std::env::args().nth(1).unwrap();
let contents = std::fs::read(file).unwrap();
let obj = Object::parse(&contents).unwrap();
if let Object::Elf(elf) = obj {
for sym in elf.dynsyms.iter() {
// clang -Wall main.c -o main -DNONBLOCK
#include <errno.h>
#include <fcntl.h>
#include <poll.h>
#include <stdbool.h>
#include <stdint.h>
#include <stdio.h>
#include <string.h>
#include <termios.h>
/// Set `stdin` to non-blocking mode.
pub fn set_stdin_nonblocking() {
use nix::fcntl::{fcntl, FcntlArg, OFlag};
let mut stdin_flags: OFlag = match fcntl(libc::STDIN_FILENO, FcntlArg::F_GETFL) {
Err(err) => {
panic!("Unable to read stdin flags: {:?}", err);
}
Ok(flags) => match OFlag::from_bits(flags) {
@osa1
osa1 / ssa.rs
Last active June 1, 2020 07:36
#![allow(dead_code)]
// This module implements the SSA construction algorithm described in
//
// Simple and Efficient Construction of Static Single Assignment Form
// (https://pp.info.uni-karlsruhe.de/uploads/publikationen/braun13cc.pdf)
use cranelift_entity::{entity_impl, PrimaryMap, SecondaryMap};
use std::collections::HashMap;
" Make CTRL-T work correctly with goto-definition.
setlocal tagfunc=CocTagFunc
nmap <leader>gre <Plug>(coc-references)
nmap <leader>grn <Plug>(coc-rename)
" nmap <leader>ge <Plug>(coc-diagnostic-info)
nmap <leader>ge :<C-u>CocList diagnostics<CR>
nmap <leader>gp <Plug>(coc-diagnostic-prev)
nmap <leader>gn <Plug>(coc-diagnostic-next)
@osa1
osa1 / gc.c
Created January 19, 2020 13:58
// $ gcc -fPIC -shared -o libgc.so gc.c
// $ LD_PRELOAD=$(pwd)/libgc.so ghci
#include <stdlib.h>
void GarbageCollect() {
exit(1);
}
void hs_init() {

Spawning async tasks in GTK apps

I'm trying to spawn async tasks in a GTK app using GLib's [MainContext::spawn][1]. Questions:

  • I'm not sure how to get MainContext of a GTK [Application][2]. I think Application should already have a MainContext, and I'm not sure if creating a new one is safe.

  • In a task spawned by MainContext::spawn I'm not sure which async I/O function/traits I can use. I think I can use AsyncRead/AsyncWrite from futures but that's not documented.

  • In a task I'm not sure how to spawn more tasks. Should I pass a copy of MainContext to my tasks and use it to spawn more tasks via the spawn method?